@camera.ui/browser 0.0.86 → 0.0.88

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 (32) hide show
  1. package/dist/bundle.js +1 -1
  2. package/dist/types/packages/client/browser/src/client.d.ts +3 -1
  3. package/dist/types/packages/client/browser/src/proxy/cameraDevice.d.ts +1 -2
  4. package/dist/types/packages/client/browser/src/proxy/coreManager.d.ts +14 -0
  5. package/dist/types/packages/client/browser/src/proxy/index.d.ts +1 -0
  6. package/dist/types/packages/client/browser/src/streaming/go2rts-session.d.ts +0 -1
  7. package/dist/types/server/src/api/database/index.d.ts +3 -1
  8. package/dist/types/server/src/api/database/types.d.ts +12 -0
  9. package/dist/types/server/src/api/schemas/config.schema.d.ts +0 -8
  10. package/dist/types/server/src/api/schemas/system.schema.d.ts +9 -0
  11. package/dist/types/server/src/api/schemas/users.schema.d.ts +34 -34
  12. package/dist/types/server/src/api/services/system.service.d.ts +7 -0
  13. package/dist/types/server/src/api/types/index.d.ts +4 -0
  14. package/dist/types/server/src/camera/controller.d.ts +0 -3
  15. package/dist/types/server/src/camera/device.d.ts +0 -1
  16. package/dist/types/server/src/camera/index.d.ts +0 -2
  17. package/dist/types/server/src/camera/streaming/peer-connection.d.ts +2 -1
  18. package/dist/types/server/src/camera/streaming/webrtc-connection.d.ts +1 -2
  19. package/dist/types/server/src/camera/streaming/werift-session.d.ts +1 -0
  20. package/dist/types/server/src/camera/types.d.ts +1 -0
  21. package/dist/types/server/src/nats/index.d.ts +4 -1
  22. package/dist/types/server/src/nats/proxy/cameraDevice.d.ts +0 -3
  23. package/dist/types/server/src/nats/proxy/coreManager.d.ts +14 -0
  24. package/dist/types/server/src/nats/types.d.ts +25 -6
  25. package/dist/types/server/src/polyglot/node/plugins/pluginApi.d.ts +3 -0
  26. package/dist/types/server/src/polyglot/node/plugins/proxy/cameraDevice.d.ts +0 -3
  27. package/dist/types/server/src/polyglot/node/plugins/proxy/coreManager.d.ts +40 -0
  28. package/dist/types/server/src/services/config/index.d.ts +0 -2
  29. package/dist/types/server/src/services/config/types.d.ts +0 -1
  30. package/dist/types/server/src/utils/network.d.ts +12 -0
  31. package/dist/types/shared/types/index.d.ts +1 -0
  32. package/package.json +3 -3
@@ -0,0 +1,14 @@
1
+ import type { IceServer } from '../../services/config/types.js';
2
+ import type { MessageQueue } from '../messageQueue.js';
3
+ import type { CoreManagerProxyMethods, ProxyMessageStructure } from '../types.js';
4
+ export declare class CoreManagerProxy implements CoreManagerProxyMethods {
5
+ private configService;
6
+ private pluginsService;
7
+ private systemService;
8
+ private messageQueue;
9
+ constructor(messageQueue: MessageQueue);
10
+ getFFmpegPath(): Promise<string>;
11
+ getServerAddresses(): Promise<string[]>;
12
+ getIceServers(): Promise<IceServer[]>;
13
+ requestHandler(message: ProxyMessageStructure): Promise<void | ProxyMessageStructure>;
14
+ }
@@ -1,4 +1,4 @@
1
- import type { Camera, VideoStreamingMode } from '../api/database/types.js';
1
+ import type { Camera, DBSystem, VideoStreamingMode } from '../api/database/types.js';
2
2
  import type { CameraDevice } from '../camera/device.js';
3
3
  import type { CameraConfig, CameraConfigInputSettings, CameraDelegates, Container, PrebufferState, SetValues, StateValues } from '../camera/types.js';
