forked from murat-dogan/node-datachannel
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtypes.ts
127 lines (112 loc) · 3.63 KB
/
types.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
export interface Channel {
close(): void;
sendMessage(msg: string): boolean;
sendMessageBinary(buffer: Uint8Array): boolean;
isOpen(): boolean;
bufferedAmount(): number;
maxMessageSize(): number;
setBufferedAmountLowThreshold(newSize: number): void;
onOpen(cb: () => void): void;
onClosed(cb: () => void): void;
onError(cb: (err: string) => void): void;
onBufferedAmountLow(cb: () => void): void;
onMessage(cb: (msg: string | Buffer) => void): void;
}
export interface WebSocketServerConfiguration {
port?: number; // default 8080
enableTls?: boolean; // default = false;
certificatePemFile?: string;
keyPemFile?: string;
keyPemPass?: string;
bindAddress?: string;
connectionTimeout?: number; // milliseconds
maxMessageSize?: number;
}
// Enum in d.ts is tricky
export type LogLevel = 'Verbose' | 'Debug' | 'Info' | 'Warning' | 'Error' | 'Fatal';
// SCTP Settings
export interface SctpSettings {
recvBufferSize?: number;
sendBufferSize?: number;
maxChunksOnQueue?: number;
initialCongestionWindow?: number;
congestionControlModule?: number;
delayedSackTime?: number;
}
// Proxy Server
export type ProxyServerType = 'Socks5' | 'Http';
export interface ProxyServer {
type: ProxyServerType;
ip: string;
port: number;
username?: string;
password?: string;
}
export const enum RelayType {
TurnUdp = 'TurnUdp',
TurnTcp = 'TurnTcp',
TurnTls = 'TurnTls',
}
export interface IceServer {
hostname: string;
port: number;
username?: string;
password?: string;
relayType?: RelayType;
}
export type TransportPolicy = 'all' | 'relay';
export interface RtcConfig {
iceServers: (string | IceServer)[];
proxyServer?: ProxyServer;
bindAddress?: string;
enableIceTcp?: boolean;
enableIceUdpMux?: boolean;
disableAutoNegotiation?: boolean;
forceMediaTransport?: boolean;
portRangeBegin?: number;
portRangeEnd?: number;
maxMessageSize?: number;
mtu?: number;
iceTransportPolicy?: TransportPolicy;
disableFingerprintVerification?: boolean;
}
// Lowercase to match the description type string from libdatachannel
export enum DescriptionType {
Unspec = 'unspec',
Offer = 'offer',
Answer = 'answer',
Pranswer = 'pranswer',
Rollback = 'rollback',
}
export type RTCSdpType = 'answer' | 'offer' | 'pranswer' | 'rollback';
export type RTCIceTransportState = "checking" | "closed" | "completed" | "connected" | "disconnected" | "failed" | "new";
export type RTCPeerConnectionState = "closed" | "connected" | "connecting" | "disconnected" | "failed" | "new";
export type RTCIceConnectionState = "checking" | "closed" | "completed" | "connected" | "disconnected" | "failed" | "new";
export type RTCIceGathererState = "complete" | "gathering" | "new";
export type RTCIceGatheringState = "complete" | "gathering" | "new";
export type RTCSignalingState = "closed" | "have-local-offer" | "have-local-pranswer" | "have-remote-offer" | "have-remote-pranswer" | "stable";
export interface DataChannelInitConfig {
protocol?: string;
negotiated?: boolean;
id?: number;
unordered?: boolean; // Reliability
maxPacketLifeTime?: number; // Reliability
maxRetransmits?: number; // Reliability
}
export interface SelectedCandidateInfo {
address: string;
port: number;
type: string;
transportType: string;
candidate: string;
mid: string;
priority: number;
}
// Must be same as rtc enum class Direction
export const enum Direction {
SendOnly = 'SendOnly',
RecvOnly = 'RecvOnly',
SendRecv = 'SendRecv',
Inactive = 'Inactive',
Unknown = 'Unknown',
}