node-datachannel 0.12.0 → 0.20.0-alpha.2

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 (219) hide show
  1. package/.eslintignore +5 -1
  2. package/.eslintrc.json +27 -0
  3. package/.prettierrc +12 -0
  4. package/CMakeLists.txt +13 -13
  5. package/dist/cjs/index.cjs +11 -0
  6. package/dist/cjs/index.cjs.map +1 -0
  7. package/dist/cjs/lib/datachannel-stream.cjs +101 -0
  8. package/dist/cjs/lib/datachannel-stream.cjs.map +1 -0
  9. package/dist/cjs/lib/index.cjs +61 -0
  10. package/dist/cjs/lib/index.cjs.map +1 -0
  11. package/dist/cjs/lib/node-datachannel.cjs +14 -0
  12. package/dist/cjs/lib/node-datachannel.cjs.map +1 -0
  13. package/dist/cjs/lib/websocket-server.cjs +44 -0
  14. package/dist/cjs/lib/websocket-server.cjs.map +1 -0
  15. package/dist/cjs/lib/websocket.cjs +8 -0
  16. package/dist/cjs/lib/websocket.cjs.map +1 -0
  17. package/dist/cjs/polyfill/Events.cjs +37 -0
  18. package/dist/cjs/polyfill/Events.cjs.map +1 -0
  19. package/dist/cjs/polyfill/Exception.cjs +34 -0
  20. package/dist/cjs/polyfill/Exception.cjs.map +1 -0
  21. package/dist/cjs/polyfill/RTCCertificate.cjs +31 -0
  22. package/dist/cjs/polyfill/RTCCertificate.cjs.map +1 -0
  23. package/dist/cjs/polyfill/RTCDataChannel.cjs +179 -0
  24. package/dist/cjs/polyfill/RTCDataChannel.cjs.map +1 -0
  25. package/dist/cjs/polyfill/RTCDtlsTransport.cjs +52 -0
  26. package/dist/cjs/polyfill/RTCDtlsTransport.cjs.map +1 -0
  27. package/dist/cjs/polyfill/RTCError.cjs +76 -0
  28. package/dist/cjs/polyfill/RTCError.cjs.map +1 -0
  29. package/dist/cjs/polyfill/RTCIceCandidate.cjs +129 -0
  30. package/dist/cjs/polyfill/RTCIceCandidate.cjs.map +1 -0
  31. package/dist/cjs/polyfill/RTCIceTransport.cjs +84 -0
  32. package/dist/cjs/polyfill/RTCIceTransport.cjs.map +1 -0
  33. package/dist/cjs/polyfill/RTCPeerConnection.cjs +417 -0
  34. package/dist/cjs/polyfill/RTCPeerConnection.cjs.map +1 -0
  35. package/dist/cjs/polyfill/RTCSctpTransport.cjs +61 -0
  36. package/dist/cjs/polyfill/RTCSctpTransport.cjs.map +1 -0
  37. package/dist/cjs/polyfill/RTCSessionDescription.cjs +37 -0
  38. package/dist/cjs/polyfill/RTCSessionDescription.cjs.map +1 -0
  39. package/dist/cjs/polyfill/index.cjs +42 -0
  40. package/dist/cjs/polyfill/index.cjs.map +1 -0
  41. package/dist/esm/index.mjs +8 -0
  42. package/dist/esm/index.mjs.map +1 -0
  43. package/dist/esm/lib/datachannel-stream.mjs +78 -0
  44. package/dist/esm/lib/datachannel-stream.mjs.map +1 -0
  45. package/dist/esm/lib/index.mjs +44 -0
  46. package/dist/esm/lib/index.mjs.map +1 -0
  47. package/dist/esm/lib/node-datachannel.mjs +18 -0
  48. package/dist/esm/lib/node-datachannel.mjs.map +1 -0
  49. package/dist/esm/lib/websocket-server.mjs +42 -0
  50. package/dist/esm/lib/websocket-server.mjs.map +1 -0
  51. package/dist/esm/lib/websocket.mjs +6 -0
  52. package/dist/esm/lib/websocket.mjs.map +1 -0
  53. package/dist/esm/polyfill/Events.mjs +34 -0
  54. package/dist/esm/polyfill/Events.mjs.map +1 -0
  55. package/dist/esm/polyfill/Exception.mjs +28 -0
  56. package/dist/esm/polyfill/Exception.mjs.map +1 -0
  57. package/dist/esm/polyfill/RTCCertificate.mjs +27 -0
  58. package/dist/esm/polyfill/RTCCertificate.mjs.map +1 -0
  59. package/dist/esm/polyfill/RTCDataChannel.mjs +175 -0
  60. package/dist/esm/polyfill/RTCDataChannel.mjs.map +1 -0
  61. package/dist/esm/polyfill/RTCDtlsTransport.mjs +48 -0
  62. package/dist/esm/polyfill/RTCDtlsTransport.mjs.map +1 -0
  63. package/dist/esm/polyfill/RTCError.mjs +72 -0
  64. package/dist/esm/polyfill/RTCError.mjs.map +1 -0
  65. package/dist/esm/polyfill/RTCIceCandidate.mjs +125 -0
  66. package/dist/esm/polyfill/RTCIceCandidate.mjs.map +1 -0
  67. package/dist/esm/polyfill/RTCIceTransport.mjs +80 -0
  68. package/dist/esm/polyfill/RTCIceTransport.mjs.map +1 -0
  69. package/dist/esm/polyfill/RTCPeerConnection.mjs +413 -0
  70. package/dist/esm/polyfill/RTCPeerConnection.mjs.map +1 -0
  71. package/dist/esm/polyfill/RTCSctpTransport.mjs +57 -0
  72. package/dist/esm/polyfill/RTCSctpTransport.mjs.map +1 -0
  73. package/dist/esm/polyfill/RTCSessionDescription.mjs +33 -0
  74. package/dist/esm/polyfill/RTCSessionDescription.mjs.map +1 -0
  75. package/dist/esm/polyfill/index.mjs +27 -0
  76. package/dist/esm/polyfill/index.mjs.map +1 -0
  77. package/dist/types/lib/datachannel-stream.d.ts +24 -0
  78. package/dist/types/lib/index.d.ts +164 -0
  79. package/dist/types/lib/types.d.ts +106 -0
  80. package/dist/types/lib/websocket-server.d.ts +13 -0
  81. package/dist/types/lib/websocket.d.ts +25 -0
  82. package/dist/types/polyfill/Events.d.ts +15 -0
  83. package/dist/types/polyfill/RTCCertificate.d.ts +8 -0
  84. package/dist/types/polyfill/RTCDataChannel.d.ts +29 -0
  85. package/dist/types/polyfill/RTCDtlsTransport.d.ts +17 -0
  86. package/dist/types/polyfill/RTCError.d.ts +16 -0
  87. package/dist/types/polyfill/RTCIceCandidate.d.ts +21 -0
  88. package/dist/types/polyfill/RTCIceTransport.d.ts +24 -0
  89. package/dist/types/polyfill/RTCPeerConnection.d.ts +56 -0
  90. package/dist/types/polyfill/RTCSctpTransport.d.ts +17 -0
  91. package/dist/types/polyfill/RTCSessionDescription.d.ts +9 -0
  92. package/{polyfill → dist/types/polyfill}/index.d.ts +3 -14
  93. package/jest.config.ts +14 -0
  94. package/package.json +47 -43
  95. package/rollup.config.mjs +63 -0
  96. package/src/index.ts +10 -0
  97. package/{lib/datachannel-stream.js → src/lib/datachannel-stream.ts} +16 -11
  98. package/src/lib/index.ts +180 -0
  99. package/src/lib/node-datachannel.ts +13 -0
  100. package/src/lib/types.ts +126 -0
  101. package/{lib/websocket-server.js → src/lib/websocket-server.ts} +10 -8
  102. package/src/lib/websocket.ts +26 -0
  103. package/src/polyfill/Events.ts +33 -0
  104. package/src/polyfill/Exception.ts +37 -0
  105. package/src/polyfill/RTCCertificate.ts +17 -0
  106. package/{polyfill/RTCDataChannel.js → src/polyfill/RTCDataChannel.ts} +43 -40
  107. package/src/polyfill/RTCDtlsTransport.ts +47 -0
  108. package/src/polyfill/RTCError.ts +71 -0
  109. package/{polyfill/RTCIceCandidate.js → src/polyfill/RTCIceCandidate.ts} +35 -35
  110. package/{polyfill/RTCIceTransport.js → src/polyfill/RTCIceTransport.ts} +22 -20
  111. package/{polyfill/RTCPeerConnection.js → src/polyfill/RTCPeerConnection.ts} +128 -114
  112. package/{polyfill/RTCSctpTransport.js → src/polyfill/RTCSctpTransport.ts} +16 -14
  113. package/{polyfill/RTCSessionDescription.js → src/polyfill/RTCSessionDescription.ts} +7 -12
  114. package/{polyfill/index.js → src/polyfill/index.ts} +10 -10
  115. package/tsconfig.json +20 -13
  116. package/.eslintrc.cjs +0 -8
  117. package/.github/FUNDING.yml +0 -2
  118. package/.github/workflows/build-linux.yml +0 -109
  119. package/.github/workflows/build-mac-m1.yml +0 -38
  120. package/.github/workflows/build-mac-x64.yml +0 -40
  121. package/.github/workflows/build-win.yml +0 -74
  122. package/.github/workflows/lint.yml +0 -20
  123. package/.github/workflows/npm-publish-manual.yml +0 -23
  124. package/.prettierrc.cjs +0 -8
  125. package/build-containers/Dockerfile.alpine +0 -6
  126. package/build-containers/Dockerfile.debian +0 -7
  127. package/cmake/toolchain/ci.cmake +0 -23
  128. package/examples/client-server/README.md +0 -22
  129. package/examples/client-server/client-benchmark.js +0 -230
  130. package/examples/client-server/client-periodic.js +0 -189
  131. package/examples/client-server/client.js +0 -111
  132. package/examples/client-server/package-lock.json +0 -289
  133. package/examples/client-server/package.json +0 -16
  134. package/examples/client-server/signaling-server.js +0 -39
  135. package/examples/electron-demo/README.md +0 -58
  136. package/examples/electron-demo/forge.config.js +0 -49
  137. package/examples/electron-demo/package-lock.json +0 -15877
  138. package/examples/electron-demo/package.json +0 -44
  139. package/examples/electron-demo/src/index.css +0 -7
  140. package/examples/electron-demo/src/index.html +0 -29
  141. package/examples/electron-demo/src/main.js +0 -53
  142. package/examples/electron-demo/src/node-datachannel.js +0 -123
  143. package/examples/electron-demo/src/preload.js +0 -28
  144. package/examples/electron-demo/src/renderer.js +0 -58
  145. package/examples/electron-demo/webpack.main.config.js +0 -21
  146. package/examples/electron-demo/webpack.renderer.config.js +0 -13
  147. package/examples/electron-demo/webpack.rules.js +0 -35
  148. package/examples/media/README.md +0 -34
  149. package/examples/media/main.html +0 -45
  150. package/examples/media/media.js +0 -54
  151. package/examples/simple-peer-usage/main.js +0 -28
  152. package/examples/simple-peer-usage/package-lock.json +0 -317
  153. package/examples/simple-peer-usage/package.json +0 -16
  154. package/examples/websocket/websocket-client.js +0 -20
  155. package/examples/websocket/websocket-server.js +0 -22
  156. package/jest.config.cjs +0 -7
  157. package/lib/index.cjs +0 -194
  158. package/lib/index.d.cts +0 -300
  159. package/lib/index.d.ts +0 -300
  160. package/lib/index.js +0 -58
  161. package/lib/node-datachannel.js +0 -7
  162. package/polyfill/Events.d.ts +0 -9
  163. package/polyfill/Events.js +0 -29
  164. package/polyfill/Exception.js +0 -23
  165. package/polyfill/RTCCertificate.d.ts +0 -7
  166. package/polyfill/RTCCertificate.js +0 -17
  167. package/polyfill/RTCDataChannel.d.ts +0 -35
  168. package/polyfill/RTCDtlsTransport.d.ts +0 -10
  169. package/polyfill/RTCDtlsTransport.js +0 -47
  170. package/polyfill/RTCError.d.ts +0 -11
  171. package/polyfill/RTCError.js +0 -65
  172. package/polyfill/RTCIceCandidate.d.ts +0 -20
  173. package/polyfill/RTCIceTransport.d.ts +0 -18
  174. package/polyfill/RTCPeerConnection.d.ts +0 -62
  175. package/polyfill/RTCSctpTransport.d.ts +0 -10
  176. package/polyfill/RTCSessionDescription.d.ts +0 -8
  177. package/polyfill/index.cjs +0 -1333
  178. package/polyfill/index.d.cts +0 -37
  179. package/test/connectivity.js +0 -86
  180. package/test/jest-tests/basic.test.js +0 -37
  181. package/test/jest-tests/multiple-run.test.js +0 -73
  182. package/test/jest-tests/p2p.test.js +0 -99
  183. package/test/jest-tests/polyfill.test.js +0 -10
  184. package/test/jest-tests/streams.test.js +0 -48
  185. package/test/jest-tests/websocket.test.js +0 -69
  186. package/test/polyfill-connectivity.js +0 -89
  187. package/test/websockets.js +0 -50
  188. package/test/wpt-tests/README.md +0 -46
  189. package/test/wpt-tests/chrome-failed-tests.js +0 -42
  190. package/test/wpt-tests/index.js +0 -96
  191. package/test/wpt-tests/last-test-results.md +0 -301
  192. package/test/wpt-tests/package-lock.json +0 -1712
  193. package/test/wpt-tests/package.json +0 -19
  194. package/test/wpt-tests/wpt-test-list.js +0 -139
  195. package/test/wpt-tests/wpt.js +0 -131
  196. /package/src/{data-channel-wrapper.cpp → cpp/data-channel-wrapper.cpp} +0 -0
  197. /package/src/{data-channel-wrapper.h → cpp/data-channel-wrapper.h} +0 -0
  198. /package/src/{main.cpp → cpp/main.cpp} +0 -0
  199. /package/src/{media-audio-wrapper.cpp → cpp/media-audio-wrapper.cpp} +0 -0
  200. /package/src/{media-audio-wrapper.h → cpp/media-audio-wrapper.h} +0 -0
  201. /package/src/{media-direction.cpp → cpp/media-direction.cpp} +0 -0
  202. /package/src/{media-direction.h → cpp/media-direction.h} +0 -0
  203. /package/src/{media-rtcpreceivingsession-wrapper.cpp → cpp/media-rtcpreceivingsession-wrapper.cpp} +0 -0
  204. /package/src/{media-rtcpreceivingsession-wrapper.h → cpp/media-rtcpreceivingsession-wrapper.h} +0 -0
  205. /package/src/{media-track-wrapper.cpp → cpp/media-track-wrapper.cpp} +0 -0
  206. /package/src/{media-track-wrapper.h → cpp/media-track-wrapper.h} +0 -0
  207. /package/src/{media-video-wrapper.cpp → cpp/media-video-wrapper.cpp} +0 -0
  208. /package/src/{media-video-wrapper.h → cpp/media-video-wrapper.h} +0 -0
  209. /package/src/{peer-connection-wrapper.cpp → cpp/peer-connection-wrapper.cpp} +0 -0
  210. /package/src/{peer-connection-wrapper.h → cpp/peer-connection-wrapper.h} +0 -0
  211. /package/src/{rtc-wrapper.cpp → cpp/rtc-wrapper.cpp} +0 -0
  212. /package/src/{rtc-wrapper.h → cpp/rtc-wrapper.h} +0 -0
  213. /package/src/{thread-safe-callback.cpp → cpp/thread-safe-callback.cpp} +0 -0
  214. /package/src/{thread-safe-callback.h → cpp/thread-safe-callback.h} +0 -0
  215. /package/src/{web-socket-server-wrapper.cpp → cpp/web-socket-server-wrapper.cpp} +0 -0
  216. /package/src/{web-socket-server-wrapper.h → cpp/web-socket-server-wrapper.h} +0 -0
  217. /package/src/{web-socket-wrapper.cpp → cpp/web-socket-wrapper.cpp} +0 -0
  218. /package/src/{web-socket-wrapper.h → cpp/web-socket-wrapper.h} +0 -0
  219. /package/{polyfill → src/polyfill}/README.md +0 -0
