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
@@ -0,0 +1,24 @@
1
+ import * as stream from 'stream';
2
+
3
+ /**
4
+ * Turns a node-datachannel DataChannel into a real Node.js stream, complete with buffering,
5
+ * backpressure (up to a point - if the buffer fills up, messages are dropped), and
6
+ * support for piping data elsewhere.
7
+ *
8
+ * Read & written data may be either UTF-8 strings or Buffers - this difference exists at
9
+ * the protocol level, and is preserved here throughout.
10
+ */
11
+ declare class DataChannelStream extends stream.Duplex {
12
+ private _rawChannel;
13
+ private _readActive;
14
+ constructor(rawChannel: any, streamOptions?: Omit<stream.DuplexOptions, 'objectMode'>);
15
+ _read(): void;
16
+ _write(chunk: any, _encoding: any, callback: any): void;
17
+ _final(callback: any): void;
18
+ _destroy(maybeErr: any, callback: any): void;
19
+ get label(): string;
20
+ get id(): number;
21
+ get protocol(): string;
22
+ }
23
+
24
+ export { DataChannelStream as default };
@@ -0,0 +1,164 @@
1
+ import { LogLevel, SctpSettings, Direction, Channel, DescriptionType, RTCSdpType, DataChannelInitConfig, RTCPeerConnectionState, RTCIceConnectionState, RTCSignalingState, RTCIceGatheringState, SelectedCandidateInfo, RtcConfig, WebSocketServerConfiguration } from './types.js';
2
+ import DataChannelStream$1 from './datachannel-stream.js';
3
+ import { WebSocketServer } from './websocket-server.js';
4
+ import { WebSocket } from './websocket.js';
5
+
6
+ declare function preload(): void;
7
+ declare function initLogger(level: LogLevel): void;
8
+ declare function cleanup(): void;
9
+ declare function setSctpSettings(settings: SctpSettings): void;
10
+ interface Audio {
11
+ addAudioCodec(payloadType: number, codec: string, profile?: string): void;
12
+ addOpusCodec(payloadType: number, profile?: string): string;
13
+ direction(): Direction;
14
+ generateSdp(eol: string, addr: string, port: number): string;
15
+ mid(): string;
16
+ setDirection(dir: Direction): void;
17
+ description(): string;
18
+ removeFormat(fmt: string): void;
19
+ addSSRC(ssrc: number, name?: string, msid?: string, trackID?: string): void;
20
+ removeSSRC(ssrc: number): void;
21
+ replaceSSRC(oldSsrc: number, ssrc: number, name?: string, msid?: string, trackID?: string): void;
22
+ hasSSRC(ssrc: number): boolean;
23
+ getSSRCs(): number[];
24
+ getCNameForSsrc(ssrc: number): string;
25
+ setBitrate(bitRate: number): void;
26
+ getBitrate(): number;
27
+ hasPayloadType(payloadType: number): boolean;
28
+ addRTXCodec(payloadType: number, originalPayloadType: number, clockRate: number): void;
29
+ addRTPMap(): void;
30
+ parseSdpLine(line: string): void;
31
+ }
32
+ declare const Audio: {
33
+ new (mid: string, dir: Direction): Audio;
34
+ };
35
+ interface Video {
36
+ addVideoCodec(payloadType: number, codec: string, profile?: string): void;
37
+ addH264Codec(payloadType: number, profile?: string): void;
38
+ addVP8Codec(payloadType: number): void;
39
+ addVP9Codec(payloadType: number): void;
40
+ direction(): Direction;
41
+ generateSdp(eol: string, addr: string, port: number): string;
42
+ mid(): string;
43
+ setDirection(dir: Direction): void;
44
+ description(): string;
45
+ removeFormat(fmt: string): void;
46
+ addSSRC(ssrc: number, name?: string, msid?: string, trackID?: string): void;
47
+ removeSSRC(ssrc: number): void;
48
+ replaceSSRC(oldSsrc: number, ssrc: number, name?: string, msid?: string, trackID?: string): void;
49
+ hasSSRC(ssrc: number): boolean;
50
+ getSSRCs(): number[];
51
+ getCNameForSsrc(ssrc: number): string;
52
+ setBitrate(bitRate: number): void;
53
+ getBitrate(): number;
54
+ hasPayloadType(payloadType: number): boolean;
55
+ addRTXCodec(payloadType: number, originalPayloadType: number, clockRate: number): void;
56
+ addRTPMap(): void;
57
+ parseSdpLine(line: string): void;
58
+ }
59
+ declare const Video: {
60
+ new (mid: string, dir: Direction): Video;
61
+ };
62
+ interface Track {
63
+ direction(): Direction;
64
+ mid(): string;
65
+ type(): string;
66
+ close(): void;
67
+ sendMessage(msg: string): boolean;
68
+ sendMessageBinary(buffer: Buffer): boolean;
69
+ isOpen(): boolean;
70
+ isClosed(): boolean;
71
+ bufferedAmount(): number;
72
+ maxMessageSize(): number;
73
+ requestBitrate(bitRate: number): boolean;
74
+ setBufferedAmountLowThreshold(newSize: number): void;
75
+ requestKeyframe(): boolean;
76
+ setMediaHandler(handler: RtcpReceivingSession): void;
77
+ onOpen(cb: () => void): void;
78
+ onClosed(cb: () => void): void;
79
+ onError(cb: (err: string) => void): void;
80
+ onMessage(cb: (msg: Buffer) => void): void;
81
+ }
82
+ declare const Track: {
83
+ new (): Track;
84
+ };
85
+ interface DataChannel extends Channel {
86
+ getLabel(): string;
87
+ getId(): number;
88
+ getProtocol(): string;
89
+ close(): void;
90
+ sendMessage(msg: string): boolean;
91
+ sendMessageBinary(buffer: Uint8Array): boolean;
92
+ isOpen(): boolean;
93
+ bufferedAmount(): number;
94
+ maxMessageSize(): number;
95
+ setBufferedAmountLowThreshold(newSize: number): void;
96
+ onOpen(cb: () => void): void;
97
+ onClosed(cb: () => void): void;
98
+ onError(cb: (err: string) => void): void;
99
+ onBufferedAmountLow(cb: () => void): void;
100
+ onMessage(cb: (msg: string | Buffer) => void): void;
101
+ }
102
+ declare const DataChannel: {};
103
+ interface PeerConnection {
104
+ close(): void;
105
+ setLocalDescription(type?: DescriptionType): void;
106
+ setRemoteDescription(sdp: string, type: DescriptionType): void;
107
+ localDescription(): {
108
+ type: DescriptionType;
109
+ sdp: RTCSdpType;
110
+ } | null;
111
+ remoteDescription(): {
112
+ type: DescriptionType;
113
+ sdp: string;
114
+ } | null;
115
+ addRemoteCandidate(candidate: string, mid: string): void;
116
+ createDataChannel(label: string, config?: DataChannelInitConfig): DataChannel;
117
+ addTrack(media: Video | Audio): Track;
118
+ hasMedia(): boolean;
119
+ state(): RTCPeerConnectionState;
120
+ iceState(): RTCIceConnectionState;
121
+ signalingState(): RTCSignalingState;
122
+ gatheringState(): RTCIceGatheringState;
123
+ onLocalDescription(cb: (sdp: string, type: DescriptionType) => void): void;
124
+ onLocalCandidate(cb: (candidate: string, mid: string) => void): void;
125
+ onStateChange(cb: (state: string) => void): void;
126
+ onIceStateChange(cb: (state: string) => void): void;
127
+ onSignalingStateChange(cb: (state: string) => void): void;
128
+ onGatheringStateChange(cb: (state: string) => void): void;
129
+ onDataChannel(cb: (dc: DataChannel) => void): void;
130
+ onTrack(cb: (track: Track) => void): void;
131
+ bytesSent(): number;
132
+ bytesReceived(): number;
133
+ rtt(): number;
134
+ getSelectedCandidatePair(): {
135
+ local: SelectedCandidateInfo;
136
+ remote: SelectedCandidateInfo;
137
+ } | null;
138
+ maxDataChannelId(): number;
139
+ maxMessageSize(): number;
140
+ }
141
+ declare const PeerConnection: {
142
+ new (peerName: string, config: RtcConfig): PeerConnection;
143
+ };
144
+ declare class RtcpReceivingSession {
145
+ }
146
+
147
+ declare const DataChannelStream: typeof DataChannelStream$1;
148
+ declare const _default: {
149
+ initLogger: typeof initLogger;
150
+ cleanup: typeof cleanup;
151
+ preload: typeof preload;
152
+ setSctpSettings: typeof setSctpSettings;
153
+ RtcpReceivingSession: typeof RtcpReceivingSession;
154
+ Track: new () => Track;
155
+ Video: new (mid: string, dir: Direction) => Video;
156
+ Audio: new (mid: string, dir: Direction) => Audio;
157
+ DataChannel: {};
158
+ PeerConnection: new (peerName: string, config: RtcConfig) => PeerConnection;
159
+ WebSocket: new (config?: WebSocketServerConfiguration) => WebSocket;
160
+ WebSocketServer: typeof WebSocketServer;
161
+ DataChannelStream: typeof DataChannelStream$1;
162
+ };
163
+
164
+ export { Audio, DataChannel, DataChannelStream, PeerConnection, RtcpReceivingSession, Track, Video, WebSocket, WebSocketServer, cleanup, _default as default, initLogger, preload, setSctpSettings };
@@ -0,0 +1,106 @@
1
+ interface Channel {
2
+ close(): void;
3
+ sendMessage(msg: string): boolean;
4
+ sendMessageBinary(buffer: Uint8Array): boolean;
5
+ isOpen(): boolean;
6
+ bufferedAmount(): number;
7
+ maxMessageSize(): number;
8
+ setBufferedAmountLowThreshold(newSize: number): void;
9
+ onOpen(cb: () => void): void;
10
+ onClosed(cb: () => void): void;
11
+ onError(cb: (err: string) => void): void;
12
+ onBufferedAmountLow(cb: () => void): void;
13
+ onMessage(cb: (msg: string | Buffer) => void): void;
14
+ }
15
+ interface WebSocketServerConfiguration {
16
+ port?: number;
17
+ enableTls?: boolean;
18
+ certificatePemFile?: string;
19
+ keyPemFile?: string;
20
+ keyPemPass?: string;
21
+ bindAddress?: string;
22
+ connectionTimeout?: number;
23
+ maxMessageSize?: number;
24
+ }
25
+ type LogLevel = 'Verbose' | 'Debug' | 'Info' | 'Warning' | 'Error' | 'Fatal';
26
+ interface SctpSettings {
27
+ recvBufferSize?: number;
28
+ sendBufferSize?: number;
29
+ maxChunksOnQueue?: number;
30
+ initialCongestionWindow?: number;
31
+ congestionControlModule?: number;
32
+ delayedSackTime?: number;
33
+ }
34
+ type ProxyServerType = 'Socks5' | 'Http';
35
+ interface ProxyServer {
36
+ type: ProxyServerType;
37
+ ip: string;
38
+ port: number;
39
+ username?: string;
40
+ password?: string;
41
+ }
42
+ declare const enum RelayType {
43
+ TurnUdp = "TurnUdp",
44
+ TurnTcp = "TurnTcp",
45
+ TurnTls = "TurnTls"
46
+ }
47
+ interface IceServer {
48
+ hostname: string;
49
+ port: number;
50
+ username?: string;
51
+ password?: string;
52
+ relayType?: RelayType;
53
+ }
54
+ type TransportPolicy = 'all' | 'relay';
55
+ interface RtcConfig {
56
+ iceServers: (string | IceServer)[];
57
+ proxyServer?: ProxyServer;
58
+ bindAddress?: string;
59
+ enableIceTcp?: boolean;
60
+ enableIceUdpMux?: boolean;
61
+ disableAutoNegotiation?: boolean;
62
+ forceMediaTransport?: boolean;
63
+ portRangeBegin?: number;
64
+ portRangeEnd?: number;
65
+ maxMessageSize?: number;
66
+ mtu?: number;
67
+ iceTransportPolicy?: TransportPolicy;
68
+ }
69
+ declare enum DescriptionType {
70
+ Unspec = "unspec",
71
+ Offer = "offer",
72
+ Answer = "answer",
73
+ Pranswer = "pranswer",
74
+ Rollback = "rollback"
75
+ }
76
+ type RTCSdpType = 'answer' | 'offer' | 'pranswer' | 'rollback';
77
+ type RTCPeerConnectionState = "closed" | "connected" | "connecting" | "disconnected" | "failed" | "new";
78
+ type RTCIceConnectionState = "checking" | "closed" | "completed" | "connected" | "disconnected" | "failed" | "new";
79
+ type RTCIceGatheringState = "complete" | "gathering" | "new";
80
+ type RTCSignalingState = "closed" | "have-local-offer" | "have-local-pranswer" | "have-remote-offer" | "have-remote-pranswer" | "stable";
81
+ interface DataChannelInitConfig {
82
+ protocol?: string;
83
+ negotiated?: boolean;
84
+ id?: number;
85
+ unordered?: boolean;
86
+ maxPacketLifeTime?: number;
87
+ maxRetransmits?: number;
88
+ }
89
+ interface SelectedCandidateInfo {
90
+ address: string;
91
+ port: number;
92
+ type: string;
93
+ transportType: string;
94
+ candidate: string;
95
+ mid: string;
96
+ priority: number;
97
+ }
98
+ declare const enum Direction {
99
+ SendOnly = "SendOnly",
100
+ RecvOnly = "RecvOnly",
101
+ SendRecv = "SendRecv",
102
+ Inactive = "Inactive",
103
+ Unknown = "Unknown"
104
+ }
105
+
106
+ export { type Channel, type DataChannelInitConfig, DescriptionType, Direction, type IceServer, type LogLevel, type ProxyServer, type ProxyServerType, type RTCIceConnectionState, type RTCIceGatheringState, type RTCPeerConnectionState, type RTCSdpType, type RTCSignalingState, RelayType, type RtcConfig, type SctpSettings, type SelectedCandidateInfo, type TransportPolicy, type WebSocketServerConfiguration };
@@ -0,0 +1,13 @@
1
+ import { EventEmitter } from 'events';
2
+ import { WebSocketServerConfiguration } from './types.js';
3
+ import { WebSocket } from './websocket.js';
4
+
5
+ declare class WebSocketServer extends EventEmitter {
6
+ #private;
7
+ constructor(options: WebSocketServerConfiguration);
8
+ port(): number;
9
+ stop(): void;
10
+ onClient(cb: (clientSocket: WebSocket) => void): void;
11
+ }
12
+
13
+ export { WebSocketServer };
@@ -0,0 +1,25 @@
1
+ import { Channel, WebSocketServerConfiguration } from './types.js';
2
+
3
+ interface WebSocket extends Channel {
4
+ open(url: string): void;
5
+ forceClose(): void;
6
+ remoteAddress(): string | undefined;
7
+ path(): string | undefined;
8
+ close(): void;
9
+ sendMessage(msg: string): boolean;
10
+ sendMessageBinary(buffer: Uint8Array): boolean;
11
+ isOpen(): boolean;
12
+ bufferedAmount(): number;
13
+ maxMessageSize(): number;
14
+ setBufferedAmountLowThreshold(newSize: number): void;
15
+ onOpen(cb: () => void): void;
16
+ onClosed(cb: () => void): void;
17
+ onError(cb: (err: string) => void): void;
18
+ onBufferedAmountLow(cb: () => void): void;
19
+ onMessage(cb: (msg: string | Buffer) => void): void;
20
+ }
21
+ declare const WebSocket: {
22
+ new (config?: WebSocketServerConfiguration): WebSocket;
23
+ };
24
+
25
+ export { WebSocket };
@@ -0,0 +1,15 @@
1
+ import RTCDataChannel from './RTCDataChannel.js';
2
+ import RTCIceCandidate from './RTCIceCandidate.js';
3
+
4
+ declare class RTCPeerConnectionIceEvent extends Event implements globalThis.RTCPeerConnectionIceEvent {
5
+ #private;
6
+ constructor(candidate: RTCIceCandidate);
7
+ get candidate(): RTCIceCandidate;
8
+ }
9
+ declare class RTCDataChannelEvent extends Event implements globalThis.RTCDataChannelEvent {
10
+ #private;
11
+ constructor(type: string, eventInitDict: globalThis.RTCDataChannelEventInit);
12
+ get channel(): RTCDataChannel;
13
+ }
14
+
15
+ export { RTCDataChannelEvent, RTCPeerConnectionIceEvent };
@@ -0,0 +1,8 @@
1
+ declare class RTCCertificate implements globalThis.RTCCertificate {
2
+ #private;
3
+ constructor();
4
+ get expires(): number;
5
+ getFingerprints(): globalThis.RTCDtlsFingerprint[];
6
+ }
7
+
8
+ export { RTCCertificate as default };
@@ -0,0 +1,29 @@
1
+ import { DataChannel } from '../lib/index';
2
+
3
+ declare class RTCDataChannel extends EventTarget implements globalThis.RTCDataChannel {
4
+ #private;
5
+ onbufferedamountlow: ((this: RTCDataChannel, ev: Event) => any) | null;
6
+ onclose: ((this: RTCDataChannel, ev: Event) => any) | null;
7
+ onclosing: ((this: RTCDataChannel, ev: Event) => any) | null;
8
+ onerror: ((this: RTCDataChannel, ev: Event) => any) | null;
9
+ onmessage: ((this: RTCDataChannel, ev: MessageEvent) => any) | null;
10
+ onopen: ((this: RTCDataChannel, ev: Event) => any) | null;
11
+ constructor(dataChannel: DataChannel, opts?: globalThis.RTCDataChannelInit);
12
+ set binaryType(type: BinaryType);
13
+ get binaryType(): BinaryType;
14
+ get bufferedAmount(): number;
15
+ get bufferedAmountLowThreshold(): number;
16
+ set bufferedAmountLowThreshold(value: number);
17
+ get id(): number | null;
18
+ get label(): string;
19
+ get maxPacketLifeTime(): number | null;
20
+ get maxRetransmits(): number | null;
21
+ get negotiated(): boolean;
22
+ get ordered(): boolean;
23
+ get protocol(): string;
24
+ get readyState(): globalThis.RTCDataChannelState;
25
+ send(data: any): void;
26
+ close(): void;
27
+ }
28
+
29
+ export { RTCDataChannel as default };
@@ -0,0 +1,17 @@
1
+ import RTCIceTransport from './RTCIceTransport.js';
2
+ import RTCPeerConnection from './RTCPeerConnection.js';
3
+
4
+ declare class RTCDtlsTransport extends EventTarget implements globalThis.RTCDtlsTransport {
5
+ #private;
6
+ onstatechange: ((this: RTCDtlsTransport, ev: Event) => any) | null;
7
+ onerror: ((this: RTCDtlsTransport, ev: Event) => any) | null;
8
+ constructor(init: {
9
+ pc: RTCPeerConnection;
10
+ extraFunctions: any;
11
+ });
12
+ get iceTransport(): RTCIceTransport;
13
+ get state(): RTCDtlsTransportState;
14
+ getRemoteCertificates(): ArrayBuffer[];
15
+ }
16
+
17
+ export { RTCDtlsTransport as default };
@@ -0,0 +1,16 @@
1
+ declare class RTCError extends DOMException implements globalThis.RTCError {
2
+ #private;
3
+ constructor(init: globalThis.RTCErrorInit, message?: string);
4
+ get errorDetail(): globalThis.RTCErrorDetailType;
5
+ set errorDetail(_value: globalThis.RTCErrorDetailType);
6
+ get receivedAlert(): number | null;
7
+ set receivedAlert(_value: number | null);
8
+ get sctpCauseCode(): number | null;
9
+ set sctpCauseCode(_value: number | null);
10
+ get sdpLineNumber(): number | null;
11
+ set sdpLineNumber(_value: number | null);
12
+ get sentAlert(): number | null;
13
+ set sentAlert(_value: number | null);
14
+ }
15
+
16
+ export { RTCError as default };
@@ -0,0 +1,21 @@
1
+ declare class RTCIceCandidate implements globalThis.RTCIceCandidate {
2
+ #private;
3
+ constructor({ candidate, sdpMLineIndex, sdpMid, usernameFragment }: globalThis.RTCIceCandidateInit);
4
+ get address(): string | null;
5
+ get candidate(): string;
6
+ get component(): globalThis.RTCIceComponent | null;
7
+ get foundation(): string | null;
8
+ get port(): number | null;
9
+ get priority(): number | null;
10
+ get protocol(): globalThis.RTCIceProtocol | null;
11
+ get relatedAddress(): string | null;
12
+ get relatedPort(): number | null;
13
+ get sdpMLineIndex(): number | null;
14
+ get sdpMid(): string | null;
15
+ get tcpType(): globalThis.RTCIceTcpCandidateType | null;
16
+ get type(): globalThis.RTCIceCandidateType | null;
17
+ get usernameFragment(): string | null;
18
+ toJSON(): globalThis.RTCIceCandidateInit;
19
+ }
20
+
21
+ export { RTCIceCandidate as default };
@@ -0,0 +1,24 @@
1
+ import RTCIceCandidate from './RTCIceCandidate.js';
2
+ import RTCPeerConnection from './RTCPeerConnection.js';
3
+
4
+ declare class RTCIceTransport extends EventTarget implements globalThis.RTCIceTransport {
5
+ #private;
6
+ ongatheringstatechange: ((this: RTCIceTransport, ev: Event) => any) | null;
7
+ onselectedcandidatepairchange: ((this: RTCIceTransport, ev: Event) => any) | null;
8
+ onstatechange: ((this: RTCIceTransport, ev: Event) => any) | null;
9
+ constructor(init: {
10
+ pc: RTCPeerConnection;
11
+ extraFunctions: any;
12
+ });
13
+ get component(): globalThis.RTCIceComponent;
14
+ get gatheringState(): globalThis.RTCIceGatheringState;
15
+ get role(): string;
16
+ get state(): globalThis.RTCIceTransportState;
17
+ getLocalCandidates(): RTCIceCandidate[];
18
+ getLocalParameters(): any;
19
+ getRemoteCandidates(): RTCIceCandidate[];
20
+ getRemoteParameters(): any;
21
+ getSelectedCandidatePair(): globalThis.RTCIceCandidatePair | null;
22
+ }
23
+
24
+ export { RTCIceTransport as default };
@@ -0,0 +1,56 @@
1
+ import RTCSessionDescription from './RTCSessionDescription.js';
2
+ import RTCDataChannel from './RTCDataChannel.js';
3
+ import RTCIceCandidate from './RTCIceCandidate.js';
4
+ import { RTCDataChannelEvent, RTCPeerConnectionIceEvent } from './Events.js';
5
+ import RTCSctpTransport from './RTCSctpTransport.js';
6
+ import RTCCertificate from './RTCCertificate.js';
7
+
8
+ interface RTCConfiguration extends globalThis.RTCConfiguration {
9
+ peerIdentity?: string;
10
+ }
11
+ declare class RTCPeerConnection extends EventTarget implements globalThis.RTCPeerConnection {
12
+ #private;
13
+ static generateCertificate(): Promise<RTCCertificate>;
14
+ onconnectionstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;
15
+ ondatachannel: ((this: RTCPeerConnection, ev: RTCDataChannelEvent) => any) | null;
16
+ onicecandidate: ((this: RTCPeerConnection, ev: RTCPeerConnectionIceEvent) => any) | null;
17
+ onicecandidateerror: ((this: RTCPeerConnection, ev: Event) => any) | null;
18
+ oniceconnectionstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;
19
+ onicegatheringstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;
20
+ onnegotiationneeded: ((this: RTCPeerConnection, ev: Event) => any) | null;
21
+ onsignalingstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;
22
+ ontrack: ((this: RTCPeerConnection, ev: globalThis.RTCTrackEvent) => any) | null;
23
+ private _checkConfiguration;
24
+ setConfiguration(config: RTCConfiguration): void;
25
+ constructor(config?: RTCConfiguration);
26
+ get canTrickleIceCandidates(): boolean | null;
27
+ get connectionState(): globalThis.RTCPeerConnectionState;
28
+ get iceConnectionState(): globalThis.RTCIceConnectionState;
29
+ get iceGatheringState(): globalThis.RTCIceGatheringState;
30
+ get currentLocalDescription(): RTCSessionDescription;
31
+ get currentRemoteDescription(): RTCSessionDescription;
32
+ get localDescription(): RTCSessionDescription;
33
+ get pendingLocalDescription(): RTCSessionDescription;
34
+ get pendingRemoteDescription(): RTCSessionDescription;
35
+ get remoteDescription(): RTCSessionDescription;
36
+ get sctp(): RTCSctpTransport;
37
+ get signalingState(): globalThis.RTCSignalingState;
38
+ addIceCandidate(candidate?: globalThis.RTCIceCandidateInit | RTCIceCandidate): Promise<void>;
39
+ addTrack(_track: any, ..._streams: any[]): globalThis.RTCRtpSender;
40
+ addTransceiver(_trackOrKind: any, _init: any): globalThis.RTCRtpTransceiver;
41
+ close(): void;
42
+ createAnswer(): Promise<globalThis.RTCSessionDescriptionInit | any>;
43
+ createDataChannel(label: any, opts?: {}): RTCDataChannel;
44
+ createOffer(): Promise<globalThis.RTCSessionDescriptionInit | any>;
45
+ getConfiguration(): globalThis.RTCConfiguration;
46
+ getReceivers(): globalThis.RTCRtpReceiver[];
47
+ getSenders(): globalThis.RTCRtpSender[];
48
+ getStats(): Promise<globalThis.RTCStatsReport>;
49
+ getTransceivers(): globalThis.RTCRtpTransceiver[];
50
+ removeTrack(): void;
51
+ restartIce(): Promise<void>;
52
+ setLocalDescription(description: globalThis.RTCSessionDescriptionInit): Promise<void>;
53
+ setRemoteDescription(description: globalThis.RTCSessionDescriptionInit): Promise<void>;
54
+ }
55
+
56
+ export { RTCPeerConnection as default };
@@ -0,0 +1,17 @@
1
+ import RTCDtlsTransport from './RTCDtlsTransport.js';
2
+ import RTCPeerConnection from './RTCPeerConnection.js';
3
+
4
+ declare class RTCSctpTransport extends EventTarget implements globalThis.RTCSctpTransport {
5
+ #private;
6
+ onstatechange: ((this: RTCSctpTransport, ev: Event) => any) | null;
7
+ constructor(initial: {
8
+ pc: RTCPeerConnection;
9
+ extraFunctions: any;
10
+ });
11
+ get maxChannels(): number | null;
12
+ get maxMessageSize(): number;
13
+ get state(): globalThis.RTCSctpTransportState;
14
+ get transport(): RTCDtlsTransport;
15
+ }
16
+
17
+ export { RTCSctpTransport as default };
@@ -0,0 +1,9 @@
1
+ declare class RTCSessionDescription implements globalThis.RTCSessionDescriptionInit {
2
+ #private;
3
+ constructor(init: globalThis.RTCSessionDescriptionInit);
4
+ get type(): globalThis.RTCSdpType;
5
+ get sdp(): string;
6
+ toJSON(): globalThis.RTCSessionDescriptionInit;
7
+ }
8
+
9
+ export { RTCSessionDescription as default };
@@ -7,19 +7,7 @@ import RTCPeerConnection from './RTCPeerConnection.js';
7
7
  import RTCSctpTransport from './RTCSctpTransport.js';
