@camera.ui/browser 0.0.72 → 0.0.73
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/streaming/streaming-session.d.ts +2 -1
- package/dist/types/server/src/api/controllers/api.controller.d.ts +6 -0
- package/dist/types/server/src/api/controllers/auth.controller.d.ts +20 -0
- package/dist/types/server/src/api/controllers/backup.controller.d.ts +10 -0
- package/dist/types/server/src/api/controllers/cameras.controller.d.ts +33 -0
- package/dist/types/server/src/api/controllers/config.controller.d.ts +14 -0
- package/dist/types/server/src/api/controllers/files.controller.d.ts +8 -0
- package/dist/types/server/src/api/controllers/plugins.controller.d.ts +54 -0
- package/dist/types/server/src/api/controllers/streams.controller.d.ts +12 -0
- package/dist/types/server/src/api/controllers/system.controller.d.ts +14 -0
- package/dist/types/server/src/api/controllers/users.controller.d.ts +15 -0
- package/dist/types/server/src/api/database/index.d.ts +1 -1
- package/dist/types/server/src/api/go2rtc/api/application.d.ts +1 -1
- package/dist/types/server/src/api/go2rtc/api/config.d.ts +1 -1
- package/dist/types/server/src/api/go2rtc/api/snapshot.d.ts +1 -1
- package/dist/types/server/src/api/go2rtc/api/streams.d.ts +1 -1
- package/dist/types/server/src/api/index.d.ts +18 -0
- package/dist/types/server/src/api/middlewares/authPermission.middleware.d.ts +5 -0
- package/dist/types/server/src/api/middlewares/authValidation.middleware.d.ts +4 -0
- package/dist/types/server/src/api/middlewares/pagination.middleware.d.ts +3 -0
- package/dist/types/server/src/api/plugins/cameraui.plugin.d.ts +11 -0
- package/dist/types/server/src/api/plugins/database.plugin.d.ts +11 -0
- package/dist/types/server/src/api/plugins/go2rtc.plugin.d.ts +11 -0
- package/dist/types/server/src/api/plugins/logger.plugin.d.ts +7 -0
- package/dist/types/server/src/api/plugins/socket.plugin.d.ts +11 -0
- package/dist/types/server/src/api/plugins/system.plugin.d.ts +21 -0
- package/dist/types/server/src/api/plugins/useragent.plugin.d.ts +8 -0
- package/dist/types/server/src/api/routes/api.routes.d.ts +2 -0
- package/dist/types/server/src/api/routes/auth.routes.d.ts +2 -0
- package/dist/types/server/src/api/routes/backup.routes.d.ts +2 -0
- package/dist/types/server/src/api/routes/cameras.routes.d.ts +2 -0
- package/dist/types/server/src/api/routes/config.routes.d.ts +2 -0
- package/dist/types/server/src/api/routes/files.routes.d.ts +2 -0
- package/dist/types/server/src/api/routes/index.d.ts +7 -0
- package/dist/types/server/src/api/routes/plugins.routes.d.ts +2 -0
- package/dist/types/server/src/api/routes/streams.routes.d.ts +2 -0
- package/dist/types/server/src/api/routes/system.routes.d.ts +2 -0
- package/dist/types/server/src/api/routes/users.routes.d.ts +2 -0
- package/dist/types/server/src/api/schemas/plugins.schema.d.ts +25 -0
- package/dist/types/server/src/api/services/backup.service.d.ts +10 -0
- package/dist/types/server/src/api/utils/axios.d.ts +2 -0
- package/dist/types/server/src/api/utils/cert.d.ts +11 -0
- package/dist/types/server/src/api/utils/moveFiles.d.ts +1 -0
- package/dist/types/server/src/api/websocket/nsp/status.d.ts +1 -1
- package/dist/types/server/src/api/websocket/types.d.ts +1 -1
- package/dist/types/server/src/decoder/ffmpeg.d.ts +1 -0
- package/dist/types/server/src/decoder/index.d.ts +13 -1
- package/dist/types/server/src/decoder/types.d.ts +29 -21
- package/dist/types/server/src/decoder/worker/index.d.ts +24 -9
- package/dist/types/server/src/devices/camera/controller/types.d.ts +1 -2
- package/dist/types/server/src/devices/camera/index.d.ts +2 -1
- package/dist/types/server/src/devices/camera/streaming/peer-connection.d.ts +6 -5
- package/dist/types/server/src/main.d.ts +21 -0
- package/dist/types/server/src/nats/constants.d.ts +1 -0
- package/dist/types/server/src/nats/proxy/cameraDevice.d.ts +1 -5
- package/dist/types/server/src/nats/server.d.ts +3 -2
- package/dist/types/server/src/nats/types.d.ts +2 -6
- package/dist/types/server/src/plugins/node/logger.d.ts +2 -0
- package/dist/types/server/src/plugins/node/proxy/cameraDevice.d.ts +6 -2
- package/dist/types/server/src/plugins/node/proxy/queue.d.ts +1 -1
- package/dist/types/server/src/plugins/worker-ipc.d.ts +5 -2
- package/dist/types/server/src/services/logger/index.d.ts +3 -3
- package/dist/types/server/src/utils/pythonInstaller.d.ts +2 -1
- package/dist/types/server/src/utils/subscribed.d.ts +1 -1
- package/package.json +4 -4
- package/dist/types/server/src/api/websocket/nsp/frame.d.ts +0 -10
|
@@ -1,27 +1,42 @@
|
|
|
1
1
|
import { Subscribed } from '../../utils/subscribed.js';
|
|
2
2
|
import type { CameraController } from '../../devices/camera/controller/index.js';
|
|
3
3
|
import type { FrameMetadata } from '../types.js';
|
|
4
|
+
interface FrameWorkerClient {
|
|
5
|
+
pluginId: string;
|
|
6
|
+
requestIds: string[];
|
|
7
|
+
}
|
|
4
8
|
export declare class FrameWorker extends Subscribed {
|
|
5
9
|
token: string;
|
|
6
|
-
|
|
7
|
-
private
|
|
8
|
-
private
|
|
10
|
+
readonly clients: Map<string, FrameWorkerClient>;
|
|
11
|
+
private subject;
|
|
12
|
+
private ipcSubject;
|
|
13
|
+
private frameWorkerId;
|
|
14
|
+
private publisher?;
|
|
15
|
+
private subscriber?;
|
|
16
|
+
private logger;
|
|
17
|
+
private configService;
|
|
18
|
+
private camera;
|
|
9
19
|
private frameWorker?;
|
|
20
|
+
private initialized;
|
|
10
21
|
private stopped;
|
|
11
22
|
private auth;
|
|
23
|
+
private ffmpegArgs;
|
|
24
|
+
private py;
|
|
12
25
|
constructor(camera: CameraController, auth: {
|
|
13
26
|
user: string;
|
|
14
27
|
pass: string;
|
|
15
28
|
});
|
|
16
|
-
|
|
29
|
+
init(): Promise<void>;
|
|
17
30
|
close(): Promise<void>;
|
|
18
31
|
workerPID(): number;
|
|
19
32
|
getMetadata(): Promise<FrameMetadata>;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
private
|
|
33
|
+
addClient(pluginId: string, requestId: string): Promise<void>;
|
|
34
|
+
removeClient(pluginId: string, requestId: string): Promise<void>;
|
|
35
|
+
private startVideoSession;
|
|
36
|
+
private stopVideoSession;
|
|
37
|
+
private startWorker;
|
|
23
38
|
private sendMessage;
|
|
24
|
-
private
|
|
25
|
-
private send;
|
|
39
|
+
private listenToMessages;
|
|
26
40
|
private getLogPrefix;
|
|
27
41
|
}
|
|
42
|
+
export {};
|
|
@@ -89,7 +89,6 @@ export type CameraConfig = (BaseCameraConfig & {
|
|
|
89
89
|
export interface BaseDetection {
|
|
90
90
|
id?: string;
|
|
91
91
|
label: string;
|
|
92
|
-
timestamp: number;
|
|
93
92
|
confidence: number;
|
|
94
93
|
boundingBox: [number, number, number, number];
|
|
95
94
|
inputWidth: number;
|
|
@@ -102,7 +101,7 @@ export interface MotionDetection extends BaseDetection {
|
|
|
102
101
|
export interface ObjectDetection extends BaseDetection {
|
|
103
102
|
}
|
|
104
103
|
export interface BaseState<T extends LightState | AudioState | MotionState | ObjectState | SirenState | BatteryState | DoorbellState> {
|
|
105
|
-
timestamp:
|
|
104
|
+
timestamp: string;
|
|
106
105
|
lastEvent?: Omit<T, 'lastEvent'>;
|
|
107
106
|
}
|
|
108
107
|
export interface MotionSetEvent {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { LRUCache } from 'lru-cache';
|
|
2
|
-
import { BehaviorSubject
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import type { Observable, Subscription } from 'rxjs';
|
|
3
4
|
import type { Camera, CameraInformation, CameraPublicProperties, CameraType, CameraZone } from '../../api/database/types.js';
|
|
4
5
|
import type { IceServer } from '../../services/config/types.js';
|
|
5
6
|
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';
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { MediaStreamTrack
|
|
1
|
+
import { ReplaySubject, Subject } from 'rxjs';
|
|
2
|
+
import { MediaStreamTrack } from 'werift';
|
|
3
3
|
import { Subscribed } from '../../../utils/subscribed.js';
|
|
4
|
-
import type {
|
|
4
|
+
import type { Observable } from 'rxjs';
|
|
5
|
+
import type { ConnectionState, RTCIceCandidate, RTCSessionDescription, RtcpPacket, RtpPacket, RTCIceCandidate as WeriftRTCICECandidate } from 'werift';
|
|
5
6
|
import type { IceServer } from '../../../services/config/types.js';
|
|
6
7
|
import type { CameraDevice } from '../cameraDevice.js';
|
|
7
8
|
import type { BaseLogger } from '../controller/types.js';
|
|
@@ -25,8 +26,8 @@ export declare class WeriftPeerConnection extends Subscribed implements BasicPee
|
|
|
25
26
|
onAudioRtcp: Subject<RtcpPacket>;
|
|
26
27
|
onVideoRtp: Subject<RtpPacket>;
|
|
27
28
|
onVideoRtcp: Subject<RtcpPacket>;
|
|
28
|
-
onIceCandidate: Subject<
|
|
29
|
-
onConnectionState: ReplaySubject<"
|
|
29
|
+
onIceCandidate: Subject<RTCIceCandidate>;
|
|
30
|
+
onConnectionState: ReplaySubject<"connected" | "disconnected" | "closed" | "failed" | "new" | "connecting">;
|
|
30
31
|
returnAudioTrack: MediaStreamTrack;
|
|
31
32
|
private onRequestKeyFrame;
|
|
32
33
|
private cameraDevice;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
export declare class CameraUi {
|
|
3
|
+
private started;
|
|
4
|
+
private api;
|
|
5
|
+
private logger;
|
|
6
|
+
private configService;
|
|
7
|
+
private pluginManager;
|
|
8
|
+
private go2rtc;
|
|
9
|
+
private server;
|
|
10
|
+
private proxy;
|
|
11
|
+
private frameManager;
|
|
12
|
+
private _restartAttempts;
|
|
13
|
+
private _maxRestartAttempts;
|
|
14
|
+
get restartAttempts(): number;
|
|
15
|
+
get maxRestartAttempts(): number;
|
|
16
|
+
constructor();
|
|
17
|
+
start(): Promise<void>;
|
|
18
|
+
close(): Promise<void>;
|
|
19
|
+
restart(...args: any[]): Promise<void>;
|
|
20
|
+
private init;
|
|
21
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
import type { Camera } from '../../api/database/types.js';
|
|
3
|
-
import type { FrameMetadata
|
|
3
|
+
import type { FrameMetadata } from '../../decoder/types.js';
|
|
4
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';
|
|
@@ -46,10 +46,6 @@ export declare class CameraDeviceProxy implements CameraDeviceProxyMethods {
|
|
|
46
46
|
cameraId: string;
|
|
47
47
|
pluginId: string;
|
|
48
48
|
}): Promise<FrameMetadata>;
|
|
49
|
-
getFrameSession(data: {
|
|
50
|
-
cameraId: string;
|
|
51
|
-
pluginId: string;
|
|
52
|
-
}): Promise<FrameSession>;
|
|
53
49
|
getFfmpegPath(): string;
|
|
54
50
|
getIceServers(): IceServer[];
|
|
55
51
|
snapshot(data: {
|
|
@@ -2,14 +2,14 @@ import { RUNTIME_STATUS } from '../services/config/types.js';
|
|
|
2
2
|
import type { ProxyAuth } from './types.js';
|
|
3
3
|
export declare class NatsServer {
|
|
4
4
|
readonly serverPort = 4222;
|
|
5
|
-
readonly websocketPort = 8223;
|
|
6
5
|
private readonly clusterAmount;
|
|
7
|
-
private readonly serverClusterPort;
|
|
8
6
|
private readonly auth;
|
|
7
|
+
private clusterPort?;
|
|
9
8
|
private serverProcess?;
|
|
10
9
|
private clusterProcesses;
|
|
11
10
|
private logger;
|
|
12
11
|
private configService;
|
|
12
|
+
private process;
|
|
13
13
|
private tmpDir;
|
|
14
14
|
private manuallyKilled;
|
|
15
15
|
private shuttingDown;
|
|
@@ -27,6 +27,7 @@ export declare class NatsServer {
|
|
|
27
27
|
private stringifyConfig;
|
|
28
28
|
private kill;
|
|
29
29
|
private handleClose;
|
|
30
|
+
private handleCloseCluster;
|
|
30
31
|
private setStatus;
|
|
31
32
|
private processLogger;
|
|
32
33
|
private isIgnorableString;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Camera } from '../api/database/types.js';
|
|
2
|
-
import type { FrameMetadata
|
|
2
|
+
import type { FrameMetadata } from '../decoder/types.js';
|
|
3
3
|
import type { CameraDevice } from '../devices/camera/cameraDevice.js';
|
|
4
4
|
import type { CameraConfig, FfmpegOptions, PrebufferType, SetValues, StateValues, StreamInfo } from '../devices/camera/controller/types.js';
|
|
5
5
|
import type { BasePlugin } from '../plugins/base.js';
|
|
@@ -26,7 +26,7 @@ export interface ProxyMessageStructure {
|
|
|
26
26
|
fn: string;
|
|
27
27
|
args: any;
|
|
28
28
|
timeout: number;
|
|
29
|
-
timestamp:
|
|
29
|
+
timestamp: string;
|
|
30
30
|
response?: any;
|
|
31
31
|
error?: any;
|
|
32
32
|
}
|
|
@@ -113,10 +113,6 @@ export interface CameraDeviceProxyMethods {
|
|
|
113
113
|
cameraId: string;
|
|
114
114
|
pluginId: string;
|
|
115
115
|
}): Promise<FrameMetadata>;
|
|
116
|
-
getFrameSession(data: {
|
|
117
|
-
cameraId: string;
|
|
118
|
-
pluginId: string;
|
|
119
|
-
}): Promise<FrameSession>;
|
|
120
116
|
getFfmpegPath(data: {
|
|
121
117
|
cameraId: string;
|
|
122
118
|
pluginId: string;
|
|
@@ -2,6 +2,8 @@ export declare class PluginLogger {
|
|
|
2
2
|
private _prefix;
|
|
3
3
|
private _loggerPrefix;
|
|
4
4
|
private _disableTimestamps;
|
|
5
|
+
debugEnabled: boolean;
|
|
6
|
+
traceEnabled: boolean;
|
|
5
7
|
private get prefix();
|
|
6
8
|
constructor(prefix: string, disableTimestamps: boolean);
|
|
7
9
|
log(...args: any[]): void;
|
|
@@ -12,8 +12,9 @@ export declare class CameraDeviceProxy extends CameraDevice {
|
|
|
12
12
|
private client;
|
|
13
13
|
private cameraSubscriber;
|
|
14
14
|
private cameraPluginSubscriber;
|
|
15
|
+
private signalingSubscriber;
|
|
15
16
|
private frameSubscriber?;
|
|
16
|
-
private
|
|
17
|
+
private activeRequests;
|
|
17
18
|
private messageQueue;
|
|
18
19
|
private auth;
|
|
19
20
|
private pluginID;
|
|
@@ -22,6 +23,8 @@ export declare class CameraDeviceProxy extends CameraDevice {
|
|
|
22
23
|
private cameraSubscriberSubject;
|
|
23
24
|
private cameraPluginSubscriberSubject;
|
|
24
25
|
private frameSubject;
|
|
26
|
+
private signalingSubject;
|
|
27
|
+
private signalingTargetSubject;
|
|
25
28
|
get sources(): CameraSource[];
|
|
26
29
|
constructor(api: PluginAPI, logger: PluginLogger, camera: Camera, pluginId: string, pluginName: string, auth: {
|
|
27
30
|
user: string;
|
|
@@ -37,9 +40,10 @@ export declare class CameraDeviceProxy extends CameraDevice {
|
|
|
37
40
|
updateState<T extends keyof SetValues>(stateName: T, eventData: SetValues[T]): Promise<void>;
|
|
38
41
|
refreshStates(): Promise<void>;
|
|
39
42
|
cleanup(): Promise<void>;
|
|
40
|
-
private
|
|
43
|
+
private signalDecoder;
|
|
41
44
|
private closeFrameSubscriber;
|
|
42
45
|
private requestHandler;
|
|
43
46
|
private listenToMessages;
|
|
47
|
+
private listenToSignalingMessages;
|
|
44
48
|
private onRequest;
|
|
45
49
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { NatsConnection, Subscription } from 'nats';
|
|
2
2
|
import type { BaseLogger } from '../../../devices/camera/controller/types.js';
|
|
3
3
|
import type { ProxyMessageStructure } from '../../../nats/types.js';
|
|
4
4
|
export declare class ClientMessageQueue {
|
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
import { EventEmitter } from 'node:events';
|
|
3
|
+
import type { Logger } from '../services/logger/index.js';
|
|
3
4
|
import type { ProcessMessage, ProcessResponse } from './types.js';
|
|
4
5
|
export declare interface WorkerIPC {
|
|
5
6
|
on(event: 'message', listener: (message: ProcessResponse) => void): this;
|
|
6
7
|
}
|
|
7
8
|
export declare class WorkerIPC extends EventEmitter {
|
|
9
|
+
private logger;
|
|
8
10
|
private publisher?;
|
|
9
11
|
private subscriber?;
|
|
12
|
+
private name;
|
|
10
13
|
private id;
|
|
11
14
|
private subject;
|
|
12
15
|
private targetSubject;
|
|
13
16
|
private auth;
|
|
14
|
-
constructor(id: string, auth: {
|
|
17
|
+
constructor(name: string, id: string, auth: {
|
|
15
18
|
user: string;
|
|
16
19
|
pass: string;
|
|
17
|
-
});
|
|
20
|
+
}, logger: Logger);
|
|
18
21
|
listen(): Promise<void>;
|
|
19
22
|
close(): Promise<void>;
|
|
20
23
|
sendMessage(message: ProcessMessage): void;
|
|
@@ -5,13 +5,13 @@ import type { LoggingLevel } from '../config/types.js';
|
|
|
5
5
|
export declare class Logger {
|
|
6
6
|
private _loggerPrefix;
|
|
7
7
|
private _debugEnabled;
|
|
8
|
-
private
|
|
8
|
+
private _traceEnabled;
|
|
9
9
|
private _disableTimestamps;
|
|
10
10
|
notifications: UiNotification[];
|
|
11
11
|
get debugEnabled(): boolean;
|
|
12
12
|
set debugEnabled(state: boolean);
|
|
13
|
-
get
|
|
14
|
-
set
|
|
13
|
+
get traceEnabled(): boolean;
|
|
14
|
+
set traceEnabled(state: boolean);
|
|
15
15
|
get disableTimestamps(): boolean;
|
|
16
16
|
set disableTimestamps(state: boolean);
|
|
17
17
|
get prefix(): string;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { PortablePython } from '@bjia56/portable-python';
|
|
2
|
+
import { PluginLogger } from '../plugins/node/logger.js';
|
|
2
3
|
export declare const SERVER_PY_VERSION = "3.11";
|
|
3
4
|
export declare class PythonInstaller {
|
|
4
5
|
static readonly versions: string[];
|
|
6
|
+
logger: PluginLogger;
|
|
5
7
|
readonly python: PortablePython;
|
|
6
8
|
readonly venvPath?: string;
|
|
7
9
|
readonly installPath: string;
|
|
8
10
|
private identifier;
|
|
9
|
-
private logger;
|
|
10
11
|
private configService;
|
|
11
12
|
private needsUpdate;
|
|
12
13
|
get isInstalled(): boolean;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camera.ui/browser",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.73",
|
|
4
4
|
"description": "camera.ui browser client",
|
|
5
5
|
"author": "seydx (https://github.com/seydx/camera.ui)",
|
|
6
6
|
"module": "./dist/bundle.js",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"prepublishOnly": "npm i --package-lock-only && npm run lint && npm run format && npm run build"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"axios": "^1.
|
|
26
|
+
"axios": "^1.7.2",
|
|
27
27
|
"lodash.clonedeep": "^4.5.0",
|
|
28
28
|
"lodash.isequal": "^4.5.0",
|
|
29
29
|
"lru-cache": "^10.2.2",
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
"@rushstack/eslint-patch": "^1.10.3",
|
|
35
35
|
"@swc/register": "^0.1.10",
|
|
36
36
|
"@types/webrtc": "^0.0.43",
|
|
37
|
-
"@typescript-eslint/eslint-plugin": "^7.
|
|
38
|
-
"@typescript-eslint/parser": "^7.
|
|
37
|
+
"@typescript-eslint/eslint-plugin": "^7.10.0",
|
|
38
|
+
"@typescript-eslint/parser": "^7.10.0",
|
|
39
39
|
"bufferutil": "^4.0.8",
|
|
40
40
|
"eslint": "^8.57.0",
|
|
41
41
|
"eslint-config-prettier": "^9.1.0",
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { Namespace, Server, Socket } from 'socket.io';
|
|
2
|
-
import type { SocketNsp } from '../types.js';
|
|
3
|
-
export declare class FrameNamespace {
|
|
4
|
-
nsp: Namespace;
|
|
5
|
-
nspName: SocketNsp;
|
|
6
|
-
readonly connectedClients: Map<string, Set<Socket>>;
|
|
7
|
-
private decoder;
|
|
8
|
-
constructor(io: Server);
|
|
9
|
-
private handleConnection;
|
|
10
|
-
}
|