4
4
  import type { AuthConfig } from '../decoder/types.js';
@@ -21,8 +21,8 @@ export interface ProxyMessageStructure {
21
21
  targetName?: string;
22
22
  pluginId: string;
23
23
  type: 'request' | 'reply';
24
- proxy: 'device' | 'camera' | 'plugin';
25
- client: 'cameraFn' | 'pluginFn' | 'deviceFn' | 'storageFn' | keyof CameraDelegates;
24
+ proxy: 'device' | 'camera' | 'plugin' | 'core';
25
+ client: 'cameraFn' | 'pluginFn' | 'deviceFn' | 'storageFn' | 'coreFn' | keyof CameraDelegates;
26
26
  fn: string;
27
27
  args: any[];
28
28
  timeout: number;
@@ -53,8 +53,6 @@ export interface RefreshedStates {
53
53
  export interface CameraDeviceProxyMethods {
54
54
  connect(): void;
55
55
  disconnect(): void;
56
- getFfmpegPath(): string;
57
- getIceServers(): IceServer[];
58
56
  updateState<T extends keyof SetValues>(stateName: T, eventData: SetValues[T]): void;
59
57
  updatePrebufferState(sourceId: string, container: Container, state: PrebufferState): Promise<void>;
60
58
  refreshStates(): RefreshedStates;
@@ -89,7 +87,7 @@ export interface DeviceManagerProxyMethods {
89
87
  }
90
88
  export interface DeviceManagerListenerMessagePayload {
91
89
  type: keyof DeviceManagerProxyEventCallbacks;
92
- data: DeviceManagerProxyEvents['cameraSelected'] | DeviceManagerProxyEvents['cameraDeselected'];
90
+ data: DeviceManagerProxyEvents[keyof DeviceManagerProxyEvents];
93
91
  }
94
92
  export interface DeviceManagerProxyEvents {
95
93
  cameraSelected: {
@@ -109,6 +107,27 @@ export interface DeviceManagerProxyGenericEvent<K extends keyof DeviceManagerPro
109
107
  type: K;
110
108
  data: DeviceManagerProxyEvents[K];
111
109
  }
110
+ export interface CoreManagerProxyMethods {
111
+ getFFmpegPath(): Promise<string>;
112
+ getServerAddresses(): Promise<string[]>;
113
+ getIceServers(): Promise<IceServer[]>;
114
+ }
115
+ export interface CoreManagerListenerMessagePayload {
116
+ type: keyof CoreManagerProxyEventCallbacks;
117
+ data: CoreManagerProxyEvents[keyof CoreManagerProxyEvents];
118
+ }
119
+ export interface CoreManagerProxyEvents {
120
+ systemUpdated: {
121
+ system: DBSystem;
122
+ };
123
+ }
124
+ export interface CoreManagerProxyEventCallbacks {
125
+ systemUpdated: (system: DBSystem) => void;
126
+ }
127
+ export interface CoreManagerProxyGenericEvent<K extends keyof CoreManagerProxyEvents> {
128
+ type: K;
129
+ data: CoreManagerProxyEvents[K];
130
+ }
112
131
  export interface PluginMap {
113
132
  base: BasePlugin;
114
133
  motionDetection: MotionDetectionPlugin;
@@ -4,6 +4,7 @@ import { StorageController } from './storageController.js';
4
4
  import type { AuthConfig } from '../../../decoder/types.js';
5
5
  import type { PluginInfo } from '../../../plugins/types.js';
6
6
  import type { PluginLogger } from './pluginLogger.js';
7
+ import { type CoreManager } from './proxy/coreManager.js';
7
8
  import type { DeviceManager } from './proxy/deviceManager.js';
8
9
  export declare interface PluginAPI {
9
10
  on(event: 'finishLaunching', listener: () => void): this;
@@ -15,6 +16,7 @@ export declare interface PluginAPI {
15
16
  removeListener(event: 'finishLaunching', listener: () => void): this;
16
17
  removeListener(event: 'shutdown', listener: () => void): this;
17
18
  removeAllListeners(event?: string): this;
19
+ readonly coreManager: CoreManager;
18
20
  readonly deviceManager: DeviceManager;
19
21
  readonly storageController: StorageController;
20
22
  readonly configService: PluginConfigService;
@@ -22,6 +24,7 @@ export declare interface PluginAPI {
22
24
  readonly configFile: string;
23
25
  }
24
26
  export declare class API extends EventEmitter implements PluginAPI {
27
+ readonly coreManager: CoreManager;
25
28
  readonly deviceManager: DeviceManager;
26
29
  readonly storageController: StorageController;
27
30
  readonly configService: PluginConfigService;
@@ -8,7 +8,6 @@ import type { CameraConfigInputSettings, CameraDelegates, CameraSource, SetValue
8
8
  import type { AuthConfig, VideoFrame as VideoFrameImp } from '../../../../decoder/types.js';
9
9
  import type { CameraDeviceProxyMethods } from '../../../../nats/types.js';
10
10
  import type { PluginInfo } from '../../../../plugins/types.js';
11
- import type { IceServer } from '../../../../services/config/types.js';
12
11
  import type { MethodKeys, MethodType } from '../../../../types.js';
13
12
  import type { API } from '../pluginApi.js';
14
13
  import type { PluginLogger } from '../pluginLogger.js';
@@ -50,8 +49,6 @@ export declare class CameraDeviceProxy extends CameraDevice {
50
49
  disconnect(): Promise<void>;
51
50
  getFrames(prebufferDuration?: number): AsyncIterableIterator<VideoFrame>;
52
51
  getMotionFrames(): AsyncIterableIterator<MotionFrame>;
53
- getFfmpegPath(): Promise<string>;
54
- getIceServers(): Promise<IceServer[]>;
55
52
  updateState<T extends keyof SetValues>(stateName: T, eventData: SetValues[T], frame?: VideoFrameImp): Promise<void>;
56
53
  addCameraSource(source: CameraConfigInputSettings): Promise<void>;
57
54
  updateCameraSource(sourceId: string, source: Partial<CameraConfigInputSettings>): Promise<void>;
@@ -0,0 +1,40 @@
1
+ import { EventEmitter } from 'node:events';
2
+ import type { AuthConfig } from '../../../../decoder/types.js';
3
+ import type { CoreManagerProxyEventCallbacks, CoreManagerProxyMethods } from '../../../../nats/types.js';
4
+ import type { PluginInfo } from '../../../../plugins/types.js';
5
+ import type { IceServer } from '../../../../services/config/types.js';
6
+ import type { API } from '../pluginApi.js';
7
+ import type { PluginLogger } from '../pluginLogger.js';
8
+ export declare interface CoreManager extends CoreManagerProxyMethods {
9
+ on<E extends keyof CoreManagerProxyEventCallbacks>(event: E, listener: CoreManagerProxyEventCallbacks[E]): this;
10
+ once<E extends keyof CoreManagerProxyEventCallbacks>(event: E, listener: CoreManagerProxyEventCallbacks[E]): this;
11
+ off<E extends keyof CoreManagerProxyEventCallbacks>(event: E, listener: CoreManagerProxyEventCallbacks[E]): this;
12
+ removeListener<E extends keyof CoreManagerProxyEventCallbacks>(event: E, listener: CoreManagerProxyEventCallbacks[E]): this;
13
+ removeAllListeners<E extends keyof CoreManagerProxyEventCallbacks>(event?: E): this;
14
+ }
15
+ export declare class CoreManagerProxy extends EventEmitter implements CoreManager {
16
+ private api;
17
+ private logger;
18
+ private initialized;
19
+ private subject;
20
+ private cmSubject;
21
+ private publisher?;
22
+ private dmPublisher?;
23
+ private subscriber?;
24
+ private dmSubscriber?;
25
+ private messageQueue?;
26
+ private auth;
27
+ private proxyEndpoints;
28
+ private plugin;
29
+ constructor(api: API, logger: PluginLogger, plugin: PluginInfo, proxyEndpoints: string[], auth: AuthConfig);
30
+ init(): Promise<void>;
31
+ getFFmpegPath(): Promise<string>;
32
+ getServerAddresses(): Promise<string[]>;
33
+ getIceServers(): Promise<IceServer[]>;
34
+ emit(): boolean;
35
+ private requestHandler;
36
+ private emitEvent;
37
+ private onProxyMessage;
38
+ private onRequest;
39
+ private close;
40
+ }
@@ -24,7 +24,6 @@ export declare class ConfigService {
24
24
  readonly TMP_DIR: string;
25
25
  readonly PLUGINS_STORAGE_PATH: string;
26
26
  readonly PLUGINS_INSTALL_PATH: string;
27
- readonly PLUGINS_PJSON_FILE: string;
28
27
  readonly LOG_FILE: string;
29
28
  readonly CONFIG_FILE: string;
30
29
  readonly SECRETS_FILE: string;
@@ -52,7 +51,6 @@ export declare class ConfigService {
52
51
  private updateGo2RtcConfig;
53
52
  private updateSecrets;
54
53
  private createDirs;
55
- private generatePluginsPackageJson;
56
54
  private safetyEnsureDir;
57
55
  private safetyEmptyDir;
58
56
  private safetyEnsureFile;
@@ -19,7 +19,6 @@ export interface InterfaceSettings {
19
19
  snapshotCache: number;
20
20
  }
21
21
  export interface PluginsSettings {
22
- sudo: boolean;
23
22
  disabledPlugins: string[];
24
23
  }
25
24
  export interface IConfig {
@@ -0,0 +1,12 @@
1
+ import type { Systeminformation } from 'systeminformation';
2
+ export type IPVersion = 'ipv4' | 'ipv6';
3
+ export interface UsableNetworkAddress {
4
+ address: string;
5
+ isPrivate: boolean;
6
+ }
7
+ export declare const isIPv4EmbeddedIPv6: (ip: string) => boolean;
8
+ export declare const extractPureIPAddress: (address: string) => string;
9
+ export declare const isValidNetworkAddress: (ip: string) => boolean;
10
+ export declare const isInternalNetworkAddress: (ip: string) => boolean;
11
+ export declare const fetchViableNetworkAddresses: () => UsableNetworkAddress[];
12
+ export declare const getSystemNetworkInterfaces: () => Promise<Systeminformation.NetworkInterfacesData[]>;
@@ -1,6 +1,7 @@
1
1
  export type * from '../../server/src/api/database/types.js';
2
2
  export * from '../../server/src/api/schemas/cameras.schema.js';
3
3
  export * from '../../server/src/api/schemas/plugins.schema.js';
4
+ export * from '../../server/src/api/schemas/system.schema.js';
4
5
  export * from '../../server/src/api/schemas/users.schema.js';
5
6
  export type * from '../../server/src/api/types/index.js';
6
7
  export type * from '../../server/src/api/websocket/types.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camera.ui/browser",
3
- "version": "0.0.86",
3
+ "version": "0.0.88",
4
4
  "description": "camera.ui browser client",
5
5
  "author": "seydx (https://github.com/seydx/camera.ui)",
6
6
  "module": "./dist/bundle.js",
@@ -32,8 +32,8 @@
32
32
  "@rushstack/eslint-patch": "^1.10.4",
33
33
  "@swc/register": "^0.1.10",
34
34
  "@types/webrtc": "^0.0.43",
35
- "@typescript-eslint/eslint-plugin": "^8.1.0",
36
- "@typescript-eslint/parser": "^8.1.0",
35
+ "@typescript-eslint/eslint-plugin": "^8.2.0",
36
+ "@typescript-eslint/parser": "^8.2.0",
37
37
  "bufferutil": "^4.0.8",
38
38
  "eslint": "^8.57.0",
39
39
  "eslint-config-prettier": "^9.1.0",