package/lib/index.d.cts DELETED
@@ -1,300 +0,0 @@
1
- import * as stream from 'stream';
2
-
3
- export as namespace NodeDataChannel;
4
-
5
- // Enum in d.ts is tricky
6
- export type LogLevel = 'Verbose' | 'Debug' | 'Info' | 'Warning' | 'Error' | 'Fatal';
7
-
8
- // SCTP Settings
9
- export interface SctpSettings {
10
- recvBufferSize?: number;
11
- sendBufferSize?: number;
12
- maxChunksOnQueue?: number;
13
- initialCongestionWindow?: number;
14
- congestionControlModule?: number;
15
- delayedSackTime?: number;
16
- }
17
-
18
- // Functions
19
- export function preload(): void;
20
- export function initLogger(level: LogLevel, callback?: (level: LogLevel, message: string) => void): void;
21
- export function cleanup(): void;
22
- export function setSctpSettings(settings: SctpSettings): void;
23
-
24
- // Proxy Server
25
- export type ProxyServerType = 'Socks5' | 'Http';
26
- export interface ProxyServer {
27
- type: ProxyServerType;
28
- ip: string;
29
- port: number;
30
- username?: string;
31
- password?: string;
32
- }
33
-
34
- export const enum RelayType {
35
- TurnUdp = 'TurnUdp',
36
- TurnTcp = 'TurnTcp',
37
- TurnTls = 'TurnTls',
38
- }
39
-
40
- export interface IceServer {
41
- hostname: string;
42
- port: number;
43
- username?: string;
44
- password?: string;
45
- relayType?: RelayType;
46
- }
47
-
48
- export type TransportPolicy = 'all' | 'relay';
49
-
50
- export interface RtcConfig {
51
- iceServers: (string | IceServer)[];
52
- proxyServer?: ProxyServer;
53
- bindAddress?: string;
54
- enableIceTcp?: boolean;
55
- enableIceUdpMux?: boolean;
56
- disableAutoNegotiation?: boolean;
57
- forceMediaTransport?: boolean;
58
- portRangeBegin?: number;
59
- portRangeEnd?: number;
60
- maxMessageSize?: number;
61
- mtu?: number;
62
- iceTransportPolicy?: TransportPolicy;
63
- }
64
-
65
- // Lowercase to match the description type string from libdatachannel
66
- export enum DescriptionType {
67
- Unspec = 'unspec',
68
- Offer = 'offer',
69
- Answer = 'answer',
70
- Pranswer = 'pranswer',
71
- Rollback = 'rollback',
72
- }
73
-
74
- export interface DataChannelInitConfig {
75
- protocol?: string;
76
- negotiated?: boolean;
77
- id?: number;
78
- unordered?: boolean; // Reliability
79
- maxPacketLifeTime?: number; // Reliability
80
- maxRetransmits?: number; // Reliability
81
- }
82
-
83
- export interface SelectedCandidateInfo {
84
- address: string;
85
- port: number;
86
- type: string;
87
- transportType: string;
88
- candidate: string;
89
- mid: string;
90
- priority: number;
91
- }
92
-
93
- // Must be same as rtc enum class Direction
94
- export const enum Direction {
95
- SendOnly = 'SendOnly',
96
- RecvOnly = 'RecvOnly',
97
- SendRecv = 'SendRecv',
98
- Inactive = 'Inactive',
99
- Unknown = 'Unknown',
100
- }
101
-
102
- export class RtcpReceivingSession {
103
- //
104
- }
105
-
106
- export class Audio {
107
- constructor(mid: string, dir: Direction);
108
- addAudioCodec(payloadType: number, codec: string, profile?: string): void;
109
- addOpusCodec(payloadType: number, profile?: string): string;
110
-
111
- direction(): Direction;
112
- generateSdp(eol: string, addr: string, port: number): string;
113
- mid(): string;
114
- setDirection(dir: Direction): void;
115
- description(): string;
116
- removeFormat(fmt: string): void;
117
- addSSRC(ssrc: number, name?: string, msid?: string, trackID?: string): void;
118
- removeSSRC(ssrc: number): void;
119
- replaceSSRC(oldSsrc: number, ssrc: number, name?: string, msid?: string, trackID?: string): void;
120
- hasSSRC(ssrc: number): boolean;
121
- getSSRCs(): number[];
122
- getCNameForSsrc(ssrc: number): string;
123
- setBitrate(bitRate: number): void;
124
- getBitrate(): number;
125
- hasPayloadType(payloadType: number): boolean;
126
- addRTXCodec(payloadType: number, originalPayloadType: number, clockRate: number): void;
127
- addRTPMap(): void;
128
- parseSdpLine(line: string): void;
129
- }
130
-
131
- export class Video {
132
- constructor(mid: string, dir: Direction);
133
- addVideoCodec(payloadType: number, codec: string, profile?: string): void;
134
- addH264Codec(payloadType: number, profile?: string): void;
135
- addVP8Codec(payloadType: number): void;
136
- addVP9Codec(payloadType: number): void;
137
-
138
- direction(): Direction;
139
- generateSdp(eol: string, addr: string, port: number): string;
140
- mid(): string;
141
- setDirection(dir: Direction): void;
142
- description(): string;
143
- removeFormat(fmt: string): void;
144
- addSSRC(ssrc: number, name?: string, msid?: string, trackID?: string): void;
145
- removeSSRC(ssrc: number): void;
146
- replaceSSRC(oldSsrc: number, ssrc: number, name?: string, msid?: string, trackID?: string): void;
147
- hasSSRC(ssrc: number): boolean;
148
- getSSRCs(): number[];
149
- getCNameForSsrc(ssrc: number): string;
150
- setBitrate(bitRate: number): void;
151
- getBitrate(): number;
152
- hasPayloadType(payloadType: number): boolean;
153
- addRTXCodec(payloadType: number, originalPayloadType: number, clockRate: number): void;
154
- addRTPMap(): void;
155
- parseSdpLine(line: string): void;
156
- }
157
-
158
- export class Track {
159
- direction(): Direction;
160
- mid(): string;
161
- type(): string;
162
- close(): void;
163
- sendMessage(msg: string): boolean;
164
- sendMessageBinary(buffer: Buffer): boolean;
165
- isOpen(): boolean;
166
- isClosed(): boolean;
167
- bufferedAmount(): number;
168
- maxMessageSize(): number;
169
- requestBitrate(bitRate: number): boolean;
170
- setBufferedAmountLowThreshold(newSize: number): void;
171
- requestKeyframe(): boolean;
172
- setMediaHandler(handler: RtcpReceivingSession): void;
173
- onOpen(cb: () => void): void;
174
- onClosed(cb: () => void): void;
175
- onError(cb: (err: string) => void): void;
176
- onMessage(cb: (msg: Buffer) => void): void;
177
- }
178
-
179
- export interface Channel {
180
- close(): void;
181
- sendMessage(msg: string): boolean;
182
- sendMessageBinary(buffer: Uint8Array): boolean;
183
- isOpen(): boolean;
184
- bufferedAmount(): number;
185
- maxMessageSize(): number;
186
- setBufferedAmountLowThreshold(newSize: number): void;
187
- onOpen(cb: () => void): void;
188
- onClosed(cb: () => void): void;
189
- onError(cb: (err: string) => void): void;
190
- onBufferedAmountLow(cb: () => void): void;
191
- onMessage(cb: (msg: string | Buffer) => void): void;
192
- }
193
- export class DataChannel implements Channel {
194
- getLabel(): string;
195
- getId(): number;
196
- getProtocol(): string;
197
-
198
- // Channel implementation
199
- close(): void;
200
- sendMessage(msg: string): boolean;
201
- sendMessageBinary(buffer: Uint8Array): boolean;
202
- isOpen(): boolean;
203
- bufferedAmount(): number;
204
- maxMessageSize(): number;
205
- setBufferedAmountLowThreshold(newSize: number): void;
206
- onOpen(cb: () => void): void;
207
- onClosed(cb: () => void): void;
208
- onError(cb: (err: string) => void): void;
209
- onBufferedAmountLow(cb: () => void): void;
210
- onMessage(cb: (msg: string | Buffer) => void): void;
211
- }
212
-
213
- export interface WebSocketConfiguration {
214
- disableTlsVerification?: boolean; // default = false, if true, don't verify the TLS certificate
215
- proxyServer?: ProxyServer; // only non-authenticated http supported for now
216
- protocols?: string[];
217
- connectionTimeout?: number; // miliseconds, zero to disable
218
- pingInterval?: number; // millisecondrs, zero to disable
219
- maxOutstandingPings?: number;
220
- caCertificatePemFile?: string;
221
- certificatePemFile?: string;
222
- keyPemFile?: string;
223
- keyPemPass?: string;
224
- maxMessageSize: number;
225
- }
226
- export class WebSocket implements Channel {
227
- constructor(config?: WebSocketConfiguration);
228
- open(url: string): void;
229
- forceClose(): void;
230
- remoteAddress(): string | undefined;
231
- path(): string | undefined;
232
-
233
- // Channel implementation
234
- close(): void;
235
- sendMessage(msg: string): boolean;
236
- sendMessageBinary(buffer: Uint8Array): boolean;
237
- isOpen(): boolean;
238
- bufferedAmount(): number;
239
- maxMessageSize(): number;
240
- setBufferedAmountLowThreshold(newSize: number): void;
241
- onOpen(cb: () => void): void;
242
- onClosed(cb: () => void): void;
243
- onError(cb: (err: string) => void): void;
244
- onBufferedAmountLow(cb: () => void): void;
245
- onMessage(cb: (msg: string | Buffer) => void): void;
246
- }
247
-
248
- export interface WebSocketServerConfiguration {
249
- port?: number; // default 8080
250
- enableTls?: boolean; // default = false;
251
- certificatePemFile?: string;
252
- keyPemFile?: string;
253
- keyPemPass?: string;
254
- bindAddress?: string;
255
- connectionTimeout?: number; // milliseconds
256
- maxMessageSize?: number;
257
- }
258
-
259
- export class WebSocketServer {
260
- constructor(config?: WebSocketServerConfiguration);
261
- port(): number;
262
- stop(): void;
263
- onClient(cb: (ws: WebSocket) => void): void;
264
- }
265
-
266
- export class PeerConnection {
267
- constructor(peerName: string, config: RtcConfig);
268
- close(): void;
269
- setLocalDescription(type?: DescriptionType): void;
270
- setRemoteDescription(sdp: string, type: DescriptionType): void;
271
- localDescription(): { type: string; sdp: string } | null;
272
- remoteDescription(): { type: string; sdp: string } | null;
273
- addRemoteCandidate(candidate: string, mid: string): void;
274
- createDataChannel(label: string, config?: DataChannelInitConfig): DataChannel;
275
- addTrack(media: Video | Audio): Track;
276
- hasMedia(): boolean;
277
- state(): RTCPeerConnectionState;
278
- iceState(): RTCIceConnectionState;
279
- signalingState(): RTCSignalingState;
280
- gatheringState(): RTCIceGatheringState;
281
- onLocalDescription(cb: (sdp: string, type: DescriptionType) => void): void;
282
- onLocalCandidate(cb: (candidate: string, mid: string) => void): void;
283
- onStateChange(cb: (state: string) => void): void;
284
- onIceStateChange(cb: (state: string) => void): void;
285
- onSignalingStateChange(cb: (state: string) => void): void;
286
- onGatheringStateChange(cb: (state: string) => void): void;
287
- onDataChannel(cb: (dc: DataChannel) => void): void;
288
- onTrack(cb: (track: Track) => void): void;
289
- bytesSent(): number;
290
- bytesReceived(): number;
291
- rtt(): number;
292
- getSelectedCandidatePair(): { local: SelectedCandidateInfo; remote: SelectedCandidateInfo } | null;
293
- maxDataChannelId(): number;
294
- maxMessageSize(): number;
295
- }
296
-
297
- export class DataChannelStream extends stream.Duplex {
298
- constructor(rawChannel: DataChannel, options?: Omit<stream.DuplexOptions, 'objectMode'>);
299
- get label(): string;
300
- }
package/lib/index.d.ts DELETED
@@ -1,300 +0,0 @@
1
- import * as stream from 'stream';
2
-
3
- export as namespace NodeDataChannel;
4
-
5
- // Enum in d.ts is tricky
6
- export type LogLevel = 'Verbose' | 'Debug' | 'Info' | 'Warning' | 'Error' | 'Fatal';
7
-
8
- // SCTP Settings
9
- export interface SctpSettings {
10
- recvBufferSize?: number;
11
- sendBufferSize?: number;
12
- maxChunksOnQueue?: number;
13
- initialCongestionWindow?: number;
14
- congestionControlModule?: number;
15
- delayedSackTime?: number;
16
- }
17
-
18
- // Functions
19
- export function preload(): void;
20
- export function initLogger(level: LogLevel, callback?: (level: LogLevel, message: string) => void): void;
21
- export function cleanup(): void;
22
- export function setSctpSettings(settings: SctpSettings): void;
23
-
24
- // Proxy Server
25
- export type ProxyServerType = 'Socks5' | 'Http';
26
- export interface ProxyServer {
27
- type: ProxyServerType;
28
- ip: string;
29
- port: number;
30
- username?: string;
31
- password?: string;
32
- }
33
-
34
- export const enum RelayType {
35
- TurnUdp = 'TurnUdp',
36
- TurnTcp = 'TurnTcp',
37
- TurnTls = 'TurnTls',
38
- }
39
-
40
- export interface IceServer {
41
- hostname: string;
42
- port: number;
43
- username?: string;
44
- password?: string;
45
- relayType?: RelayType;
46
- }
47
-
48
- export type TransportPolicy = 'all' | 'relay';
49
-
50
- export interface RtcConfig {
51
- iceServers: (string | IceServer)[];
52
- proxyServer?: ProxyServer;
53
- bindAddress?: string;
54
- enableIceTcp?: boolean;
55
- enableIceUdpMux?: boolean;
56
- disableAutoNegotiation?: boolean;
57
- forceMediaTransport?: boolean;
58
- portRangeBegin?: number;
59
- portRangeEnd?: number;
60
- maxMessageSize?: number;
61
- mtu?: number;
62
- iceTransportPolicy?: TransportPolicy;
63
- }
64
-
65
- // Lowercase to match the description type string from libdatachannel
66
- export enum DescriptionType {
67
- Unspec = 'unspec',
68
- Offer = 'offer',
69
- Answer = 'answer',
70
- Pranswer = 'pranswer',
71
- Rollback = 'rollback',
72
- }
73
-
74
- export interface DataChannelInitConfig {
75
- protocol?: string;
76
- negotiated?: boolean;
77
- id?: number;
78
- unordered?: boolean; // Reliability
79
- maxPacketLifeTime?: number; // Reliability
80
- maxRetransmits?: number; // Reliability
81
- }
82
-
83
- export interface SelectedCandidateInfo {
84
- address: string;
85
- port: number;
86
- type: string;
87
- transportType: string;
88
- candidate: string;
89
- mid: string;
90
- priority: number;
91
- }
92
-
93
- // Must be same as rtc enum class Direction
94
- export const enum Direction {
95
- SendOnly = 'SendOnly',
96
- RecvOnly = 'RecvOnly',
97
- SendRecv = 'SendRecv',
98
- Inactive = 'Inactive',
99
- Unknown = 'Unknown',
100
- }
101
-
102
- export class RtcpReceivingSession {
103
- //
104
- }
105
-
106
- export class Audio {
107
- constructor(mid: string, dir: Direction);
108
- addAudioCodec(payloadType: number, codec: string, profile?: string): void;
109
- addOpusCodec(payloadType: number, profile?: string): string;
110
-
111
- direction(): Direction;
112
- generateSdp(eol: string, addr: string, port: number): string;
113
- mid(): string;
114
- setDirection(dir: Direction): void;
115
- description(): string;
116
- removeFormat(fmt: string): void;
117
- addSSRC(ssrc: number, name?: string, msid?: string, trackID?: string): void;
118
- removeSSRC(ssrc: number): void;
119
- replaceSSRC(oldSsrc: number, ssrc: number, name?: string, msid?: string, trackID?: string): void;
120
- hasSSRC(ssrc: number): boolean;
121
- getSSRCs(): number[];
122
- getCNameForSsrc(ssrc: number): string;
123
- setBitrate(bitRate: number): void;
124
- getBitrate(): number;
125
- hasPayloadType(payloadType: number): boolean;
126
- addRTXCodec(payloadType: number, originalPayloadType: number, clockRate: number): void;
127
- addRTPMap(): void;
128
- parseSdpLine(line: string): void;
129
- }
130
-
131
- export class Video {
132
- constructor(mid: string, dir: Direction);
133
- addVideoCodec(payloadType: number, codec: string, profile?: string): void;
134
- addH264Codec(payloadType: number, profile?: string): void;
135
- addVP8Codec(payloadType: number): void;
136
- addVP9Codec(payloadType: number): void;
137
-
138
- direction(): Direction;
139
- generateSdp(eol: string, addr: string, port: number): string;
140
- mid(): string;
141
- setDirection(dir: Direction): void;
142
- description(): string;
143
- removeFormat(fmt: string): void;
144
- addSSRC(ssrc: number, name?: string, msid?: string, trackID?: string): void;
145
- removeSSRC(ssrc: number): void;
146
- replaceSSRC(oldSsrc: number, ssrc: number, name?: string, msid?: string, trackID?: string): void;
147
- hasSSRC(ssrc: number): boolean;
148
- getSSRCs(): number[];
149
- getCNameForSsrc(ssrc: number): string;
150
- setBitrate(bitRate: number): void;
151
- getBitrate(): number;
152
- hasPayloadType(payloadType: number): boolean;
153
- addRTXCodec(payloadType: number, originalPayloadType: number, clockRate: number): void;
154
- addRTPMap(): void;
155
- parseSdpLine(line: string): void;
156
- }
157
-
158
- export class Track {
159
- direction(): Direction;
160
- mid(): string;
161
- type(): string;
162
- close(): void;
163
- sendMessage(msg: string): boolean;
164
- sendMessageBinary(buffer: Buffer): boolean;
165
- isOpen(): boolean;
166
- isClosed(): boolean;
167
- bufferedAmount(): number;
168
- maxMessageSize(): number;
169
- requestBitrate(bitRate: number): boolean;
170
- setBufferedAmountLowThreshold(newSize: number): void;
171
- requestKeyframe(): boolean;
172
- setMediaHandler(handler: RtcpReceivingSession): void;
173
- onOpen(cb: () => void): void;
174
- onClosed(cb: () => void): void;
175
- onError(cb: (err: string) => void): void;
176
- onMessage(cb: (msg: Buffer) => void): void;
177
- }
178
-
179
- export interface Channel {
180
- close(): void;
181
- sendMessage(msg: string): boolean;
182
- sendMessageBinary(buffer: Uint8Array): boolean;
183
- isOpen(): boolean;
184
- bufferedAmount(): number;
185
- maxMessageSize(): number;
186
- setBufferedAmountLowThreshold(newSize: number): void;
187
- onOpen(cb: () => void): void;
188
- onClosed(cb: () => void): void;
189
- onError(cb: (err: string) => void): void;
190
- onBufferedAmountLow(cb: () => void): void;
191
- onMessage(cb: (msg: string | Buffer) => void): void;
192
- }
193
- export class DataChannel implements Channel {
194
- getLabel(): string;
195
- getId(): number;
196
- getProtocol(): string;
197
-
198
- // Channel implementation
199
- close(): void;
200
- sendMessage(msg: string): boolean;
201
- sendMessageBinary(buffer: Uint8Array): boolean;
202
- isOpen(): boolean;
203
- bufferedAmount(): number;
204
- maxMessageSize(): number;
205
- setBufferedAmountLowThreshold(newSize: number): void;
206
- onOpen(cb: () => void): void;
207
- onClosed(cb: () => void): void;
208
- onError(cb: (err: string) => void): void;
209
- onBufferedAmountLow(cb: () => void): void;
210
- onMessage(cb: (msg: string | Buffer) => void): void;
211
- }
212
-
213
- export interface WebSocketConfiguration {
214
- disableTlsVerification?: boolean; // default = false, if true, don't verify the TLS certificate
215
- proxyServer?: ProxyServer; // only non-authenticated http supported for now
216
- protocols?: string[];
217
- connectionTimeout?: number; // miliseconds, zero to disable
218
- pingInterval?: number; // millisecondrs, zero to disable
219
- maxOutstandingPings?: number;
220
- caCertificatePemFile?: string;
221
- certificatePemFile?: string;
222
- keyPemFile?: string;
223
- keyPemPass?: string;
224
- maxMessageSize: number;
225
- }
226
- export class WebSocket implements Channel {
227
- constructor(config?: WebSocketConfiguration);
228
- open(url: string): void;
229
- forceClose(): void;
230
- remoteAddress(): string | undefined;
231
- path(): string | undefined;
232
-
233
- // Channel implementation
234
- close(): void;
235
- sendMessage(msg: string): boolean;
236
- sendMessageBinary(buffer: Uint8Array): boolean;
237
- isOpen(): boolean;
238
- bufferedAmount(): number;
239
- maxMessageSize(): number;
240
- setBufferedAmountLowThreshold(newSize: number): void;
241
- onOpen(cb: () => void): void;
242
- onClosed(cb: () => void): void;
243
- onError(cb: (err: string) => void): void;
244
- onBufferedAmountLow(cb: () => void): void;
245
- onMessage(cb: (msg: string | Buffer) => void): void;
246
- }
247
-
248
- export interface WebSocketServerConfiguration {
249
- port?: number; // default 8080
250
- enableTls?: boolean; // default = false;
251
- certificatePemFile?: string;
252
- keyPemFile?: string;
253
- keyPemPass?: string;
254
- bindAddress?: string;
255
- connectionTimeout?: number; // milliseconds
256
- maxMessageSize?: number;
257
- }
258
-
259
- export class WebSocketServer {
260
- constructor(config?: WebSocketServerConfiguration);
261
- port(): number;
262
- stop(): void;
263
- onClient(cb: (ws: WebSocket) => void): void;
264
- }
265
-
266
- export class PeerConnection {
267
- constructor(peerName: string, config: RtcConfig);
268
- close(): void;
269
- setLocalDescription(type?: DescriptionType): void;
270
- setRemoteDescription(sdp: string, type: DescriptionType): void;
271
- localDescription(): { type: string; sdp: string } | null;
272
- remoteDescription(): { type: string; sdp: string } | null;
273
- addRemoteCandidate(candidate: string, mid: string): void;
274
- createDataChannel(label: string, config?: DataChannelInitConfig): DataChannel;
275
- addTrack(media: Video | Audio): Track;
276
- hasMedia(): boolean;
277
- state(): RTCPeerConnectionState;
278
- iceState(): RTCIceConnectionState;
279
- signalingState(): RTCSignalingState;
280
- gatheringState(): RTCIceGatheringState;
281
- onLocalDescription(cb: (sdp: string, type: DescriptionType) => void): void;
282
- onLocalCandidate(cb: (candidate: string, mid: string) => void): void;
283
- onStateChange(cb: (state: string) => void): void;
284
- onIceStateChange(cb: (state: string) => void): void;
285
- onSignalingStateChange(cb: (state: string) => void): void;
286
- onGatheringStateChange(cb: (state: string) => void): void;
287
- onDataChannel(cb: (dc: DataChannel) => void): void;
288
- onTrack(cb: (track: Track) => void): void;
289
- bytesSent(): number;
290
- bytesReceived(): number;
291
- rtt(): number;
292
- getSelectedCandidatePair(): { local: SelectedCandidateInfo; remote: SelectedCandidateInfo } | null;
293
- maxDataChannelId(): number;
294
- maxMessageSize(): number;
295
- }
296
-
297
- export class DataChannelStream extends stream.Duplex {
298
- constructor(rawChannel: DataChannel, options?: Omit<stream.DuplexOptions, 'objectMode'>);
299
- get label(): string;
300
- }
package/lib/index.js DELETED
@@ -1,58 +0,0 @@
1
- import nodeDataChannel from './node-datachannel.js';
2
- import DataChannelStream from './datachannel-stream.js';
3
- import WebSocketServer from './websocket-server.js';
4
-
5
- const {
6
- initLogger,
7
- cleanup,
8
- preload,
9
- setSctpSettings,
10
- RtcpReceivingSession,
11
- Track,
12
- Video,
13
- Audio,
14
- DataChannel,
15
- PeerConnection,
16
- WebSocket,
17
- } = nodeDataChannel;
18
-
19
- export const DescriptionType = {
20
- Unspec: 'unspec',
21
- Offer: 'offer',
22
- Answer: 'answer',
23
- Pranswer: 'pranswer',
24
- Rollback: 'rollback',
25
- };
26
-
27
- export {
28
- initLogger,
29
- cleanup,
30
- preload,
31
- setSctpSettings,
32
- RtcpReceivingSession,
33
- Track,
34
- Video,
35
- Audio,
36
- DataChannel,
37
- PeerConnection,
38
- WebSocket,
39
- WebSocketServer,
40
- // Extra exports
41
- DataChannelStream,
42
- };
43
-
44
- export default {
45
- initLogger,
46
- cleanup,
47
- preload,
48
- setSctpSettings,
49
- RtcpReceivingSession,
50
- Track,
51
- Video,
52
- Audio,
53
- DataChannel,
54
- PeerConnection,
55
- WebSocket,
56
- WebSocketServer,
57
- DataChannelStream,
58
- };
@@ -1,7 +0,0 @@
1
- // createRequire is native in node version >= 12
2
- import { createRequire } from 'module';
3
- const require = createRequire(import.meta.url);
4
-
5
- const nodeDataChannel = require('../build/Release/node_datachannel.node');
6
-
7
- export default nodeDataChannel;
@@ -1,9 +0,0 @@
1
- /// <reference lib="dom" />
2
-
3
- export class RTCPeerConnectionIceEvent extends Event {
4
- readonly candidate: RTCIceCandidate | null;
5
- }
6
-
7
- export class RTCDataChannelEvent extends Event {
8
- readonly channel: RTCDataChannel | null;
9
- }
@@ -1,29 +0,0 @@
1
- export class RTCPeerConnectionIceEvent extends Event {
2
- #candidate;
3
-
4
- constructor(candidate) {
5
- super('icecandidate');
6
-
7
- this.#candidate = candidate;
8
- }
9
-
10
- get candidate() {
11
- return this.#candidate;
12
- }
13
- }
14
-
15
- export class RTCDataChannelEvent extends Event {
16
- #channel;
17
-
18
- constructor(type, eventInitDict) {
19
- super(type);
20
-
21
- if (type && !eventInitDict.channel) throw new TypeError('channel member is required');
22
-
23
- this.#channel = eventInitDict?.channel;
24
- }
25
-
26
- get channel() {
27
- return this.#channel;
28
- }
29
- }