8
8
  import RTCSessionDescription from './RTCSessionDescription.js';
9
9
  import { RTCDataChannelEvent, RTCPeerConnectionIceEvent } from './Events.js';
10
-
11
- export {
12
- RTCCertificate,
13
- RTCDataChannel,
14
- RTCDtlsTransport,
15
- RTCIceCandidate,
16
- RTCIceTransport,
17
- RTCPeerConnection,
18
- RTCSctpTransport,
19
- RTCSessionDescription,
20
- RTCDataChannelEvent,
21
- RTCPeerConnectionIceEvent,
22
- };
10
+ import RTCError from './RTCError.js';
23
11
 
24
12
  declare const _default: {
25
13
  RTCCertificate: typeof RTCCertificate;
@@ -32,6 +20,7 @@ declare const _default: {
32
20
  RTCSessionDescription: typeof RTCSessionDescription;
33
21
  RTCDataChannelEvent: typeof RTCDataChannelEvent;
34
22
  RTCPeerConnectionIceEvent: typeof RTCPeerConnectionIceEvent;
23
+ RTCError: typeof RTCError;
35
24
  };
36
25
 
37
- export default _default;
26
+ export { RTCCertificate, RTCDataChannel, RTCDataChannelEvent, RTCDtlsTransport, RTCError, RTCIceCandidate, RTCIceTransport, RTCPeerConnection, RTCPeerConnectionIceEvent, RTCSctpTransport, RTCSessionDescription, _default as default };
package/jest.config.ts ADDED
@@ -0,0 +1,14 @@
1
+ import type { Config } from 'jest';
2
+
3
+ const config: Config = {
4
+ clearMocks: true,
5
+ collectCoverage: false,
6
+ coverageDirectory: "coverage",
7
+ coverageProvider: "v8",
8
+ preset: 'ts-jest',
9
+ testEnvironment: "jest-environment-node",
10
+ testRegex: '(/test/jest-tests/.*|(\\.|/)(test|spec))\\.(m)?ts$',
11
+ testPathIgnorePatterns: ['node_modules', 'multiple-run.test'],
12
+ };
13
+
14
+ export default config;