@formant/realtime-sdk 0.0.15 → 0.0.17
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/common/BaseClient.d.ts +3 -4
- package/dist/common/FormantBaseClient.d.ts +4 -1
- package/dist/common/LogApiTransport.d.ts +4 -2
- package/dist/common/LogClient.d.ts +1 -0
- package/dist/common/LogReporter.d.ts +8 -0
- package/dist/common/LruCache.d.ts +7 -2
- package/dist/common/StatsManager.d.ts +17 -15
- package/dist/common/StatsReporter.d.ts +16 -0
- package/dist/common/assertUnreachable.d.ts +1 -0
- package/dist/common/config/index.d.ts +2 -0
- package/dist/common/delay.d.ts +1 -1
- package/dist/common/filterIceServers.d.ts +8 -0
- package/dist/common/instanceId.d.ts +1 -0
- package/dist/common/isValidTagString.d.ts +1 -0
- package/dist/common/logger.d.ts +1 -1
- package/dist/common/stats.d.ts +1 -1
- package/dist/date-fns/parseIsoDate.d.ts +1 -0
- package/dist/index.js +1 -1
- package/dist/model/IAdminSignupRequest.d.ts +1 -0
- package/dist/model/ILoginResult.d.ts +1 -0
- package/dist/model/IMetric.d.ts +7 -0
- package/dist/model/IRtcCreateSessionRequest.d.ts +1 -1
- package/dist/model/IRtcIceServer.d.ts +5 -0
- package/dist/model/IRtcInfo.d.ts +7 -0
- package/dist/model/IRtcSession.d.ts +2 -2
- package/dist/model/IStat.d.ts +1 -2
- package/dist/model/IUser.d.ts +1 -0
- package/dist/model/organizationPlans.d.ts +1 -1
- package/dist/model/rtcStreamTypes.d.ts +3 -1
- package/dist/protos/api/signaling/v1/signaling.proto +7 -0
- package/dist/protos/api/signaling/v1/signaling_grpc_pb.js +33 -0
- package/dist/protos/api/signaling/v1/signaling_grpc_web_pb.d.ts +12 -0
- package/dist/protos/api/signaling/v1/signaling_grpc_web_pb.js +80 -0
- package/dist/protos/api/signaling/v1/signaling_pb.d.ts +32 -0
- package/dist/protos/api/signaling/v1/signaling_pb.js +275 -0
- package/dist/realtime-sdk/src/index.d.ts +2 -1
- package/dist/rtc-client/RtcClient.d.ts +4 -2
- package/dist/rtc-client/RtcClientV1.d.ts +51 -0
- package/dist/rtc-client/RtcConnection.d.ts +10 -0
- package/dist/rtc-client/RtcConnectionV1.d.ts +72 -0
- package/dist/rtc-client/RtcSessionMetricsV1.d.ts +12 -0
- package/dist/rtc-client/gatherPingMetrics.d.ts +17 -0
- package/dist/rtc-client/models/IPingInfo.d.ts +10 -0
- package/dist/rtc-client/models/IPingPayload.d.ts +6 -0
- package/dist/rtc-client/models/IRtcClientConfiguration.d.ts +5 -5
- package/dist/rtc-client/models/IRtcStreamPayload.d.ts +3 -0
- package/dist/rtc-client/models-v1/IRtcClientConfigurationV1.d.ts +11 -0
- package/dist/rtc-client/models-v1/IRtcConnectionConfigurationV1.d.ts +12 -0
- package/dist/rtc-client/utils/encodeStreamId.d.ts +3 -0
- package/dist/rtc-client/utils/streamIsEqual.d.ts +2 -0
- package/dist/ui/utils/browser.d.ts +2 -0
- package/package.json +10 -4
- package/dist/common/LoggerReporter.d.ts +0 -9
- package/dist/model/IStatsReporter.d.ts +0 -6
- package/dist/rtc-client/models/IRtcConnectConfiguration.d.ts +0 -8
- package/dist/rtc-client/utils/getStreamId.d.ts +0 -2
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { IRtcPeer } from "../model/IRtcPeer";
|
|
2
|
+
import { RtcConnectionStatus } from "../model/RtcConnectionStatus";
|
|
3
|
+
import { Timestamp } from "../model/Timestamp";
|
|
4
|
+
import { Uuid } from "../model/Uuid";
|
|
5
|
+
import { IRtcClientConfigurationV1 } from "./models-v1/IRtcClientConfigurationV1";
|
|
6
|
+
import { IIceMode } from "./models/IIceMode";
|
|
7
|
+
import { IRtcSendConfiguration } from "./models/IRtcSendConfiguration";
|
|
8
|
+
import { IRtcStreamMessage } from "./models/IRtcStreamMessage";
|
|
9
|
+
import { IStreamControl } from "./models/IStreamControl";
|
|
10
|
+
/**
|
|
11
|
+
* RtcClient to be used by browsers.
|
|
12
|
+
* Interacts with signaling API v1.
|
|
13
|
+
*/
|
|
14
|
+
export declare class RtcClientV1 {
|
|
15
|
+
private config;
|
|
16
|
+
private localPeer;
|
|
17
|
+
private updateInterval;
|
|
18
|
+
private connections;
|
|
19
|
+
private connectingSessions;
|
|
20
|
+
constructor(config: IRtcClientConfigurationV1);
|
|
21
|
+
send(peerId: Uuid, message: IRtcStreamMessage, config: IRtcSendConfiguration): void;
|
|
22
|
+
controlRemoteStream(peerId: Uuid, streamControl: IStreamControl): void;
|
|
23
|
+
/**
|
|
24
|
+
* Connects to a peer given its id.
|
|
25
|
+
* Returns the id of the session, if one is created.
|
|
26
|
+
*/
|
|
27
|
+
connect(peerId: Uuid): Promise<Uuid | undefined>;
|
|
28
|
+
getConnectionStatus(peerId: Uuid): RtcConnectionStatus;
|
|
29
|
+
getIceMode(peerId: Uuid): IIceMode | undefined;
|
|
30
|
+
disconnect(peerId: Uuid): Promise<void>;
|
|
31
|
+
getLocalPeer(): Promise<IRtcPeer>;
|
|
32
|
+
getPeers(): Promise<IRtcPeer[]>;
|
|
33
|
+
getPing(peerId: Uuid): number | undefined;
|
|
34
|
+
getLastMessageTimestamp(remotePeerId: Uuid): Timestamp | undefined;
|
|
35
|
+
shutdown(): Promise<void>;
|
|
36
|
+
private closeConnection;
|
|
37
|
+
private getSessions;
|
|
38
|
+
private createPeer;
|
|
39
|
+
private createRTCPeerConnection;
|
|
40
|
+
private closeConnections;
|
|
41
|
+
private reset;
|
|
42
|
+
private getActiveConnection;
|
|
43
|
+
private update;
|
|
44
|
+
private handleSessions;
|
|
45
|
+
private syncConnectionsAndSessions;
|
|
46
|
+
private maintainConnection;
|
|
47
|
+
private connectToSession;
|
|
48
|
+
private setupHandlers;
|
|
49
|
+
private consumeSignals;
|
|
50
|
+
private sendSignal;
|
|
51
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Timestamp } from "../model/Timestamp";
|
|
2
2
|
import { Uuid } from "../model/Uuid";
|
|
3
3
|
import { Signal } from "../protos/api/signaling/v1/signaling_pb";
|
|
4
|
+
import { IPingInfo } from "./models/IPingInfo";
|
|
4
5
|
import { IRtcConnectionConfiguration } from "./models/IRtcConnectionConfiguration";
|
|
5
6
|
import { IRtcConnectionStatsInfo } from "./models/IRtcConnectionStatsInfo";
|
|
6
7
|
import { IRtcSendConfiguration } from "./models/IRtcSendConfiguration";
|
|
@@ -14,6 +15,8 @@ export declare class RtcConnection {
|
|
|
14
15
|
private readonly connectTimeoutMs;
|
|
15
16
|
private readonly iceGatheringTimeoutMs;
|
|
16
17
|
private readonly pingUpdateTimeoutMs;
|
|
18
|
+
private readonly pingV2UpdateTimeoutMs;
|
|
19
|
+
private readonly pingV2MetricsGatherTimeoutMs;
|
|
17
20
|
private readonly streamsInfoUpdateTimeoutMs;
|
|
18
21
|
private readonly reassemblyTimeoutMs;
|
|
19
22
|
private readonly reassemblyTableCleanupMs;
|
|
@@ -28,6 +31,8 @@ export declare class RtcConnection {
|
|
|
28
31
|
private reassemblyTableLastTimestamp;
|
|
29
32
|
private reassemblyTableCleanupTimeout;
|
|
30
33
|
private pingUpdateTimeout;
|
|
34
|
+
private pingV2UpdateTimeout;
|
|
35
|
+
private pingV2MetricsGatherTimeout;
|
|
31
36
|
private streamsInfoUpdateTimeout;
|
|
32
37
|
private heartbeatTimeout;
|
|
33
38
|
private pingTimeMs;
|
|
@@ -36,6 +41,8 @@ export declare class RtcConnection {
|
|
|
36
41
|
private closeCalled;
|
|
37
42
|
private gotOffer;
|
|
38
43
|
private hasIceCandidate;
|
|
44
|
+
private pingV2Map;
|
|
45
|
+
private pingInfo;
|
|
39
46
|
constructor(peerConnection: RTCPeerConnection, config: IRtcConnectionConfiguration, dataChannelNotifier: (channel: RTCDataChannel) => void);
|
|
40
47
|
handleSignal(signal: Signal): Promise<Signal | undefined>;
|
|
41
48
|
/**
|
|
@@ -51,6 +58,7 @@ export declare class RtcConnection {
|
|
|
51
58
|
isReady(): boolean;
|
|
52
59
|
close(): Promise<void>;
|
|
53
60
|
getPing(): number | undefined;
|
|
61
|
+
getPingInfo(): IPingInfo | undefined;
|
|
54
62
|
getLastMessageTimestamp(): Timestamp | undefined;
|
|
55
63
|
getSessionCreatedTimestamp(): Timestamp | undefined;
|
|
56
64
|
setSessionCreatedTimestamp(sessionCreatedTimestamp: Timestamp): void;
|
|
@@ -78,4 +86,6 @@ export declare class RtcConnection {
|
|
|
78
86
|
private handleSystemMessage;
|
|
79
87
|
private sendSystemMessage;
|
|
80
88
|
private isLatestMessage;
|
|
89
|
+
private sendPingV2;
|
|
90
|
+
private gatherPingV2Metrics;
|
|
81
91
|
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { IRtcSignal } from "../model/IRtcSignal";
|
|
2
|
+
import { IRtcConnectionConfigurationV1 } from "./models-v1/IRtcConnectionConfigurationV1";
|
|
3
|
+
import { IIceMode } from "./models/IIceMode";
|
|
4
|
+
import { IRtcSendConfiguration } from "./models/IRtcSendConfiguration";
|
|
5
|
+
import { IRtcStreamMessage } from "./models/IRtcStreamMessage";
|
|
6
|
+
import { IStreamControl } from "./models/IStreamControl";
|
|
7
|
+
export declare class RtcConnectionV1 {
|
|
8
|
+
peerConnection: RTCPeerConnection;
|
|
9
|
+
private config;
|
|
10
|
+
iceMode?: IIceMode;
|
|
11
|
+
private readonly connectTimeoutMs;
|
|
12
|
+
private readonly gatherIceTimeoutMs;
|
|
13
|
+
private readonly pingUpdateTimeoutMs;
|
|
14
|
+
private latestTtlStreamChannel?;
|
|
15
|
+
private reliableStreamChannel?;
|
|
16
|
+
private latestReliableStreamChannel?;
|
|
17
|
+
private latestTryOnceStreamChannel?;
|
|
18
|
+
private streamLatestTimestamp;
|
|
19
|
+
private pingUpdateTimeout;
|
|
20
|
+
private pingTimeMs;
|
|
21
|
+
private lastMessageTimestamp;
|
|
22
|
+
private connectTimeout;
|
|
23
|
+
private gatherIceTimeout;
|
|
24
|
+
private sessionMetrics;
|
|
25
|
+
private closeCalled;
|
|
26
|
+
private connectCalled;
|
|
27
|
+
private sentOffer;
|
|
28
|
+
private receivedIceCandidate;
|
|
29
|
+
constructor(peerConnection: RTCPeerConnection, config: IRtcConnectionConfigurationV1);
|
|
30
|
+
connect(): Promise<void>;
|
|
31
|
+
handleSignal(signal: IRtcSignal): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Sends a message to the remote peer.
|
|
34
|
+
*/
|
|
35
|
+
send(message: IRtcStreamMessage, config: IRtcSendConfiguration): void;
|
|
36
|
+
controlRemoteStream(streamControl: IStreamControl): void;
|
|
37
|
+
isActive(): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Checks that the peerConnection is connected
|
|
40
|
+
* and all data channels exist and are open
|
|
41
|
+
*/
|
|
42
|
+
isReady(): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Checks that the peerConnection is closed and all
|
|
45
|
+
* existing data channels are closed
|
|
46
|
+
*/
|
|
47
|
+
isClosed(): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Checks that either the peerConnection is inactive
|
|
50
|
+
* or at least one of the the data channels exists and is inactive
|
|
51
|
+
*/
|
|
52
|
+
needsClosing(): boolean | undefined;
|
|
53
|
+
close(): Promise<void>;
|
|
54
|
+
getPing(): number | undefined;
|
|
55
|
+
getLastMessageTimestamp(): number | undefined;
|
|
56
|
+
getSessionId(): string;
|
|
57
|
+
getRemotePeer(): import("../model/IRtcPeer").IRtcPeer;
|
|
58
|
+
private initializeChannels;
|
|
59
|
+
private sendOffer;
|
|
60
|
+
private getChannelFromLabel;
|
|
61
|
+
private sendOnChannel;
|
|
62
|
+
private channelNotRecognized;
|
|
63
|
+
private setupChannel;
|
|
64
|
+
/**
|
|
65
|
+
* Handles system messages (e.g., ping/pong).
|
|
66
|
+
* Returns true if the message is a system message.
|
|
67
|
+
*/
|
|
68
|
+
private handleSystemMessage;
|
|
69
|
+
private sendSystemMessage;
|
|
70
|
+
private hasCapabilities;
|
|
71
|
+
private isLatestMessage;
|
|
72
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { IRtcStreamMessage } from "./models/IRtcStreamMessage";
|
|
2
|
+
import { RtcConnectionV1 } from "./RtcConnectionV1";
|
|
3
|
+
export declare class RtcSessionMetricsV1 {
|
|
4
|
+
private sessionId;
|
|
5
|
+
private connection;
|
|
6
|
+
private sentMessagesCounts;
|
|
7
|
+
private receivedMessagesCounts;
|
|
8
|
+
constructor(sessionId: string, connection: RtcConnectionV1);
|
|
9
|
+
incrementMessageSent(message: IRtcStreamMessage): void;
|
|
10
|
+
incrementMessageReceived(message: IRtcStreamMessage): void;
|
|
11
|
+
uploadMetrics(): Promise<void>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Timestamp } from "../model/Timestamp";
|
|
2
|
+
import { Uuid } from "../model/Uuid";
|
|
3
|
+
import { IPingInfo } from "./models/IPingInfo";
|
|
4
|
+
export interface IPing {
|
|
5
|
+
sent: Timestamp;
|
|
6
|
+
}
|
|
7
|
+
export interface IPingPong {
|
|
8
|
+
sent: Timestamp;
|
|
9
|
+
received: Timestamp;
|
|
10
|
+
}
|
|
11
|
+
export declare type PingValue = IPing | IPingPong;
|
|
12
|
+
export declare type PingMap = Map<Uuid, PingValue>;
|
|
13
|
+
interface IGatherPingV2MetricsOptions {
|
|
14
|
+
temporalNow?: number;
|
|
15
|
+
}
|
|
16
|
+
export declare function gatherPingV2Metrics(pingMap: PingMap, options?: IGatherPingV2MetricsOptions): IPingInfo | null;
|
|
17
|
+
export {};
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { Timestamp } from "../../model/Timestamp";
|
|
2
2
|
import { Uuid } from "../../model/Uuid";
|
|
3
3
|
import { SignalingPromiseClient } from "../../protos/api/signaling/v1/signaling_grpc_web_pb";
|
|
4
|
+
import { SessionType } from "../../protos/api/signaling/v1/signaling_pb";
|
|
4
5
|
import { IRtcStreamMessage } from "./IRtcStreamMessage";
|
|
5
6
|
export declare type IRtcClientConfiguration = {
|
|
6
|
-
lanOnlyMode: true;
|
|
7
7
|
receive: (peerId: Uuid, message: IRtcStreamMessage) => void;
|
|
8
8
|
onStreamsInfoUpdate?: (peerId: Uuid, timestamp: Timestamp) => void;
|
|
9
9
|
alternateRTCPeerConnection?: typeof RTCPeerConnection;
|
|
10
|
+
sessionType?: SessionType;
|
|
11
|
+
} & ({
|
|
12
|
+
lanOnlyMode: true;
|
|
10
13
|
} | {
|
|
11
14
|
lanOnlyMode?: false;
|
|
12
|
-
receive: (peerId: Uuid, message: IRtcStreamMessage) => void;
|
|
13
15
|
getToken: () => Promise<string>;
|
|
14
16
|
signalingClient: SignalingPromiseClient;
|
|
15
|
-
onStreamsInfoUpdate?: (peerId: Uuid, timestamp: Timestamp) => void;
|
|
16
|
-
alternateRTCPeerConnection?: typeof RTCPeerConnection;
|
|
17
17
|
track?: (event: string, properties?: object) => void;
|
|
18
|
-
};
|
|
18
|
+
});
|
|
@@ -10,6 +10,7 @@ import { IPoseWithCovariance } from "../../model/IPoseWithCovariance";
|
|
|
10
10
|
import { ITransform } from "../../model/ITransform";
|
|
11
11
|
import { ITwist } from "../../model/ITwist";
|
|
12
12
|
import { Timestamp } from "../../model/Timestamp";
|
|
13
|
+
import { IPingPayload } from "./IPingPayload";
|
|
13
14
|
import { IRtcAgentInfo } from "./IRtcAgentInfo";
|
|
14
15
|
import { IRtcPointCloud } from "./IRtcPointCloud";
|
|
15
16
|
import { IRtcStreamsInfo } from "./IRtcStreamsInfo";
|
|
@@ -17,6 +18,8 @@ import { IStreamControl } from "./IStreamControl";
|
|
|
17
18
|
export interface IRtcStreamPayload {
|
|
18
19
|
ping?: Timestamp;
|
|
19
20
|
pong?: Timestamp;
|
|
21
|
+
pingV2?: IPingPayload;
|
|
22
|
+
pongV2?: IPingPayload;
|
|
20
23
|
streamControl?: IStreamControl;
|
|
21
24
|
streamsInfo?: IRtcStreamsInfo;
|
|
22
25
|
agentInfo?: IRtcAgentInfo;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { RtcSignalingClient } from "../../client/RtcSignalingClient";
|
|
2
|
+
import { IRtcCapabilitySet } from "../../model/IRtcCapabilitySet";
|
|
3
|
+
import { Uuid } from "../../model/Uuid";
|
|
4
|
+
import { IRtcStreamMessage } from "../models/IRtcStreamMessage";
|
|
5
|
+
export interface IRtcClientConfigurationV1 {
|
|
6
|
+
signalingClient: RtcSignalingClient;
|
|
7
|
+
getToken: () => Promise<string>;
|
|
8
|
+
receive: (peerId: Uuid, message: IRtcStreamMessage) => void;
|
|
9
|
+
alternateRTCPeerConnection?: typeof RTCPeerConnection;
|
|
10
|
+
capabilitySet?: IRtcCapabilitySet;
|
|
11
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { IRtcPeer } from "../../model/IRtcPeer";
|
|
2
|
+
import { IRtcSignal } from "../../model/IRtcSignal";
|
|
3
|
+
import { Uuid } from "../../model/Uuid";
|
|
4
|
+
import { IRtcStreamMessage } from "../models/IRtcStreamMessage";
|
|
5
|
+
export interface IRtcConnectionConfigurationV1 {
|
|
6
|
+
sessionId: Uuid;
|
|
7
|
+
localPeer: IRtcPeer;
|
|
8
|
+
remotePeer: IRtcPeer;
|
|
9
|
+
isOffer: boolean;
|
|
10
|
+
sendSignal: (signal: IRtcSignal) => Promise<void>;
|
|
11
|
+
receive: (peerId: Uuid, message: IRtcStreamMessage) => void;
|
|
12
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@formant/realtime-sdk",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.17",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/realtime-sdk/src/index.d.ts",
|
|
@@ -10,16 +10,22 @@
|
|
|
10
10
|
"scripts": {
|
|
11
11
|
"clean": "rm -rf dist",
|
|
12
12
|
"compile": "tsc",
|
|
13
|
-
"build": "yarn make-protos && env $(
|
|
13
|
+
"build": "yarn make-protos && env $(grep -v '^#' src/config/production.env) webpack",
|
|
14
14
|
"postbuild": "tsc --emitDeclarationOnly --declaration --declarationDir ./dist --skipLibCheck && tsc-alias",
|
|
15
15
|
"prepublishOnly": "yarn clean && yarn build",
|
|
16
16
|
"make-protos": "cd ../../../ && make protos && cd -"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"
|
|
20
|
-
"
|
|
19
|
+
"env-var": "^7.3.0",
|
|
20
|
+
"google-protobuf": "^3.17.3",
|
|
21
|
+
"grpc-web": "^1.2.1"
|
|
21
22
|
},
|
|
22
23
|
"devDependencies": {
|
|
24
|
+
"@formant/client": "*",
|
|
25
|
+
"@formant/common": "*",
|
|
26
|
+
"@formant/model": "*",
|
|
27
|
+
"@formant/protos": "*",
|
|
28
|
+
"@formant/rtc-client": "*",
|
|
23
29
|
"circular-dependency-plugin": "^5.2.2",
|
|
24
30
|
"copy-webpack-plugin": "^6.4.1",
|
|
25
31
|
"file-loader": "^5.1.0",
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { IStat } from "../model/IStat";
|
|
2
|
-
import { IStatsReporter } from "../model/IStatsReporter";
|
|
3
|
-
export declare class LoggerReporter implements IStatsReporter {
|
|
4
|
-
private message;
|
|
5
|
-
constructor(message: string);
|
|
6
|
-
send(values: {
|
|
7
|
-
[key: string]: IStat;
|
|
8
|
-
}): Promise<void>;
|
|
9
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { RtcIceServerProtocol } from "../../model/RtcIceServerProtocol";
|
|
2
|
-
import { RtcIceTransportPolicy } from "../../model/RtcIceTransportPolicy";
|
|
3
|
-
import { SessionType } from "../../protos/api/signaling/v1/signaling_pb";
|
|
4
|
-
export interface IRtcConnectConfiguration {
|
|
5
|
-
rtcIceServerProtocol?: RtcIceServerProtocol;
|
|
6
|
-
rtcIceTransportPolicies?: RtcIceTransportPolicy[];
|
|
7
|
-
sessionType?: SessionType;
|
|
8
|
-
}
|