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,417 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ require('node-domexception');
6
+ var index = require('../lib/index.cjs');
7
+ var RTCSessionDescription = require('./RTCSessionDescription.cjs');
8
+ var RTCDataChannel = require('./RTCDataChannel.cjs');
9
+ var RTCIceCandidate = require('./RTCIceCandidate.cjs');
10
+ var Events = require('./Events.cjs');
11
+ var RTCSctpTransport = require('./RTCSctpTransport.cjs');
12
+ var Exception = require('./Exception.cjs');
13
+
14
+ var __defProp = Object.defineProperty;
15
+ var __typeError = (msg) => {
16
+ throw TypeError(msg);
17
+ };
18
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
19
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
20
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
21
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
22
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
23
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
24
+ var __privateWrapper = (obj, member, setter, getter) => ({
25
+ set _(value) {
26
+ __privateSet(obj, member, value);
27
+ },
28
+ get _() {
29
+ return __privateGet(obj, member, getter);
30
+ }
31
+ });
32
+ var _peerConnection, _localOffer, _localAnswer, _dataChannels, _dataChannelsClosed, _config, _canTrickleIceCandidates, _sctp, _localCandidates, _remoteCandidates;
33
+ class RTCPeerConnection extends EventTarget {
34
+ constructor(config = { iceServers: [], iceTransportPolicy: "all" }) {
35
+ super();
36
+ __privateAdd(this, _peerConnection);
37
+ __privateAdd(this, _localOffer);
38
+ __privateAdd(this, _localAnswer);
39
+ __privateAdd(this, _dataChannels);
40
+ __privateAdd(this, _dataChannelsClosed, 0);
41
+ __privateAdd(this, _config);
42
+ __privateAdd(this, _canTrickleIceCandidates);
43
+ __privateAdd(this, _sctp);
44
+ __privateAdd(this, _localCandidates, []);
45
+ __privateAdd(this, _remoteCandidates, []);
46
+ // events
47
+ __publicField(this, "onconnectionstatechange");
48
+ __publicField(this, "ondatachannel");
49
+ __publicField(this, "onicecandidate");
50
+ __publicField(this, "onicecandidateerror");
51
+ __publicField(this, "oniceconnectionstatechange");
52
+ __publicField(this, "onicegatheringstatechange");
53
+ __publicField(this, "onnegotiationneeded");
54
+ __publicField(this, "onsignalingstatechange");
55
+ __publicField(this, "ontrack");
56
+ this._checkConfiguration(config);
57
+ __privateSet(this, _config, config);
58
+ __privateSet(this, _localOffer, createDeferredPromise());
59
+ __privateSet(this, _localAnswer, createDeferredPromise());
60
+ __privateSet(this, _dataChannels, /* @__PURE__ */ new Set());
61
+ __privateSet(this, _canTrickleIceCandidates, null);
62
+ try {
63
+ const peerIdentity = config?.peerIdentity ?? `peer-${getRandomString(7)}`;
64
+ __privateSet(this, _peerConnection, new index.PeerConnection(
65
+ peerIdentity,
66
+ {
67
+ ...config,
68
+ iceServers: config?.iceServers?.map((server) => {
69
+ const urls = Array.isArray(server.urls) ? server.urls : [server.urls];
70
+ return urls.map((url) => {
71
+ if (server.username && server.credential) {
72
+ const [protocol, rest] = url.split(/:(.*)/);
73
+ return `${protocol}:${server.username}:${server.credential}@${rest}`;
74
+ }
75
+ return url;
76
+ });
77
+ }).flat() ?? []
78
+ }
79
+ ));
80
+ } catch (error) {
81
+ if (!error || !error.message) throw new Exception.NotFoundError("Unknown error");
82
+ throw new Exception.SyntaxError(error.message);
83
+ }
84
+ __privateGet(this, _peerConnection).onStateChange(() => {
85
+ this.dispatchEvent(new Event("connectionstatechange"));
86
+ });
87
+ __privateGet(this, _peerConnection).onIceStateChange(() => {
88
+ this.dispatchEvent(new Event("iceconnectionstatechange"));
89
+ });
90
+ __privateGet(this, _peerConnection).onSignalingStateChange(() => {
91
+ this.dispatchEvent(new Event("signalingstatechange"));
92
+ });
93
+ __privateGet(this, _peerConnection).onGatheringStateChange(() => {
94
+ this.dispatchEvent(new Event("icegatheringstatechange"));
95
+ });
96
+ __privateGet(this, _peerConnection).onDataChannel((channel) => {
97
+ const dc = new RTCDataChannel.default(channel);
98
+ __privateGet(this, _dataChannels).add(dc);
99
+ this.dispatchEvent(new Events.RTCDataChannelEvent("datachannel", { channel: dc }));
100
+ });
101
+ __privateGet(this, _peerConnection).onLocalDescription((sdp, type) => {
102
+ if (type === "offer") {
103
+ __privateGet(this, _localOffer).resolve({ sdp, type });
104
+ }
105
+ if (type === "answer") {
106
+ __privateGet(this, _localAnswer).resolve({ sdp, type });
107
+ }
108
+ });
109
+ __privateGet(this, _peerConnection).onLocalCandidate((candidate, sdpMid) => {
110
+ if (sdpMid === "unspec") {
111
+ __privateGet(this, _localAnswer).reject(new Error(`Invalid description type ${sdpMid}`));
112
+ return;
113
+ }
114
+ __privateGet(this, _localCandidates).push(new RTCIceCandidate.default({ candidate, sdpMid }));
115
+ this.dispatchEvent(new Events.RTCPeerConnectionIceEvent(new RTCIceCandidate.default({ candidate, sdpMid })));
116
+ });
117
+ this.addEventListener("connectionstatechange", (e) => {
118
+ if (this.onconnectionstatechange) this.onconnectionstatechange(e);
119
+ });
120
+ this.addEventListener("signalingstatechange", (e) => {
121
+ if (this.onsignalingstatechange) this.onsignalingstatechange(e);
122
+ });
123
+ this.addEventListener("iceconnectionstatechange", (e) => {
124
+ if (this.oniceconnectionstatechange) this.oniceconnectionstatechange(e);
125
+ });
126
+ this.addEventListener("icegatheringstatechange", (e) => {
127
+ if (this.onicegatheringstatechange) this.onicegatheringstatechange(e);
128
+ });
129
+ this.addEventListener("datachannel", (e) => {
130
+ if (this.ondatachannel) this.ondatachannel(e);
131
+ });
132
+ this.addEventListener("icecandidate", (e) => {
133
+ if (this.onicecandidate) this.onicecandidate(e);
134
+ });
135
+ __privateSet(this, _sctp, new RTCSctpTransport.default({
136
+ pc: this,
137
+ extraFunctions: {
138
+ maxDataChannelId: () => {
139
+ return __privateGet(this, _peerConnection).maxDataChannelId();
140
+ },
141
+ maxMessageSize: () => {
142
+ return __privateGet(this, _peerConnection).maxMessageSize();
143
+ },
144
+ localCandidates: () => {
145
+ return __privateGet(this, _localCandidates);
146
+ },
147
+ remoteCandidates: () => {
148
+ return __privateGet(this, _remoteCandidates);
149
+ },
150
+ selectedCandidatePair: () => {
151
+ return __privateGet(this, _peerConnection).getSelectedCandidatePair();
152
+ }
153
+ }
154
+ }));
155
+ }
156
+ static async generateCertificate() {
157
+ throw new DOMException("Not implemented");
158
+ }
159
+ _checkConfiguration(config) {
160
+ if (config && config.iceServers === void 0) config.iceServers = [];
161
+ if (config && config.iceTransportPolicy === void 0) config.iceTransportPolicy = "all";
162
+ if (config?.iceServers === null) throw new TypeError("IceServers cannot be null");
163
+ if (Array.isArray(config?.iceServers)) {
164
+ for (let i = 0; i < config.iceServers.length; i++) {
165
+ if (config.iceServers[i] === null) throw new TypeError("IceServers cannot be null");
166
+ if (config.iceServers[i] === void 0) throw new TypeError("IceServers cannot be undefined");
167
+ if (Object.keys(config.iceServers[i]).length === 0) throw new TypeError("IceServers cannot be empty");
168
+ if (typeof config.iceServers[i].urls === "string")
169
+ config.iceServers[i].urls = [config.iceServers[i].urls];
170
+ if (config.iceServers[i].urls?.some((url) => url == ""))
171
+ throw new Exception.SyntaxError("IceServers urls cannot be empty");
172
+ if (config.iceServers[i].urls?.some(
173
+ (url) => {
174
+ try {
175
+ const parsedURL = new URL(url);
176
+ return !/^(stun:|turn:|turns:)$/.test(parsedURL.protocol);
177
+ } catch (error) {
178
+ return true;
179
+ }
180
+ }
181
+ ))
182
+ throw new Exception.SyntaxError("IceServers urls wrong format");
183
+ if (config.iceServers[i].urls?.some((url) => url.startsWith("turn"))) {
184
+ if (!config.iceServers[i].username)
185
+ throw new Exception.InvalidAccessError("IceServers username cannot be null");
186
+ if (!config.iceServers[i].credential)
187
+ throw new Exception.InvalidAccessError("IceServers username cannot be undefined");
188
+ }
189
+ if (config.iceServers[i].urls?.length === 0)
190
+ throw new Exception.SyntaxError("IceServers urls cannot be empty");
191
+ }
192
+ }
193
+ if (config && config.iceTransportPolicy && config.iceTransportPolicy !== "all" && config.iceTransportPolicy !== "relay")
194
+ throw new TypeError('IceTransportPolicy must be either "all" or "relay"');
195
+ }
196
+ setConfiguration(config) {
197
+ this._checkConfiguration(config);
198
+ __privateSet(this, _config, config);
199
+ }
200
+ get canTrickleIceCandidates() {
201
+ return __privateGet(this, _canTrickleIceCandidates);
202
+ }
203
+ get connectionState() {
204
+ return __privateGet(this, _peerConnection).state();
205
+ }
206
+ get iceConnectionState() {
207
+ let state = __privateGet(this, _peerConnection).iceState();
208
+ if (state == "completed") state = "connected";
209
+ return state;
210
+ }
211
+ get iceGatheringState() {
212
+ return __privateGet(this, _peerConnection).gatheringState();
213
+ }
214
+ get currentLocalDescription() {
215
+ return new RTCSessionDescription.default(__privateGet(this, _peerConnection).localDescription());
216
+ }
217
+ get currentRemoteDescription() {
218
+ return new RTCSessionDescription.default(__privateGet(this, _peerConnection).remoteDescription());
219
+ }
220
+ get localDescription() {
221
+ return new RTCSessionDescription.default(__privateGet(this, _peerConnection).localDescription());
222
+ }
223
+ get pendingLocalDescription() {
224
+ return new RTCSessionDescription.default(__privateGet(this, _peerConnection).localDescription());
225
+ }
226
+ get pendingRemoteDescription() {
227
+ return new RTCSessionDescription.default(__privateGet(this, _peerConnection).remoteDescription());
228
+ }
229
+ get remoteDescription() {
230
+ return new RTCSessionDescription.default(__privateGet(this, _peerConnection).remoteDescription());
231
+ }
232
+ get sctp() {
233
+ return __privateGet(this, _sctp);
234
+ }
235
+ get signalingState() {
236
+ return __privateGet(this, _peerConnection).signalingState();
237
+ }
238
+ async addIceCandidate(candidate) {
239
+ if (!candidate || !candidate.candidate) {
240
+ return;
241
+ }
242
+ if (candidate.sdpMid === null && candidate.sdpMLineIndex === null) {
243
+ throw new TypeError("sdpMid must be set");
244
+ }
245
+ if (candidate.sdpMid === void 0 && candidate.sdpMLineIndex == void 0) {
246
+ throw new TypeError("sdpMid must be set");
247
+ }
248
+ if (candidate.sdpMid && candidate.sdpMid.length > 3) {
249
+ throw new Exception.OperationError("Invalid sdpMid format");
250
+ }
251
+ if (!candidate.sdpMid && candidate.sdpMLineIndex > 1) {
252
+ throw new Exception.OperationError("This is only for test case.");
253
+ }
254
+ try {
255
+ __privateGet(this, _peerConnection).addRemoteCandidate(candidate.candidate, candidate.sdpMid || "0");
256
+ __privateGet(this, _remoteCandidates).push(
257
+ new RTCIceCandidate.default({ candidate: candidate.candidate, sdpMid: candidate.sdpMid || "0" })
258
+ );
259
+ } catch (error) {
260
+ if (!error || !error.message) throw new Exception.NotFoundError("Unknown error");
261
+ if (error.message.includes("remote candidate without remote description"))
262
+ throw new Exception.InvalidStateError(error.message);
263
+ if (error.message.includes("Invalid candidate format")) throw new Exception.OperationError(error.message);
264
+ throw new Exception.NotFoundError(error.message);
265
+ }
266
+ }
267
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
268
+ addTrack(_track, ..._streams) {
269
+ throw new DOMException("Not implemented");
270
+ }
271
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
272
+ addTransceiver(_trackOrKind, _init) {
273
+ throw new DOMException("Not implemented");
274
+ }
275
+ close() {
276
+ __privateGet(this, _dataChannels).forEach((channel) => {
277
+ channel.close();
278
+ __privateWrapper(this, _dataChannelsClosed)._++;
279
+ });
280
+ __privateGet(this, _peerConnection).close();
281
+ }
282
+ createAnswer() {
283
+ return __privateGet(this, _localAnswer);
284
+ }
285
+ createDataChannel(label, opts = {}) {
286
+ const channel = __privateGet(this, _peerConnection).createDataChannel(label, opts);
287
+ const dataChannel = new RTCDataChannel.default(channel, opts);
288
+ __privateGet(this, _dataChannels).add(dataChannel);
289
+ dataChannel.addEventListener("close", () => {
290
+ __privateGet(this, _dataChannels).delete(dataChannel);
291
+ __privateWrapper(this, _dataChannelsClosed)._++;
292
+ });
293
+ return dataChannel;
294
+ }
295
+ createOffer() {
296
+ return __privateGet(this, _localOffer);
297
+ }
298
+ getConfiguration() {
299
+ return __privateGet(this, _config);
300
+ }
301
+ getReceivers() {
302
+ throw new DOMException("Not implemented");
303
+ }
304
+ getSenders() {
305
+ throw new DOMException("Not implemented");
306
+ }
307
+ getStats() {
308
+ return new Promise((resolve) => {
309
+ const report = /* @__PURE__ */ new Map();
310
+ const cp = __privateGet(this, _peerConnection).getSelectedCandidatePair();
311
+ const bytesSent = __privateGet(this, _peerConnection).bytesSent();
312
+ const bytesReceived = __privateGet(this, _peerConnection).bytesReceived();
313
+ const rtt = __privateGet(this, _peerConnection).rtt();
314
+ const localIdRs = getRandomString(8);
315
+ const localId = "RTCIceCandidate_" + localIdRs;
316
+ report.set(localId, {
317
+ id: localId,
318
+ type: "local-candidate",
319
+ timestamp: Date.now(),
320
+ candidateType: cp.local.type,
321
+ ip: cp.local.address,
322
+ port: cp.local.port
323
+ });
324
+ const remoteIdRs = getRandomString(8);
325
+ const remoteId = "RTCIceCandidate_" + remoteIdRs;
326
+ report.set(remoteId, {
327
+ id: remoteId,
328
+ type: "remote-candidate",
329
+ timestamp: Date.now(),
330
+ candidateType: cp.remote.type,
331
+ ip: cp.remote.address,
332
+ port: cp.remote.port
333
+ });
334
+ const candidateId = "RTCIceCandidatePair_" + localIdRs + "_" + remoteIdRs;
335
+ report.set(candidateId, {
336
+ id: candidateId,
337
+ type: "candidate-pair",
338
+ timestamp: Date.now(),
339
+ localCandidateId: localId,
340
+ remoteCandidateId: remoteId,
341
+ state: "succeeded",
342
+ nominated: true,
343
+ writable: true,
344
+ bytesSent,
345
+ bytesReceived,
346
+ totalRoundTripTime: rtt,
347
+ currentRoundTripTime: rtt
348
+ });
349
+ const transportId = "RTCTransport_0_1";
350
+ report.set(transportId, {
351
+ id: transportId,
352
+ timestamp: Date.now(),
353
+ type: "transport",
354
+ bytesSent,
355
+ bytesReceived,
356
+ dtlsState: "connected",
357
+ selectedCandidatePairId: candidateId,
358
+ selectedCandidatePairChanges: 1
359
+ });
360
+ report.set("P", {
361
+ id: "P",
362
+ type: "peer-connection",
363
+ timestamp: Date.now(),
364
+ dataChannelsOpened: __privateGet(this, _dataChannels).size,
365
+ dataChannelsClosed: __privateGet(this, _dataChannelsClosed)
366
+ });
367
+ return resolve(report);
368
+ });
369
+ }
370
+ getTransceivers() {
371
+ return [];
372
+ }
373
+ removeTrack() {
374
+ throw new DOMException("Not implemented");
375
+ }
376
+ restartIce() {
377
+ throw new DOMException("Not implemented");
378
+ }
379
+ async setLocalDescription(description) {
380
+ if (description?.type !== "offer") {
381
+ return;
382
+ }
383
+ __privateGet(this, _peerConnection).setLocalDescription(description?.type);
384
+ }
385
+ async setRemoteDescription(description) {
386
+ if (description.sdp == null) {
387
+ throw new DOMException("Remote SDP must be set");
388
+ }
389
+ __privateGet(this, _peerConnection).setRemoteDescription(description.sdp, description.type);
390
+ }
391
+ }
392
+ _peerConnection = new WeakMap();
393
+ _localOffer = new WeakMap();
394
+ _localAnswer = new WeakMap();
395
+ _dataChannels = new WeakMap();
396
+ _dataChannelsClosed = new WeakMap();
397
+ _config = new WeakMap();
398
+ _canTrickleIceCandidates = new WeakMap();
399
+ _sctp = new WeakMap();
400
+ _localCandidates = new WeakMap();
401
+ _remoteCandidates = new WeakMap();
402
+ function createDeferredPromise() {
403
+ let resolve, reject;
404
+ const promise = new Promise(function(_resolve, _reject) {
405
+ resolve = _resolve;
406
+ reject = _reject;
407
+ });
408
+ promise.resolve = resolve;
409
+ promise.reject = reject;
410
+ return promise;
411
+ }
412
+ function getRandomString(length) {
413
+ return Math.random().toString(36).substring(2, 2 + length);
414
+ }
415
+
416
+ exports.default = RTCPeerConnection;
417
+ //# sourceMappingURL=RTCPeerConnection.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RTCPeerConnection.cjs","sources":["../../../src/polyfill/RTCPeerConnection.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport 'node-domexception';\nimport { SelectedCandidateInfo } from '../lib/types';\nimport { PeerConnection } from '../lib/index';\nimport RTCSessionDescription from './RTCSessionDescription';\nimport RTCDataChannel from './RTCDataChannel';\nimport RTCIceCandidate from './RTCIceCandidate';\nimport { RTCDataChannelEvent, RTCPeerConnectionIceEvent } from './Events';\nimport RTCSctpTransport from './RTCSctpTransport';\nimport * as exceptions from './Exception';\nimport RTCCertificate from './RTCCertificate';\n\n// extend RTCConfiguration with peerIdentity\ninterface RTCConfiguration extends globalThis.RTCConfiguration {\n peerIdentity?: string;\n}\n\nexport default class RTCPeerConnection extends EventTarget implements globalThis.RTCPeerConnection {\n static async generateCertificate(): Promise<RTCCertificate> {\n throw new DOMException('Not implemented');\n }\n\n #peerConnection: PeerConnection;\n #localOffer: any;\n #localAnswer: any;\n #dataChannels: Set<RTCDataChannel>;\n #dataChannelsClosed = 0;\n #config: RTCConfiguration;\n #canTrickleIceCandidates: boolean | null;\n #sctp: RTCSctpTransport;\n\n #localCandidates: RTCIceCandidate[] = [];\n #remoteCandidates: RTCIceCandidate[] = [];\n\n // events\n onconnectionstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;\n ondatachannel: ((this: RTCPeerConnection, ev: RTCDataChannelEvent) => any) | null;\n onicecandidate: ((this: RTCPeerConnection, ev: RTCPeerConnectionIceEvent) => any) | null;\n onicecandidateerror: ((this: RTCPeerConnection, ev: Event) => any) | null;\n oniceconnectionstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;\n onicegatheringstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;\n onnegotiationneeded: ((this: RTCPeerConnection, ev: Event) => any) | null;\n onsignalingstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;\n ontrack: ((this: RTCPeerConnection, ev: globalThis.RTCTrackEvent) => any) | null;\n\n private _checkConfiguration(config: RTCConfiguration): void {\n if (config && config.iceServers === undefined) config.iceServers = [];\n if (config && config.iceTransportPolicy === undefined) config.iceTransportPolicy = 'all';\n\n if (config?.iceServers === null) throw new TypeError('IceServers cannot be null');\n\n // Check for all the properties of iceServers\n if (Array.isArray(config?.iceServers)) {\n for (let i = 0; i < config.iceServers.length; i++) {\n if (config.iceServers[i] === null) throw new TypeError('IceServers cannot be null');\n if (config.iceServers[i] === undefined) throw new TypeError('IceServers cannot be undefined');\n if (Object.keys(config.iceServers[i]).length === 0) throw new TypeError('IceServers cannot be empty');\n\n // If iceServers is string convert to array\n if (typeof config.iceServers[i].urls === 'string')\n config.iceServers[i].urls = [config.iceServers[i].urls as string];\n\n // urls can not be empty\n if ((config.iceServers[i].urls as string[])?.some((url) => url == ''))\n throw new exceptions.SyntaxError('IceServers urls cannot be empty');\n\n // urls should be valid URLs and match the protocols \"stun:|turn:|turns:\"\n if (\n (config.iceServers[i].urls as string[])?.some(\n (url) => {\n try {\n const parsedURL = new URL(url)\n\n return !/^(stun:|turn:|turns:)$/.test(parsedURL.protocol)\n } catch (error) {\n return true\n }\n },\n )\n )\n throw new exceptions.SyntaxError('IceServers urls wrong format');\n\n // If this is a turn server check for username and credential\n if ((config.iceServers[i].urls as string[])?.some((url) => url.startsWith('turn'))) {\n if (!config.iceServers[i].username)\n throw new exceptions.InvalidAccessError('IceServers username cannot be null');\n if (!config.iceServers[i].credential)\n throw new exceptions.InvalidAccessError('IceServers username cannot be undefined');\n }\n\n // length of urls can not be 0\n if (config.iceServers[i].urls?.length === 0)\n throw new exceptions.SyntaxError('IceServers urls cannot be empty');\n }\n }\n\n if (\n config &&\n config.iceTransportPolicy &&\n config.iceTransportPolicy !== 'all' &&\n config.iceTransportPolicy !== 'relay'\n )\n throw new TypeError('IceTransportPolicy must be either \"all\" or \"relay\"');\n }\n\n setConfiguration(config: RTCConfiguration): void {\n this._checkConfiguration(config);\n this.#config = config;\n }\n\n\n\n constructor(config: RTCConfiguration = { iceServers: [], iceTransportPolicy: 'all' }) {\n super();\n\n this._checkConfiguration(config);\n this.#config = config;\n this.#localOffer = createDeferredPromise();\n this.#localAnswer = createDeferredPromise();\n this.#dataChannels = new Set();\n this.#canTrickleIceCandidates = null;\n\n try {\n const peerIdentity = (config as any)?.peerIdentity ?? `peer-${getRandomString(7)}`;\n this.#peerConnection = new PeerConnection(peerIdentity,\n {\n ...config,\n iceServers:\n config?.iceServers\n ?.map((server) => {\n const urls = Array.isArray(server.urls) ? server.urls : [server.urls];\n\n return urls.map((url) => {\n if (server.username && server.credential) {\n const [protocol, rest] = url.split(/:(.*)/);\n return `${protocol}:${server.username}:${server.credential}@${rest}`;\n }\n return url;\n });\n })\n .flat() ?? [],\n },\n );\n } catch (error) {\n if (!error || !error.message) throw new exceptions.NotFoundError('Unknown error');\n throw new exceptions.SyntaxError(error.message);\n }\n\n // forward peerConnection events\n this.#peerConnection.onStateChange(() => {\n this.dispatchEvent(new Event('connectionstatechange'));\n });\n\n this.#peerConnection.onIceStateChange(() => {\n this.dispatchEvent(new Event('iceconnectionstatechange'));\n });\n\n this.#peerConnection.onSignalingStateChange(() => {\n this.dispatchEvent(new Event('signalingstatechange'));\n });\n\n this.#peerConnection.onGatheringStateChange(() => {\n this.dispatchEvent(new Event('icegatheringstatechange'));\n });\n\n this.#peerConnection.onDataChannel((channel) => {\n const dc = new RTCDataChannel(channel);\n this.#dataChannels.add(dc);\n this.dispatchEvent(new RTCDataChannelEvent('datachannel', { channel: dc }));\n });\n\n this.#peerConnection.onLocalDescription((sdp, type) => {\n if (type === 'offer') {\n this.#localOffer.resolve({ sdp, type });\n }\n\n if (type === 'answer') {\n this.#localAnswer.resolve({ sdp, type });\n }\n });\n\n this.#peerConnection.onLocalCandidate((candidate, sdpMid) => {\n if (sdpMid === 'unspec') {\n this.#localAnswer.reject(new Error(`Invalid description type ${sdpMid}`));\n return;\n }\n\n this.#localCandidates.push(new RTCIceCandidate({ candidate, sdpMid }));\n this.dispatchEvent(new RTCPeerConnectionIceEvent(new RTCIceCandidate({ candidate, sdpMid })));\n });\n\n // forward events to properties\n this.addEventListener('connectionstatechange', (e) => {\n if (this.onconnectionstatechange) this.onconnectionstatechange(e);\n });\n this.addEventListener('signalingstatechange', (e) => {\n if (this.onsignalingstatechange) this.onsignalingstatechange(e);\n });\n this.addEventListener('iceconnectionstatechange', (e) => {\n if (this.oniceconnectionstatechange) this.oniceconnectionstatechange(e);\n });\n this.addEventListener('icegatheringstatechange', (e) => {\n if (this.onicegatheringstatechange) this.onicegatheringstatechange(e);\n });\n this.addEventListener('datachannel', (e) => {\n if (this.ondatachannel) this.ondatachannel(e as RTCDataChannelEvent);\n });\n this.addEventListener('icecandidate', (e) => {\n if (this.onicecandidate) this.onicecandidate(e as RTCPeerConnectionIceEvent);\n });\n\n this.#sctp = new RTCSctpTransport({\n pc: this,\n extraFunctions: {\n maxDataChannelId: (): number => {\n return this.#peerConnection.maxDataChannelId();\n },\n maxMessageSize: (): number => {\n return this.#peerConnection.maxMessageSize();\n },\n localCandidates: (): RTCIceCandidate[] => {\n return this.#localCandidates;\n },\n remoteCandidates: (): RTCIceCandidate[] => {\n return this.#remoteCandidates;\n },\n selectedCandidatePair: (): { local: SelectedCandidateInfo; remote: SelectedCandidateInfo } | null => {\n return this.#peerConnection.getSelectedCandidatePair();\n },\n },\n });\n }\n\n get canTrickleIceCandidates(): boolean | null {\n return this.#canTrickleIceCandidates;\n }\n\n get connectionState(): globalThis.RTCPeerConnectionState {\n return this.#peerConnection.state();\n }\n\n get iceConnectionState(): globalThis.RTCIceConnectionState {\n let state = this.#peerConnection.iceState();\n // libdatachannel uses 'completed' instead of 'connected'\n // see /webrtc/getstats.html\n if (state == 'completed') state = 'connected';\n return state;\n }\n\n get iceGatheringState(): globalThis.RTCIceGatheringState {\n return this.#peerConnection.gatheringState();\n }\n\n get currentLocalDescription(): RTCSessionDescription {\n return new RTCSessionDescription(this.#peerConnection.localDescription() as any);\n }\n\n get currentRemoteDescription(): RTCSessionDescription {\n return new RTCSessionDescription(this.#peerConnection.remoteDescription() as any);\n }\n\n get localDescription(): RTCSessionDescription {\n return new RTCSessionDescription(this.#peerConnection.localDescription() as any);\n }\n\n get pendingLocalDescription(): RTCSessionDescription {\n return new RTCSessionDescription(this.#peerConnection.localDescription() as any);\n }\n\n get pendingRemoteDescription(): RTCSessionDescription {\n return new RTCSessionDescription(this.#peerConnection.remoteDescription() as any);\n }\n\n get remoteDescription(): RTCSessionDescription {\n return new RTCSessionDescription(this.#peerConnection.remoteDescription() as any);\n }\n\n get sctp(): RTCSctpTransport {\n return this.#sctp;\n }\n\n get signalingState(): globalThis.RTCSignalingState {\n return this.#peerConnection.signalingState();\n }\n\n async addIceCandidate(candidate?: globalThis.RTCIceCandidateInit | RTCIceCandidate): Promise<void> {\n if (!candidate || !candidate.candidate) {\n return;\n }\n\n if (candidate.sdpMid === null && candidate.sdpMLineIndex === null) {\n throw new TypeError('sdpMid must be set');\n }\n\n if (candidate.sdpMid === undefined && candidate.sdpMLineIndex == undefined) {\n throw new TypeError('sdpMid must be set');\n }\n\n // Reject if sdpMid format is not valid\n // ??\n if (candidate.sdpMid && candidate.sdpMid.length > 3) {\n // console.log(candidate.sdpMid);\n throw new exceptions.OperationError('Invalid sdpMid format');\n }\n\n // We don't care about sdpMLineIndex, just for test\n if (!candidate.sdpMid && candidate.sdpMLineIndex > 1) {\n throw new exceptions.OperationError('This is only for test case.');\n }\n\n try {\n this.#peerConnection.addRemoteCandidate(candidate.candidate, candidate.sdpMid || '0');\n this.#remoteCandidates.push(\n new RTCIceCandidate({ candidate: candidate.candidate, sdpMid: candidate.sdpMid || '0' }),\n );\n } catch (error) {\n if (!error || !error.message) throw new exceptions.NotFoundError('Unknown error');\n\n // Check error Message if contains specific message\n if (error.message.includes('remote candidate without remote description'))\n throw new exceptions.InvalidStateError(error.message);\n if (error.message.includes('Invalid candidate format')) throw new exceptions.OperationError(error.message);\n\n throw new exceptions.NotFoundError(error.message);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n addTrack(_track, ..._streams): globalThis.RTCRtpSender {\n throw new DOMException('Not implemented');\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n addTransceiver(_trackOrKind, _init): globalThis.RTCRtpTransceiver {\n throw new DOMException('Not implemented');\n }\n\n close(): void {\n // close all channels before shutting down\n this.#dataChannels.forEach((channel) => {\n channel.close();\n this.#dataChannelsClosed++;\n });\n\n this.#peerConnection.close();\n }\n\n createAnswer(): Promise<globalThis.RTCSessionDescriptionInit | any> {\n return this.#localAnswer;\n }\n\n\n createDataChannel(label, opts = {}): RTCDataChannel {\n const channel = this.#peerConnection.createDataChannel(label, opts);\n const dataChannel = new RTCDataChannel(channel, opts);\n\n // ensure we can close all channels when shutting down\n this.#dataChannels.add(dataChannel);\n dataChannel.addEventListener('close', () => {\n this.#dataChannels.delete(dataChannel);\n this.#dataChannelsClosed++;\n });\n\n return dataChannel;\n }\n\n createOffer(): Promise<globalThis.RTCSessionDescriptionInit | any> {\n return this.#localOffer;\n }\n\n getConfiguration(): globalThis.RTCConfiguration {\n return this.#config;\n }\n\n getReceivers(): globalThis.RTCRtpReceiver[] {\n throw new DOMException('Not implemented');\n }\n\n getSenders(): globalThis.RTCRtpSender[] {\n throw new DOMException('Not implemented');\n }\n\n getStats(): Promise<globalThis.RTCStatsReport> {\n return new Promise((resolve) => {\n const report = new Map();\n const cp = this.#peerConnection.getSelectedCandidatePair();\n const bytesSent = this.#peerConnection.bytesSent();\n const bytesReceived = this.#peerConnection.bytesReceived();\n const rtt = this.#peerConnection.rtt();\n\n const localIdRs = getRandomString(8);\n const localId = 'RTCIceCandidate_' + localIdRs;\n report.set(localId, {\n id: localId,\n type: 'local-candidate',\n timestamp: Date.now(),\n candidateType: cp.local.type,\n ip: cp.local.address,\n port: cp.local.port,\n });\n\n const remoteIdRs = getRandomString(8);\n const remoteId = 'RTCIceCandidate_' + remoteIdRs;\n report.set(remoteId, {\n id: remoteId,\n type: 'remote-candidate',\n timestamp: Date.now(),\n candidateType: cp.remote.type,\n ip: cp.remote.address,\n port: cp.remote.port,\n });\n\n const candidateId = 'RTCIceCandidatePair_' + localIdRs + '_' + remoteIdRs;\n report.set(candidateId, {\n id: candidateId,\n type: 'candidate-pair',\n timestamp: Date.now(),\n localCandidateId: localId,\n remoteCandidateId: remoteId,\n state: 'succeeded',\n nominated: true,\n writable: true,\n bytesSent: bytesSent,\n bytesReceived: bytesReceived,\n totalRoundTripTime: rtt,\n currentRoundTripTime: rtt,\n });\n\n const transportId = 'RTCTransport_0_1';\n report.set(transportId, {\n id: transportId,\n timestamp: Date.now(),\n type: 'transport',\n bytesSent: bytesSent,\n bytesReceived: bytesReceived,\n dtlsState: 'connected',\n selectedCandidatePairId: candidateId,\n selectedCandidatePairChanges: 1,\n });\n\n // peer-connection'\n report.set('P', {\n id: 'P',\n type: 'peer-connection',\n timestamp: Date.now(),\n dataChannelsOpened: this.#dataChannels.size,\n dataChannelsClosed: this.#dataChannelsClosed,\n });\n\n return resolve(report);\n });\n }\n\n getTransceivers(): globalThis.RTCRtpTransceiver[] {\n return []; // throw new DOMException('Not implemented');\n }\n\n removeTrack(): void {\n throw new DOMException('Not implemented');\n }\n\n restartIce(): Promise<void> {\n throw new DOMException('Not implemented');\n }\n\n async setLocalDescription(description: globalThis.RTCSessionDescriptionInit): Promise<void> {\n if (description?.type !== 'offer') {\n // any other type causes libdatachannel to throw\n return;\n }\n\n this.#peerConnection.setLocalDescription(description?.type as any);\n }\n\n async setRemoteDescription(description: globalThis.RTCSessionDescriptionInit): Promise<void> {\n if (description.sdp == null) {\n throw new DOMException('Remote SDP must be set');\n }\n\n this.#peerConnection.setRemoteDescription(description.sdp, description.type as any);\n }\n}\n\nfunction createDeferredPromise(): any {\n let resolve: any, reject: any;\n\n const promise = new Promise(function (_resolve, _reject) {\n resolve = _resolve;\n reject = _reject;\n });\n\n (promise as any).resolve = resolve;\n (promise as any).reject = reject;\n return promise;\n}\n\nfunction getRandomString(length): string {\n return Math.random()\n .toString(36)\n .substring(2, 2 + length);\n}\n"],"names":["PeerConnection","exceptions.NotFoundError","exceptions.SyntaxError","RTCDataChannel","RTCDataChannelEvent","RTCIceCandidate","RTCPeerConnectionIceEvent","RTCSctpTransport","exceptions.InvalidAccessError","RTCSessionDescription","exceptions.OperationError","exceptions.InvalidStateError"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,eAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA;AAiBA,MAAqB,0BAA0B,WAAoD,CAAA;AAAA,EA+F/F,WAAA,CAAY,SAA2B,EAAE,UAAA,EAAY,EAAI,EAAA,kBAAA,EAAoB,OAAS,EAAA;AAClF,IAAM,KAAA,EAAA,CAAA;AA3FV,IAAA,YAAA,CAAA,IAAA,EAAA,eAAA,CAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,aAAA,CAAA,CAAA;AACA,IAAsB,YAAA,CAAA,IAAA,EAAA,mBAAA,EAAA,CAAA,CAAA,CAAA;AACtB,IAAA,YAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,wBAAA,CAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAEA,IAAA,YAAA,CAAA,IAAA,EAAA,gBAAA,EAAsC,EAAC,CAAA,CAAA;AACvC,IAAA,YAAA,CAAA,IAAA,EAAA,iBAAA,EAAuC,EAAC,CAAA,CAAA;AAGxC;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,yBAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,eAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,gBAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,qBAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,4BAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,2BAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,qBAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,wBAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;AAwEI,IAAA,IAAA,CAAK,oBAAoB,MAAM,CAAA,CAAA;AAC/B,IAAA,YAAA,CAAA,IAAA,EAAK,OAAU,EAAA,MAAA,CAAA,CAAA;AACf,IAAA,YAAA,CAAA,IAAA,EAAK,aAAc,qBAAsB,EAAA,CAAA,CAAA;AACzC,IAAA,YAAA,CAAA,IAAA,EAAK,cAAe,qBAAsB,EAAA,CAAA,CAAA;AAC1C,IAAK,YAAA,CAAA,IAAA,EAAA,aAAA,sBAAoB,GAAI,EAAA,CAAA,CAAA;AAC7B,IAAA,YAAA,CAAA,IAAA,EAAK,wBAA2B,EAAA,IAAA,CAAA,CAAA;AAEhC,IAAI,IAAA;AACA,MAAA,MAAM,eAAgB,MAAgB,EAAA,YAAA,IAAgB,CAAQ,KAAA,EAAA,eAAA,CAAgB,CAAC,CAAC,CAAA,CAAA,CAAA;AAChF,MAAA,YAAA,CAAA,IAAA,EAAK,iBAAkB,IAAIA,oBAAA;AAAA,QAAe,YAAA;AAAA,QACtC;AAAA,UACI,GAAG,MAAA;AAAA,UACH,UACI,EAAA,MAAA,EAAQ,UACF,EAAA,GAAA,CAAI,CAAC,MAAW,KAAA;AACd,YAAM,MAAA,IAAA,GAAO,KAAM,CAAA,OAAA,CAAQ,MAAO,CAAA,IAAI,IAAI,MAAO,CAAA,IAAA,GAAO,CAAC,MAAA,CAAO,IAAI,CAAA,CAAA;AAEpE,YAAO,OAAA,IAAA,CAAK,GAAI,CAAA,CAAC,GAAQ,KAAA;AACrB,cAAI,IAAA,MAAA,CAAO,QAAY,IAAA,MAAA,CAAO,UAAY,EAAA;AACtC,gBAAA,MAAM,CAAC,QAAU,EAAA,IAAI,CAAI,GAAA,GAAA,CAAI,MAAM,OAAO,CAAA,CAAA;AAC1C,gBAAO,OAAA,CAAA,EAAG,QAAQ,CAAI,CAAA,EAAA,MAAA,CAAO,QAAQ,CAAI,CAAA,EAAA,MAAA,CAAO,UAAU,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA;AAAA,eACtE;AACA,cAAO,OAAA,GAAA,CAAA;AAAA,aACV,CAAA,CAAA;AAAA,WACJ,CAAA,CACA,IAAK,EAAA,IAAK,EAAC;AAAA,SACxB;AAAA,OACJ,CAAA,CAAA;AAAA,aACK,KAAO,EAAA;AACZ,MAAI,IAAA,CAAC,SAAS,CAAC,KAAA,CAAM,SAAe,MAAA,IAAIC,uBAAW,CAAc,eAAe,CAAA,CAAA;AAChF,MAAA,MAAM,IAAIC,qBAAuB,CAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAAA,KAClD;AAGA,IAAK,YAAA,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,cAAc,MAAM;AACrC,MAAA,IAAA,CAAK,aAAc,CAAA,IAAI,KAAM,CAAA,uBAAuB,CAAC,CAAA,CAAA;AAAA,KACxD,CAAA,CAAA;AAED,IAAK,YAAA,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,iBAAiB,MAAM;AACxC,MAAA,IAAA,CAAK,aAAc,CAAA,IAAI,KAAM,CAAA,0BAA0B,CAAC,CAAA,CAAA;AAAA,KAC3D,CAAA,CAAA;AAED,IAAK,YAAA,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,uBAAuB,MAAM;AAC9C,MAAA,IAAA,CAAK,aAAc,CAAA,IAAI,KAAM,CAAA,sBAAsB,CAAC,CAAA,CAAA;AAAA,KACvD,CAAA,CAAA;AAED,IAAK,YAAA,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,uBAAuB,MAAM;AAC9C,MAAA,IAAA,CAAK,aAAc,CAAA,IAAI,KAAM,CAAA,yBAAyB,CAAC,CAAA,CAAA;AAAA,KAC1D,CAAA,CAAA;AAED,IAAK,YAAA,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,aAAc,CAAA,CAAC,OAAY,KAAA;AAC5C,MAAM,MAAA,EAAA,GAAK,IAAIC,sBAAA,CAAe,OAAO,CAAA,CAAA;AACrC,MAAK,YAAA,CAAA,IAAA,EAAA,aAAA,CAAA,CAAc,IAAI,EAAE,CAAA,CAAA;AACzB,MAAK,IAAA,CAAA,aAAA,CAAc,IAAIC,0BAAoB,CAAA,aAAA,EAAe,EAAE,OAAS,EAAA,EAAA,EAAI,CAAC,CAAA,CAAA;AAAA,KAC7E,CAAA,CAAA;AAED,IAAA,YAAA,CAAA,IAAA,EAAK,eAAgB,CAAA,CAAA,kBAAA,CAAmB,CAAC,GAAA,EAAK,IAAS,KAAA;AACnD,MAAA,IAAI,SAAS,OAAS,EAAA;AAClB,QAAA,YAAA,CAAA,IAAA,EAAK,WAAY,CAAA,CAAA,OAAA,CAAQ,EAAE,GAAA,EAAK,MAAM,CAAA,CAAA;AAAA,OAC1C;AAEA,MAAA,IAAI,SAAS,QAAU,EAAA;AACnB,QAAA,YAAA,CAAA,IAAA,EAAK,YAAa,CAAA,CAAA,OAAA,CAAQ,EAAE,GAAA,EAAK,MAAM,CAAA,CAAA;AAAA,OAC3C;AAAA,KACH,CAAA,CAAA;AAED,IAAA,YAAA,CAAA,IAAA,EAAK,eAAgB,CAAA,CAAA,gBAAA,CAAiB,CAAC,SAAA,EAAW,MAAW,KAAA;AACzD,MAAA,IAAI,WAAW,QAAU,EAAA;AACrB,QAAA,YAAA,CAAA,IAAA,EAAK,cAAa,MAAO,CAAA,IAAI,MAAM,CAA4B,yBAAA,EAAA,MAAM,EAAE,CAAC,CAAA,CAAA;AACxE,QAAA,OAAA;AAAA,OACJ;AAEA,MAAK,YAAA,CAAA,IAAA,EAAA,gBAAA,CAAA,CAAiB,KAAK,IAAIC,uBAAA,CAAgB,EAAE,SAAW,EAAA,MAAA,EAAQ,CAAC,CAAA,CAAA;AACrE,MAAK,IAAA,CAAA,aAAA,CAAc,IAAIC,gCAAA,CAA0B,IAAID,uBAAA,CAAgB,EAAE,SAAW,EAAA,MAAA,EAAQ,CAAC,CAAC,CAAA,CAAA;AAAA,KAC/F,CAAA,CAAA;AAGD,IAAK,IAAA,CAAA,gBAAA,CAAiB,uBAAyB,EAAA,CAAC,CAAM,KAAA;AAClD,MAAA,IAAI,IAAK,CAAA,uBAAA,EAA8B,IAAA,CAAA,uBAAA,CAAwB,CAAC,CAAA,CAAA;AAAA,KACnE,CAAA,CAAA;AACD,IAAK,IAAA,CAAA,gBAAA,CAAiB,sBAAwB,EAAA,CAAC,CAAM,KAAA;AACjD,MAAA,IAAI,IAAK,CAAA,sBAAA,EAA6B,IAAA,CAAA,sBAAA,CAAuB,CAAC,CAAA,CAAA;AAAA,KACjE,CAAA,CAAA;AACD,IAAK,IAAA,CAAA,gBAAA,CAAiB,0BAA4B,EAAA,CAAC,CAAM,KAAA;AACrD,MAAA,IAAI,IAAK,CAAA,0BAAA,EAAiC,IAAA,CAAA,0BAAA,CAA2B,CAAC,CAAA,CAAA;AAAA,KACzE,CAAA,CAAA;AACD,IAAK,IAAA,CAAA,gBAAA,CAAiB,yBAA2B,EAAA,CAAC,CAAM,KAAA;AACpD,MAAA,IAAI,IAAK,CAAA,yBAAA,EAAgC,IAAA,CAAA,yBAAA,CAA0B,CAAC,CAAA,CAAA;AAAA,KACvE,CAAA,CAAA;AACD,IAAK,IAAA,CAAA,gBAAA,CAAiB,aAAe,EAAA,CAAC,CAAM,KAAA;AACxC,MAAA,IAAI,IAAK,CAAA,aAAA,EAAoB,IAAA,CAAA,aAAA,CAAc,CAAwB,CAAA,CAAA;AAAA,KACtE,CAAA,CAAA;AACD,IAAK,IAAA,CAAA,gBAAA,CAAiB,cAAgB,EAAA,CAAC,CAAM,KAAA;AACzC,MAAA,IAAI,IAAK,CAAA,cAAA,EAAqB,IAAA,CAAA,cAAA,CAAe,CAA8B,CAAA,CAAA;AAAA,KAC9E,CAAA,CAAA;AAED,IAAK,YAAA,CAAA,IAAA,EAAA,KAAA,EAAQ,IAAIE,wBAAiB,CAAA;AAAA,MAC9B,EAAI,EAAA,IAAA;AAAA,MACJ,cAAgB,EAAA;AAAA,QACZ,kBAAkB,MAAc;AAC5B,UAAO,OAAA,YAAA,CAAA,IAAA,EAAK,iBAAgB,gBAAiB,EAAA,CAAA;AAAA,SACjD;AAAA,QACA,gBAAgB,MAAc;AAC1B,UAAO,OAAA,YAAA,CAAA,IAAA,EAAK,iBAAgB,cAAe,EAAA,CAAA;AAAA,SAC/C;AAAA,QACA,iBAAiB,MAAyB;AACtC,UAAA,OAAO,YAAK,CAAA,IAAA,EAAA,gBAAA,CAAA,CAAA;AAAA,SAChB;AAAA,QACA,kBAAkB,MAAyB;AACvC,UAAA,OAAO,YAAK,CAAA,IAAA,EAAA,iBAAA,CAAA,CAAA;AAAA,SAChB;AAAA,QACA,uBAAuB,MAA8E;AACjG,UAAO,OAAA,YAAA,CAAA,IAAA,EAAK,iBAAgB,wBAAyB,EAAA,CAAA;AAAA,SACzD;AAAA,OACJ;AAAA,KACH,CAAA,CAAA,CAAA;AAAA,GACL;AAAA,EArNA,aAAa,mBAA+C,GAAA;AACxD,IAAM,MAAA,IAAI,aAAa,iBAAiB,CAAA,CAAA;AAAA,GAC5C;AAAA,EAyBQ,oBAAoB,MAAgC,EAAA;AACxD,IAAA,IAAI,UAAU,MAAO,CAAA,UAAA,KAAe,KAAW,CAAA,EAAA,MAAA,CAAO,aAAa,EAAC,CAAA;AACpE,IAAA,IAAI,MAAU,IAAA,MAAA,CAAO,kBAAuB,KAAA,KAAA,CAAA,SAAkB,kBAAqB,GAAA,KAAA,CAAA;AAEnF,IAAA,IAAI,QAAQ,UAAe,KAAA,IAAA,EAAY,MAAA,IAAI,UAAU,2BAA2B,CAAA,CAAA;AAGhF,IAAA,IAAI,KAAM,CAAA,OAAA,CAAQ,MAAQ,EAAA,UAAU,CAAG,EAAA;AACnC,MAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,MAAO,CAAA,UAAA,CAAW,QAAQ,CAAK,EAAA,EAAA;AAC/C,QAAI,IAAA,MAAA,CAAO,WAAW,CAAC,CAAA,KAAM,MAAY,MAAA,IAAI,UAAU,2BAA2B,CAAA,CAAA;AAClF,QAAI,IAAA,MAAA,CAAO,WAAW,CAAC,CAAA,KAAM,QAAiB,MAAA,IAAI,UAAU,gCAAgC,CAAA,CAAA;AAC5F,QAAA,IAAI,MAAO,CAAA,IAAA,CAAK,MAAO,CAAA,UAAA,CAAW,CAAC,CAAC,CAAE,CAAA,MAAA,KAAW,CAAG,EAAA,MAAM,IAAI,SAAA,CAAU,4BAA4B,CAAA,CAAA;AAGpG,QAAA,IAAI,OAAO,MAAA,CAAO,UAAW,CAAA,CAAC,EAAE,IAAS,KAAA,QAAA;AACrC,UAAO,MAAA,CAAA,UAAA,CAAW,CAAC,CAAE,CAAA,IAAA,GAAO,CAAC,MAAO,CAAA,UAAA,CAAW,CAAC,CAAA,CAAE,IAAc,CAAA,CAAA;AAGpE,QAAK,IAAA,MAAA,CAAO,WAAW,CAAC,CAAA,CAAE,MAAmB,IAAK,CAAA,CAAC,GAAQ,KAAA,GAAA,IAAO,EAAE,CAAA;AAChE,UAAM,MAAA,IAAIL,qBAAW,CAAY,iCAAiC,CAAA,CAAA;AAGtE,QAAA,IACK,MAAO,CAAA,UAAA,CAAW,CAAC,CAAA,CAAE,IAAmB,EAAA,IAAA;AAAA,UACrC,CAAC,GAAQ,KAAA;AACL,YAAI,IAAA;AACA,cAAM,MAAA,SAAA,GAAY,IAAI,GAAA,CAAI,GAAG,CAAA,CAAA;AAE7B,cAAA,OAAO,CAAC,wBAAA,CAAyB,IAAK,CAAA,SAAA,CAAU,QAAQ,CAAA,CAAA;AAAA,qBACnD,KAAO,EAAA;AACZ,cAAO,OAAA,IAAA,CAAA;AAAA,aACX;AAAA,WACJ;AAAA,SACJ;AAEA,UAAM,MAAA,IAAIA,qBAAW,CAAY,8BAA8B,CAAA,CAAA;AAGnE,QAAA,IAAK,MAAO,CAAA,UAAA,CAAW,CAAC,CAAA,CAAE,IAAmB,EAAA,IAAA,CAAK,CAAC,GAAA,KAAQ,GAAI,CAAA,UAAA,CAAW,MAAM,CAAC,CAAG,EAAA;AAChF,UAAA,IAAI,CAAC,MAAA,CAAO,UAAW,CAAA,CAAC,CAAE,CAAA,QAAA;AACtB,YAAM,MAAA,IAAIM,4BAAW,CAAmB,oCAAoC,CAAA,CAAA;AAChF,UAAA,IAAI,CAAC,MAAA,CAAO,UAAW,CAAA,CAAC,CAAE,CAAA,UAAA;AACtB,YAAM,MAAA,IAAIA,4BAAW,CAAmB,yCAAyC,CAAA,CAAA;AAAA,SACzF;AAGA,QAAA,IAAI,MAAO,CAAA,UAAA,CAAW,CAAC,CAAA,CAAE,MAAM,MAAW,KAAA,CAAA;AACtC,UAAM,MAAA,IAAIN,qBAAW,CAAY,iCAAiC,CAAA,CAAA;AAAA,OAC1E;AAAA,KACJ;AAEA,IAAA,IACI,UACA,MAAO,CAAA,kBAAA,IACP,OAAO,kBAAuB,KAAA,KAAA,IAC9B,OAAO,kBAAuB,KAAA,OAAA;AAE9B,MAAM,MAAA,IAAI,UAAU,oDAAoD,CAAA,CAAA;AAAA,GAChF;AAAA,EAEA,iBAAiB,MAAgC,EAAA;AAC7C,IAAA,IAAA,CAAK,oBAAoB,MAAM,CAAA,CAAA;AAC/B,IAAA,YAAA,CAAA,IAAA,EAAK,OAAU,EAAA,MAAA,CAAA,CAAA;AAAA,GACnB;AAAA,EA6HA,IAAI,uBAA0C,GAAA;AAC1C,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,wBAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,IAAI,eAAqD,GAAA;AACrD,IAAO,OAAA,YAAA,CAAA,IAAA,EAAK,iBAAgB,KAAM,EAAA,CAAA;AAAA,GACtC;AAAA,EAEA,IAAI,kBAAuD,GAAA;AACvD,IAAI,IAAA,KAAA,GAAQ,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,QAAS,EAAA,CAAA;AAG1C,IAAI,IAAA,KAAA,IAAS,aAAqB,KAAA,GAAA,WAAA,CAAA;AAClC,IAAO,OAAA,KAAA,CAAA;AAAA,GACX;AAAA,EAEA,IAAI,iBAAqD,GAAA;AACrD,IAAO,OAAA,YAAA,CAAA,IAAA,EAAK,iBAAgB,cAAe,EAAA,CAAA;AAAA,GAC/C;AAAA,EAEA,IAAI,uBAAiD,GAAA;AACjD,IAAA,OAAO,IAAIO,6BAAA,CAAsB,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,kBAAyB,CAAA,CAAA;AAAA,GACnF;AAAA,EAEA,IAAI,wBAAkD,GAAA;AAClD,IAAA,OAAO,IAAIA,6BAAA,CAAsB,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,mBAA0B,CAAA,CAAA;AAAA,GACpF;AAAA,EAEA,IAAI,gBAA0C,GAAA;AAC1C,IAAA,OAAO,IAAIA,6BAAA,CAAsB,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,kBAAyB,CAAA,CAAA;AAAA,GACnF;AAAA,EAEA,IAAI,uBAAiD,GAAA;AACjD,IAAA,OAAO,IAAIA,6BAAA,CAAsB,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,kBAAyB,CAAA,CAAA;AAAA,GACnF;AAAA,EAEA,IAAI,wBAAkD,GAAA;AAClD,IAAA,OAAO,IAAIA,6BAAA,CAAsB,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,mBAA0B,CAAA,CAAA;AAAA,GACpF;AAAA,EAEA,IAAI,iBAA2C,GAAA;AAC3C,IAAA,OAAO,IAAIA,6BAAA,CAAsB,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,mBAA0B,CAAA,CAAA;AAAA,GACpF;AAAA,EAEA,IAAI,IAAyB,GAAA;AACzB,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,IAAI,cAA+C,GAAA;AAC/C,IAAO,OAAA,YAAA,CAAA,IAAA,EAAK,iBAAgB,cAAe,EAAA,CAAA;AAAA,GAC/C;AAAA,EAEA,MAAM,gBAAgB,SAA6E,EAAA;AAC/F,IAAA,IAAI,CAAC,SAAA,IAAa,CAAC,SAAA,CAAU,SAAW,EAAA;AACpC,MAAA,OAAA;AAAA,KACJ;AAEA,IAAA,IAAI,SAAU,CAAA,MAAA,KAAW,IAAQ,IAAA,SAAA,CAAU,kBAAkB,IAAM,EAAA;AAC/D,MAAM,MAAA,IAAI,UAAU,oBAAoB,CAAA,CAAA;AAAA,KAC5C;AAEA,IAAA,IAAI,SAAU,CAAA,MAAA,KAAW,KAAa,CAAA,IAAA,SAAA,CAAU,iBAAiB,KAAW,CAAA,EAAA;AACxE,MAAM,MAAA,IAAI,UAAU,oBAAoB,CAAA,CAAA;AAAA,KAC5C;AAIA,IAAA,IAAI,SAAU,CAAA,MAAA,IAAU,SAAU,CAAA,MAAA,CAAO,SAAS,CAAG,EAAA;AAEjD,MAAM,MAAA,IAAIC,wBAAW,CAAe,uBAAuB,CAAA,CAAA;AAAA,KAC/D;AAGA,IAAA,IAAI,CAAC,SAAA,CAAU,MAAU,IAAA,SAAA,CAAU,gBAAgB,CAAG,EAAA;AAClD,MAAM,MAAA,IAAIA,wBAAW,CAAe,6BAA6B,CAAA,CAAA;AAAA,KACrE;AAEA,IAAI,IAAA;AACA,MAAA,YAAA,CAAA,IAAA,EAAK,iBAAgB,kBAAmB,CAAA,SAAA,CAAU,SAAW,EAAA,SAAA,CAAU,UAAU,GAAG,CAAA,CAAA;AACpF,MAAA,YAAA,CAAA,IAAA,EAAK,iBAAkB,CAAA,CAAA,IAAA;AAAA,QACnB,IAAIL,uBAAgB,CAAA,EAAE,SAAW,EAAA,SAAA,CAAU,WAAW,MAAQ,EAAA,SAAA,CAAU,MAAU,IAAA,GAAA,EAAK,CAAA;AAAA,OAC3F,CAAA;AAAA,aACK,KAAO,EAAA;AACZ,MAAI,IAAA,CAAC,SAAS,CAAC,KAAA,CAAM,SAAe,MAAA,IAAIJ,uBAAW,CAAc,eAAe,CAAA,CAAA;AAGhF,MAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,QAAA,CAAS,6CAA6C,CAAA;AACpE,QAAA,MAAM,IAAIU,2BAA6B,CAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AACxD,MAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,QAAA,CAAS,0BAA0B,CAAA,QAAS,IAAID,wBAA0B,CAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAEzG,MAAA,MAAM,IAAIT,uBAAyB,CAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAAA,KACpD;AAAA,GACJ;AAAA;AAAA,EAGA,QAAA,CAAS,WAAW,QAAmC,EAAA;AACnD,IAAM,MAAA,IAAI,aAAa,iBAAiB,CAAA,CAAA;AAAA,GAC5C;AAAA;AAAA,EAGA,cAAA,CAAe,cAAc,KAAqC,EAAA;AAC9D,IAAM,MAAA,IAAI,aAAa,iBAAiB,CAAA,CAAA;AAAA,GAC5C;AAAA,EAEA,KAAc,GAAA;AAEV,IAAK,YAAA,CAAA,IAAA,EAAA,aAAA,CAAA,CAAc,OAAQ,CAAA,CAAC,OAAY,KAAA;AACpC,MAAA,OAAA,CAAQ,KAAM,EAAA,CAAA;AACd,MAAA,gBAAA,CAAA,IAAA,EAAK,mBAAL,CAAA,CAAA,CAAA,EAAA,CAAA;AAAA,KACH,CAAA,CAAA;AAED,IAAA,YAAA,CAAA,IAAA,EAAK,iBAAgB,KAAM,EAAA,CAAA;AAAA,GAC/B;AAAA,EAEA,YAAoE,GAAA;AAChE,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAGA,iBAAkB,CAAA,KAAA,EAAO,IAAO,GAAA,EAAoB,EAAA;AAChD,IAAA,MAAM,OAAU,GAAA,YAAA,CAAA,IAAA,EAAK,eAAgB,CAAA,CAAA,iBAAA,CAAkB,OAAO,IAAI,CAAA,CAAA;AAClE,IAAA,MAAM,WAAc,GAAA,IAAIE,sBAAe,CAAA,OAAA,EAAS,IAAI,CAAA,CAAA;AAGpD,IAAK,YAAA,CAAA,IAAA,EAAA,aAAA,CAAA,CAAc,IAAI,WAAW,CAAA,CAAA;AAClC,IAAY,WAAA,CAAA,gBAAA,CAAiB,SAAS,MAAM;AACxC,MAAK,YAAA,CAAA,IAAA,EAAA,aAAA,CAAA,CAAc,OAAO,WAAW,CAAA,CAAA;AACrC,MAAA,gBAAA,CAAA,IAAA,EAAK,mBAAL,CAAA,CAAA,CAAA,EAAA,CAAA;AAAA,KACH,CAAA,CAAA;AAED,IAAO,OAAA,WAAA,CAAA;AAAA,GACX;AAAA,EAEA,WAAmE,GAAA;AAC/D,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,gBAAgD,GAAA;AAC5C,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,YAA4C,GAAA;AACxC,IAAM,MAAA,IAAI,aAAa,iBAAiB,CAAA,CAAA;AAAA,GAC5C;AAAA,EAEA,UAAwC,GAAA;AACpC,IAAM,MAAA,IAAI,aAAa,iBAAiB,CAAA,CAAA;AAAA,GAC5C;AAAA,EAEA,QAA+C,GAAA;AAC3C,IAAO,OAAA,IAAI,OAAQ,CAAA,CAAC,OAAY,KAAA;AAC5B,MAAM,MAAA,MAAA,uBAAa,GAAI,EAAA,CAAA;AACvB,MAAM,MAAA,EAAA,GAAK,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,wBAAyB,EAAA,CAAA;AACzD,MAAM,MAAA,SAAA,GAAY,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,SAAU,EAAA,CAAA;AACjD,MAAM,MAAA,aAAA,GAAgB,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,aAAc,EAAA,CAAA;AACzD,MAAM,MAAA,GAAA,GAAM,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,GAAI,EAAA,CAAA;AAErC,MAAM,MAAA,SAAA,GAAY,gBAAgB,CAAC,CAAA,CAAA;AACnC,MAAA,MAAM,UAAU,kBAAqB,GAAA,SAAA,CAAA;AACrC,MAAA,MAAA,CAAO,IAAI,OAAS,EAAA;AAAA,QAChB,EAAI,EAAA,OAAA;AAAA,QACJ,IAAM,EAAA,iBAAA;AAAA,QACN,SAAA,EAAW,KAAK,GAAI,EAAA;AAAA,QACpB,aAAA,EAAe,GAAG,KAAM,CAAA,IAAA;AAAA,QACxB,EAAA,EAAI,GAAG,KAAM,CAAA,OAAA;AAAA,QACb,IAAA,EAAM,GAAG,KAAM,CAAA,IAAA;AAAA,OAClB,CAAA,CAAA;AAED,MAAM,MAAA,UAAA,GAAa,gBAAgB,CAAC,CAAA,CAAA;AACpC,MAAA,MAAM,WAAW,kBAAqB,GAAA,UAAA,CAAA;AACtC,MAAA,MAAA,CAAO,IAAI,QAAU,EAAA;AAAA,QACjB,EAAI,EAAA,QAAA;AAAA,QACJ,IAAM,EAAA,kBAAA;AAAA,QACN,SAAA,EAAW,KAAK,GAAI,EAAA;AAAA,QACpB,aAAA,EAAe,GAAG,MAAO,CAAA,IAAA;AAAA,QACzB,EAAA,EAAI,GAAG,MAAO,CAAA,OAAA;AAAA,QACd,IAAA,EAAM,GAAG,MAAO,CAAA,IAAA;AAAA,OACnB,CAAA,CAAA;AAED,MAAM,MAAA,WAAA,GAAc,sBAAyB,GAAA,SAAA,GAAY,GAAM,GAAA,UAAA,CAAA;AAC/D,MAAA,MAAA,CAAO,IAAI,WAAa,EAAA;AAAA,QACpB,EAAI,EAAA,WAAA;AAAA,QACJ,IAAM,EAAA,gBAAA;AAAA,QACN,SAAA,EAAW,KAAK,GAAI,EAAA;AAAA,QACpB,gBAAkB,EAAA,OAAA;AAAA,QAClB,iBAAmB,EAAA,QAAA;AAAA,QACnB,KAAO,EAAA,WAAA;AAAA,QACP,SAAW,EAAA,IAAA;AAAA,QACX,QAAU,EAAA,IAAA;AAAA,QACV,SAAA;AAAA,QACA,aAAA;AAAA,QACA,kBAAoB,EAAA,GAAA;AAAA,QACpB,oBAAsB,EAAA,GAAA;AAAA,OACzB,CAAA,CAAA;AAED,MAAA,MAAM,WAAc,GAAA,kBAAA,CAAA;AACpB,MAAA,MAAA,CAAO,IAAI,WAAa,EAAA;AAAA,QACpB,EAAI,EAAA,WAAA;AAAA,QACJ,SAAA,EAAW,KAAK,GAAI,EAAA;AAAA,QACpB,IAAM,EAAA,WAAA;AAAA,QACN,SAAA;AAAA,QACA,aAAA;AAAA,QACA,SAAW,EAAA,WAAA;AAAA,QACX,uBAAyB,EAAA,WAAA;AAAA,QACzB,4BAA8B,EAAA,CAAA;AAAA,OACjC,CAAA,CAAA;AAGD,MAAA,MAAA,CAAO,IAAI,GAAK,EAAA;AAAA,QACZ,EAAI,EAAA,GAAA;AAAA,QACJ,IAAM,EAAA,iBAAA;AAAA,QACN,SAAA,EAAW,KAAK,GAAI,EAAA;AAAA,QACpB,kBAAA,EAAoB,mBAAK,aAAc,CAAA,CAAA,IAAA;AAAA,QACvC,oBAAoB,YAAK,CAAA,IAAA,EAAA,mBAAA,CAAA;AAAA,OAC5B,CAAA,CAAA;AAED,MAAA,OAAO,QAAQ,MAAM,CAAA,CAAA;AAAA,KACxB,CAAA,CAAA;AAAA,GACL;AAAA,EAEA,eAAkD,GAAA;AAC9C,IAAA,OAAO,EAAC,CAAA;AAAA,GACZ;AAAA,EAEA,WAAoB,GAAA;AAChB,IAAM,MAAA,IAAI,aAAa,iBAAiB,CAAA,CAAA;AAAA,GAC5C;AAAA,EAEA,UAA4B,GAAA;AACxB,IAAM,MAAA,IAAI,aAAa,iBAAiB,CAAA,CAAA;AAAA,GAC5C;AAAA,EAEA,MAAM,oBAAoB,WAAkE,EAAA;AACxF,IAAI,IAAA,WAAA,EAAa,SAAS,OAAS,EAAA;AAE/B,MAAA,OAAA;AAAA,KACJ;AAEA,IAAK,YAAA,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,mBAAoB,CAAA,WAAA,EAAa,IAAW,CAAA,CAAA;AAAA,GACrE;AAAA,EAEA,MAAM,qBAAqB,WAAkE,EAAA;AACzF,IAAI,IAAA,WAAA,CAAY,OAAO,IAAM,EAAA;AACzB,MAAM,MAAA,IAAI,aAAa,wBAAwB,CAAA,CAAA;AAAA,KACnD;AAEA,IAAA,YAAA,CAAA,IAAA,EAAK,eAAgB,CAAA,CAAA,oBAAA,CAAqB,WAAY,CAAA,GAAA,EAAK,YAAY,IAAW,CAAA,CAAA;AAAA,GACtF;AACJ,CAAA;AA3cI,eAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,WAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,YAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,aAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,mBAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,OAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,wBAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,KAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAEA,gBAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,iBAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAmcJ,SAAS,qBAA6B,GAAA;AAClC,EAAA,IAAI,OAAc,EAAA,MAAA,CAAA;AAElB,EAAA,MAAM,OAAU,GAAA,IAAI,OAAQ,CAAA,SAAU,UAAU,OAAS,EAAA;AACrD,IAAU,OAAA,GAAA,QAAA,CAAA;AACV,IAAS,MAAA,GAAA,OAAA,CAAA;AAAA,GACZ,CAAA,CAAA;AAED,EAAC,QAAgB,OAAU,GAAA,OAAA,CAAA;AAC3B,EAAC,QAAgB,MAAS,GAAA,MAAA,CAAA;AAC1B,EAAO,OAAA,OAAA,CAAA;AACX,CAAA;AAEA,SAAS,gBAAgB,MAAgB,EAAA;AACrC,EAAO,OAAA,IAAA,CAAK,QACP,CAAA,QAAA,CAAS,EAAE,CACX,CAAA,SAAA,CAAU,CAAG,EAAA,CAAA,GAAI,MAAM,CAAA,CAAA;AAChC;;;;"}
@@ -0,0 +1,61 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var RTCDtlsTransport = require('./RTCDtlsTransport.cjs');
6
+
7
+ var __defProp = Object.defineProperty;
8
+ var __typeError = (msg) => {
9
+ throw TypeError(msg);
10
+ };
11
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
+ var __publicField = (obj, key, value) => __defNormalProp(obj, key + "" , value);
13
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
14
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
15
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
16
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
17
+ var _pc, _extraFunctions, _transport;
18
+ class RTCSctpTransport extends EventTarget {
19
+ constructor(initial) {
20
+ super();
21
+ __privateAdd(this, _pc, null);
22
+ __privateAdd(this, _extraFunctions, null);
23
+ __privateAdd(this, _transport, null);
24
+ __publicField(this, "onstatechange", null);
25
+ __privateSet(this, _pc, initial.pc);
26
+ __privateSet(this, _extraFunctions, initial.extraFunctions);
27
+ __privateSet(this, _transport, new RTCDtlsTransport.default({ pc: initial.pc, extraFunctions: initial.extraFunctions }));
28
+ __privateGet(this, _pc).addEventListener("connectionstatechange", () => {
29
+ this.dispatchEvent(new Event("statechange"));
30
+ });
31
+ this.addEventListener("statechange", (e) => {
32
+ if (this.onstatechange) this.onstatechange(e);
33
+ });
34
+ }
35
+ get maxChannels() {
36
+ if (this.state !== "connected") return null;
37
+ return __privateGet(this, _pc) ? __privateGet(this, _extraFunctions).maxDataChannelId() : 0;
38
+ }
39
+ get maxMessageSize() {
40
+ if (this.state !== "connected") return null;
41
+ return __privateGet(this, _pc) ? __privateGet(this, _extraFunctions).maxMessageSize() : 0;
42
+ }
43
+ get state() {
44
+ let state = __privateGet(this, _pc).connectionState;
45
+ if (state === "new" || state === "connecting") {
46
+ state = "connecting";
47
+ } else if (state === "disconnected" || state === "failed" || state === "closed") {
48
+ state = "closed";
49
+ }
50
+ return state;
51
+ }
52
+ get transport() {
53
+ return __privateGet(this, _transport);
54
+ }
55
+ }
56
+ _pc = new WeakMap();
57
+ _extraFunctions = new WeakMap();
58
+ _transport = new WeakMap();
59
+
60
+ exports.default = RTCSctpTransport;
61
+ //# sourceMappingURL=RTCSctpTransport.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RTCSctpTransport.cjs","sources":["../../../src/polyfill/RTCSctpTransport.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport RTCDtlsTransport from './RTCDtlsTransport';\nimport RTCPeerConnection from './RTCPeerConnection';\n\nexport default class RTCSctpTransport extends EventTarget implements globalThis.RTCSctpTransport {\n #pc: RTCPeerConnection = null;\n #extraFunctions = null;\n #transport: RTCDtlsTransport = null;\n\n onstatechange: ((this: RTCSctpTransport, ev: Event) => any) | null = null;\n\n constructor(initial: { pc: RTCPeerConnection, extraFunctions }) {\n super();\n this.#pc = initial.pc;\n this.#extraFunctions = initial.extraFunctions;\n\n this.#transport = new RTCDtlsTransport({ pc: initial.pc, extraFunctions: initial.extraFunctions });\n\n // forward peerConnection events\n this.#pc.addEventListener('connectionstatechange', () => {\n this.dispatchEvent(new Event('statechange'));\n });\n\n // forward events to properties\n this.addEventListener('statechange', (e) => {\n if (this.onstatechange) this.onstatechange(e);\n });\n }\n\n get maxChannels(): number | null {\n if (this.state !== 'connected') return null;\n return this.#pc ? this.#extraFunctions.maxDataChannelId() : 0;\n }\n\n get maxMessageSize(): number {\n if (this.state !== 'connected') return null;\n return this.#pc ? this.#extraFunctions.maxMessageSize() : 0;\n }\n\n get state(): globalThis.RTCSctpTransportState {\n // reduce state from new, connecting, connected, disconnected, failed, closed, unknown\n // to RTCSctpTransport states connecting, connected, closed\n let state = this.#pc.connectionState;\n if (state === 'new' || state === 'connecting') {\n state = 'connecting';\n } else if (state === 'disconnected' || state === 'failed' || state === 'closed') {\n state = 'closed';\n }\n return state;\n }\n\n get transport(): RTCDtlsTransport {\n return this.#transport;\n }\n}\n"],"names":["RTCDtlsTransport"],"mappings":";;;;;;;;;;;;;;;;AAAA,IAAA,GAAA,EAAA,eAAA,EAAA,UAAA,CAAA;AAIA,MAAqB,yBAAyB,WAAmD,CAAA;AAAA,EAO7F,YAAY,OAAoD,EAAA;AAC5D,IAAM,KAAA,EAAA,CAAA;AAPV,IAAyB,YAAA,CAAA,IAAA,EAAA,GAAA,EAAA,IAAA,CAAA,CAAA;AACzB,IAAkB,YAAA,CAAA,IAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;AAClB,IAA+B,YAAA,CAAA,IAAA,EAAA,UAAA,EAAA,IAAA,CAAA,CAAA;AAE/B,IAAqE,aAAA,CAAA,IAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;AAIjE,IAAA,YAAA,CAAA,IAAA,EAAK,KAAM,OAAQ,CAAA,EAAA,CAAA,CAAA;AACnB,IAAA,YAAA,CAAA,IAAA,EAAK,iBAAkB,OAAQ,CAAA,cAAA,CAAA,CAAA;AAE/B,IAAK,YAAA,CAAA,IAAA,EAAA,UAAA,EAAa,IAAIA,wBAAA,CAAiB,EAAE,EAAA,EAAI,QAAQ,EAAI,EAAA,cAAA,EAAgB,OAAQ,CAAA,cAAA,EAAgB,CAAA,CAAA,CAAA;AAGjG,IAAK,YAAA,CAAA,IAAA,EAAA,GAAA,CAAA,CAAI,gBAAiB,CAAA,uBAAA,EAAyB,MAAM;AACrD,MAAA,IAAA,CAAK,aAAc,CAAA,IAAI,KAAM,CAAA,aAAa,CAAC,CAAA,CAAA;AAAA,KAC9C,CAAA,CAAA;AAGD,IAAK,IAAA,CAAA,gBAAA,CAAiB,aAAe,EAAA,CAAC,CAAM,KAAA;AACxC,MAAA,IAAI,IAAK,CAAA,aAAA,EAAoB,IAAA,CAAA,aAAA,CAAc,CAAC,CAAA,CAAA;AAAA,KAC/C,CAAA,CAAA;AAAA,GACL;AAAA,EAEA,IAAI,WAA6B,GAAA;AAC7B,IAAI,IAAA,IAAA,CAAK,KAAU,KAAA,WAAA,EAAoB,OAAA,IAAA,CAAA;AACvC,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,GAAA,CAAA,GAAM,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,kBAAqB,GAAA,CAAA,CAAA;AAAA,GAChE;AAAA,EAEA,IAAI,cAAyB,GAAA;AACzB,IAAI,IAAA,IAAA,CAAK,KAAU,KAAA,WAAA,EAAoB,OAAA,IAAA,CAAA;AACvC,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,GAAA,CAAA,GAAM,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA,CAAgB,gBAAmB,GAAA,CAAA,CAAA;AAAA,GAC9D;AAAA,EAEA,IAAI,KAA0C,GAAA;AAG1C,IAAI,IAAA,KAAA,GAAQ,mBAAK,GAAI,CAAA,CAAA,eAAA,CAAA;AACrB,IAAI,IAAA,KAAA,KAAU,KAAS,IAAA,KAAA,KAAU,YAAc,EAAA;AAC3C,MAAQ,KAAA,GAAA,YAAA,CAAA;AAAA,eACD,KAAU,KAAA,cAAA,IAAkB,KAAU,KAAA,QAAA,IAAY,UAAU,QAAU,EAAA;AAC7E,MAAQ,KAAA,GAAA,QAAA,CAAA;AAAA,KACZ;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACX;AAAA,EAEA,IAAI,SAA8B,GAAA;AAC9B,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;AAAA,GAChB;AACJ,CAAA;AAjDI,GAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,eAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,UAAA,GAAA,IAAA,OAAA,EAAA;;;;"}
@@ -0,0 +1,37 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var __typeError = (msg) => {
6
+ throw TypeError(msg);
7
+ };
8
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
9
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
10
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
11
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
12
+ var _type, _sdp;
13
+ class RTCSessionDescription {
14
+ constructor(init) {
15
+ __privateAdd(this, _type);
16
+ __privateAdd(this, _sdp);
17
+ __privateSet(this, _type, init ? init.type : null);
18
+ __privateSet(this, _sdp, init ? init.sdp : null);
19
+ }
20
+ get type() {
21
+ return __privateGet(this, _type);
22
+ }
23
+ get sdp() {
24
+ return __privateGet(this, _sdp);
25
+ }
26
+ toJSON() {
27
+ return {
28
+ sdp: __privateGet(this, _sdp),
29
+ type: __privateGet(this, _type)
30
+ };
31
+ }
32
+ }
33
+ _type = new WeakMap();
34
+ _sdp = new WeakMap();
35
+
36
+ exports.default = RTCSessionDescription;
37
+ //# sourceMappingURL=RTCSessionDescription.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RTCSessionDescription.cjs","sources":["../../../src/polyfill/RTCSessionDescription.ts"],"sourcesContent":["// https://developer.mozilla.org/docs/Web/API/RTCSessionDescription\n//\n// Example usage\n// const init = {\n// type: 'offer',\n// sdp: 'v=0\\r\\no=- 1234567890 1234567890 IN IP4 192.168.1.1\\r\\ns=-\\r\\nt=0 0\\r\\na=ice-ufrag:abcd\\r\\na=ice-pwd:efgh\\r\\n'\n// };\n\nexport default class RTCSessionDescription implements globalThis.RTCSessionDescriptionInit {\n #type: globalThis.RTCSdpType;\n #sdp: string;\n\n constructor(init: globalThis.RTCSessionDescriptionInit) {\n this.#type = init ? init.type : null;\n this.#sdp = init ? init.sdp : null;\n }\n\n get type(): globalThis.RTCSdpType {\n return this.#type;\n }\n\n get sdp(): string {\n return this.#sdp;\n }\n\n toJSON(): globalThis.RTCSessionDescriptionInit {\n return {\n sdp: this.#sdp,\n type: this.#type,\n };\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAAA,IAAA,KAAA,EAAA,IAAA,CAAA;AAQA,MAAqB,qBAAsE,CAAA;AAAA,EAIvF,YAAY,IAA4C,EAAA;AAHxD,IAAA,YAAA,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,IAAA,CAAA,CAAA;AAGI,IAAK,YAAA,CAAA,IAAA,EAAA,KAAA,EAAQ,IAAO,GAAA,IAAA,CAAK,IAAO,GAAA,IAAA,CAAA,CAAA;AAChC,IAAK,YAAA,CAAA,IAAA,EAAA,IAAA,EAAO,IAAO,GAAA,IAAA,CAAK,GAAM,GAAA,IAAA,CAAA,CAAA;AAAA,GAClC;AAAA,EAEA,IAAI,IAA8B,GAAA;AAC9B,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,IAAI,GAAc,GAAA;AACd,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,IAAA,CAAA,CAAA;AAAA,GAChB;AAAA,EAEA,MAA+C,GAAA;AAC3C,IAAO,OAAA;AAAA,MACH,KAAK,YAAK,CAAA,IAAA,EAAA,IAAA,CAAA;AAAA,MACV,MAAM,YAAK,CAAA,IAAA,EAAA,KAAA,CAAA;AAAA,KACf,CAAA;AAAA,GACJ;AACJ,CAAA;AAtBI,KAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AACA,IAAA,GAAA,IAAA,OAAA,EAAA;;;;"}
@@ -0,0 +1,42 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var RTCCertificate = require('./RTCCertificate.cjs');
6
+ var RTCDataChannel = require('./RTCDataChannel.cjs');
7
+ var RTCDtlsTransport = require('./RTCDtlsTransport.cjs');
8
+ var RTCIceCandidate = require('./RTCIceCandidate.cjs');
9
+ var RTCIceTransport = require('./RTCIceTransport.cjs');
10
+ var RTCPeerConnection = require('./RTCPeerConnection.cjs');
11
+ var RTCSctpTransport = require('./RTCSctpTransport.cjs');
12
+ var RTCSessionDescription = require('./RTCSessionDescription.cjs');
13
+ var Events = require('./Events.cjs');
14
+ var RTCError = require('./RTCError.cjs');
15
+
16
+ var p = {
17
+ RTCCertificate: RTCCertificate.default,
18
+ RTCDataChannel: RTCDataChannel.default,
19
+ RTCDtlsTransport: RTCDtlsTransport.default,
20
+ RTCIceCandidate: RTCIceCandidate.default,
21
+ RTCIceTransport: RTCIceTransport.default,
22
+ RTCPeerConnection: RTCPeerConnection.default,
23
+ RTCSctpTransport: RTCSctpTransport.default,
24
+ RTCSessionDescription: RTCSessionDescription.default,
25
+ RTCDataChannelEvent: Events.RTCDataChannelEvent,
26
+ RTCPeerConnectionIceEvent: Events.RTCPeerConnectionIceEvent,
27
+ RTCError: RTCError.default
28
+ };
29
+
30
+ exports.RTCCertificate = RTCCertificate.default;
31
+ exports.RTCDataChannel = RTCDataChannel.default;
32
+ exports.RTCDtlsTransport = RTCDtlsTransport.default;
33
+ exports.RTCIceCandidate = RTCIceCandidate.default;
34
+ exports.RTCIceTransport = RTCIceTransport.default;
35
+ exports.RTCPeerConnection = RTCPeerConnection.default;
36
+ exports.RTCSctpTransport = RTCSctpTransport.default;
37
+ exports.RTCSessionDescription = RTCSessionDescription.default;
38
+ exports.RTCDataChannelEvent = Events.RTCDataChannelEvent;
39
+ exports.RTCPeerConnectionIceEvent = Events.RTCPeerConnectionIceEvent;
40
+ exports.RTCError = RTCError.default;
41
+ exports.default = p;
42
+ //# sourceMappingURL=index.cjs.map