node-datachannel 0.4.3 → 0.5.0-dev

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 (408) hide show
  1. package/.github/workflows/build-linux.yml +10 -10
  2. package/.github/workflows/build-mac-m1.yml +5 -5
  3. package/.github/workflows/build-mac-x64.yml +5 -5
  4. package/.github/workflows/build-win.yml +11 -8
  5. package/.github/workflows/lint.yml +1 -1
  6. package/.github/workflows/npm-publish-manual.yml +1 -1
  7. package/{.prettierrc.js → .prettierrc.cjs} +1 -0
  8. package/BULDING.md +7 -3
  9. package/CMakeLists.txt +12 -22
  10. package/README.md +37 -33
  11. package/cmake/toolchain/arm64.cmake +1 -1
  12. package/examples/build/Dockerfile +30 -0
  13. package/examples/build/README.md +24 -0
  14. package/examples/client-server/README.md +22 -0
  15. package/examples/client-server/client-benchmark.js +11 -6
  16. package/examples/client-server/client-periodic.js +5 -6
  17. package/examples/client-server/client.js +4 -5
  18. package/examples/client-server/package-lock.json +311 -260
  19. package/examples/client-server/package.json +15 -14
  20. package/examples/client-server/signaling-server.js +1 -2
  21. package/examples/electron-demo/README.md +58 -0
  22. package/examples/electron-demo/forge.config.js +49 -0
  23. package/examples/electron-demo/package-lock.json +16287 -0
  24. package/examples/electron-demo/package.json +43 -0
  25. package/examples/electron-demo/src/index.css +7 -0
  26. package/examples/electron-demo/src/index.html +29 -0
  27. package/examples/electron-demo/src/main.js +53 -0
  28. package/examples/electron-demo/src/node-datachannel.js +123 -0
  29. package/examples/electron-demo/src/preload.js +28 -0
  30. package/examples/electron-demo/src/renderer.js +58 -0
  31. package/examples/electron-demo/webpack.main.config.js +11 -0
  32. package/examples/electron-demo/webpack.renderer.config.js +13 -0
  33. package/examples/electron-demo/webpack.rules.js +35 -0
  34. package/examples/media/README.md +3 -3
  35. package/examples/media/media.js +3 -4
  36. package/examples/simple-peer-usage/main.js +28 -0
  37. package/examples/simple-peer-usage/package-lock.json +317 -0
  38. package/examples/simple-peer-usage/package.json +16 -0
  39. package/lib/datachannel-stream.js +3 -4
  40. package/lib/index.d.ts +7 -4
  41. package/lib/index.js +6 -3
  42. package/node_modules/base64-js/package.json +19 -50
  43. package/node_modules/buffer/package.json +20 -54
  44. package/node_modules/chownr/package.json +16 -53
  45. package/node_modules/decompress-response/package.json +54 -89
  46. package/node_modules/deep-extend/package.json +32 -65
  47. package/node_modules/detect-libc/README.md +4 -1
  48. package/node_modules/detect-libc/index.d.ts +3 -0
  49. package/node_modules/detect-libc/lib/detect-libc.js +105 -4
  50. package/node_modules/detect-libc/lib/filesystem.js +41 -0
  51. package/node_modules/detect-libc/lib/process.js +3 -0
  52. package/node_modules/detect-libc/package.json +25 -60
  53. package/node_modules/end-of-stream/package.json +17 -49
  54. package/node_modules/expand-template/package.json +17 -51
  55. package/node_modules/fs-constants/package.json +11 -42
  56. package/node_modules/github-from-package/package.json +28 -60
  57. package/node_modules/ieee754/package.json +19 -54
  58. package/node_modules/inherits/package.json +12 -61
  59. package/node_modules/ini/package.json +19 -55
  60. package/node_modules/mimic-response/package.json +40 -75
  61. package/node_modules/minimist/.eslintrc +29 -0
  62. package/node_modules/minimist/.github/FUNDING.yml +12 -0
  63. package/node_modules/minimist/.nycrc +14 -0
  64. package/node_modules/minimist/CHANGELOG.md +298 -0
  65. package/node_modules/minimist/{readme.markdown → README.md} +34 -11
  66. package/node_modules/minimist/example/parse.js +2 -0
  67. package/node_modules/minimist/index.js +256 -242
  68. package/node_modules/minimist/package.json +73 -77
  69. package/node_modules/minimist/test/all_bool.js +26 -24
  70. package/node_modules/minimist/test/bool.js +146 -147
  71. package/node_modules/minimist/test/dash.js +33 -21
  72. package/node_modules/minimist/test/default_bool.js +26 -24
  73. package/node_modules/minimist/test/dotted.js +13 -11
  74. package/node_modules/minimist/test/kv_short.js +26 -10
  75. package/node_modules/minimist/test/long.js +28 -26
  76. package/node_modules/minimist/test/num.js +30 -28
  77. package/node_modules/minimist/test/parse.js +169 -157
  78. package/node_modules/minimist/test/parse_modified.js +7 -5
  79. package/node_modules/minimist/test/proto.js +41 -37
  80. package/node_modules/minimist/test/short.js +57 -55
  81. package/node_modules/minimist/test/stop_early.js +10 -8
  82. package/node_modules/minimist/test/unknown.js +83 -81
  83. package/node_modules/minimist/test/whitespace.js +6 -4
  84. package/node_modules/mkdirp-classic/package.json +11 -43
  85. package/node_modules/napi-build-utils/package.json +26 -57
  86. package/node_modules/node-abi/README.md +5 -3
  87. package/node_modules/node-abi/abi_registry.json +98 -8
  88. package/node_modules/node-abi/package.json +26 -57
  89. package/node_modules/once/package.json +14 -55
  90. package/node_modules/prebuild-install/CHANGELOG.md +18 -0
  91. package/node_modules/prebuild-install/README.md +6 -2
  92. package/node_modules/prebuild-install/log.js +26 -18
  93. package/node_modules/prebuild-install/package.json +36 -98
  94. package/node_modules/prebuild-install/rc.js +5 -1
  95. package/node_modules/prebuild-install/util.js +1 -1
  96. package/node_modules/pump/package.json +10 -49
  97. package/node_modules/rc/node_modules/strip-json-comments/package.json +42 -0
  98. package/node_modules/rc/package.json +18 -59
  99. package/node_modules/safe-buffer/index.js +3 -0
  100. package/node_modules/safe-buffer/package.json +20 -39
  101. package/node_modules/{node-abi/node_modules/semver → semver}/README.md +70 -1
  102. package/node_modules/{node-abi/node_modules/semver → semver}/bin/semver.js +16 -2
  103. package/node_modules/{node-abi/node_modules/semver → semver}/classes/comparator.js +39 -34
  104. package/node_modules/{node-abi/node_modules/semver → semver}/classes/range.js +48 -28
  105. package/node_modules/{node-abi/node_modules/semver → semver}/classes/semver.js +32 -17
  106. package/node_modules/{node-abi/node_modules/semver → semver}/functions/coerce.js +1 -1
  107. package/node_modules/semver/functions/diff.js +65 -0
  108. package/node_modules/{node-abi/node_modules/semver → semver}/functions/inc.js +3 -2
  109. package/node_modules/semver/functions/parse.js +16 -0
  110. package/node_modules/semver/index.js +89 -0
  111. package/node_modules/{node-abi/node_modules/semver → semver}/internal/constants.js +20 -2
  112. package/node_modules/semver/internal/parse-options.js +15 -0
  113. package/node_modules/{node-abi/node_modules/semver → semver}/internal/re.js +34 -4
  114. package/node_modules/semver/node_modules/lru-cache/package.json +34 -0
  115. package/node_modules/semver/node_modules/yallist/package.json +29 -0
  116. package/node_modules/semver/package.json +87 -0
  117. package/node_modules/{node-abi/node_modules/semver → semver}/ranges/intersects.js +1 -1
  118. package/node_modules/{node-abi/node_modules/semver → semver}/ranges/subset.js +6 -3
  119. package/node_modules/simple-concat/package.json +17 -45
  120. package/node_modules/simple-get/package.json +17 -45
  121. package/node_modules/{tar-stream → tar-fs}/node_modules/bl/package.json +20 -51
  122. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/README.md +1 -1
  123. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/_stream_duplex.js +12 -25
  124. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/_stream_passthrough.js +2 -4
  125. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/_stream_readable.js +176 -273
  126. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/_stream_transform.js +26 -37
  127. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/_stream_writable.js +118 -174
  128. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/internal/streams/async_iterator.js +10 -37
  129. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/internal/streams/buffer_list.js +20 -47
  130. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/internal/streams/destroy.js +8 -17
  131. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +1 -19
  132. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/internal/streams/from.js +12 -24
  133. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/internal/streams/pipeline.js +5 -16
  134. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/internal/streams/state.js +2 -7
  135. package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/package.json +27 -60
  136. package/node_modules/tar-fs/node_modules/string_decoder/package.json +34 -0
  137. package/node_modules/{tar-stream → tar-fs/node_modules/tar-stream}/extract.js +1 -1
  138. package/node_modules/{tar-stream → tar-fs/node_modules/tar-stream}/headers.js +4 -2
  139. package/node_modules/{tar-stream → tar-fs/node_modules/tar-stream}/package.json +22 -59
  140. package/node_modules/tar-fs/package.json +21 -51
  141. package/node_modules/tunnel-agent/package.json +12 -49
  142. package/node_modules/util-deprecate/package.json +14 -49
  143. package/node_modules/wrappy/package.json +16 -49
  144. package/package.json +85 -68
  145. package/polyfill/Events.d.ts +9 -0
  146. package/polyfill/Events.js +27 -0
  147. package/polyfill/README.md +41 -0
  148. package/polyfill/RTCCertificate.d.ts +7 -0
  149. package/polyfill/RTCCertificate.js +17 -0
  150. package/polyfill/RTCDataChannel.d.ts +35 -0
  151. package/polyfill/RTCDataChannel.js +175 -0
  152. package/polyfill/RTCDtlsTransport.d.ts +10 -0
  153. package/polyfill/RTCDtlsTransport.js +29 -0
  154. package/polyfill/RTCIceCandidate.d.ts +20 -0
  155. package/polyfill/RTCIceCandidate.js +126 -0
  156. package/polyfill/RTCIceTransport.d.ts +18 -0
  157. package/polyfill/RTCIceTransport.js +55 -0
  158. package/polyfill/RTCPeerConnection.d.ts +50 -0
  159. package/polyfill/RTCPeerConnection.js +348 -0
  160. package/polyfill/RTCSctpTransport.d.ts +10 -0
  161. package/polyfill/RTCSctpTransport.js +34 -0
  162. package/polyfill/RTCSessionDescription.d.ts +7 -0
  163. package/polyfill/RTCSessionDescription.js +37 -0
  164. package/polyfill/index.d.ts +14 -0
  165. package/polyfill/index.js +14 -0
  166. package/src/data-channel-wrapper.cpp +47 -6
  167. package/src/main.cpp +5 -5
  168. package/src/peer-connection-wrapper.cpp +141 -9
  169. package/src/peer-connection-wrapper.h +4 -0
  170. package/src/rtc-wrapper.cpp +14 -9
  171. package/src/thread-safe-callback.cpp +4 -10
  172. package/src/thread-safe-callback.h +3 -12
  173. package/test/connectivity.js +9 -4
  174. package/test/polyfill-connectivity.js +89 -0
  175. package/test/test.js +3 -3
  176. package/test/wpt.js +50 -0
  177. package/examples/README.md +0 -21
  178. package/node_modules/ansi-regex/index.js +0 -4
  179. package/node_modules/ansi-regex/package.json +0 -111
  180. package/node_modules/ansi-regex/readme.md +0 -39
  181. package/node_modules/aproba/LICENSE +0 -14
  182. package/node_modules/aproba/README.md +0 -94
  183. package/node_modules/aproba/index.js +0 -105
  184. package/node_modules/aproba/package.json +0 -65
  185. package/node_modules/code-point-at/index.js +0 -32
  186. package/node_modules/code-point-at/license +0 -21
  187. package/node_modules/code-point-at/package.json +0 -73
  188. package/node_modules/code-point-at/readme.md +0 -32
  189. package/node_modules/console-control-strings/LICENSE +0 -13
  190. package/node_modules/console-control-strings/README.md +0 -145
  191. package/node_modules/console-control-strings/README.md~ +0 -140
  192. package/node_modules/console-control-strings/index.js +0 -125
  193. package/node_modules/console-control-strings/package.json +0 -64
  194. package/node_modules/core-util-is/LICENSE +0 -19
  195. package/node_modules/core-util-is/README.md +0 -3
  196. package/node_modules/core-util-is/float.patch +0 -604
  197. package/node_modules/core-util-is/lib/util.js +0 -107
  198. package/node_modules/core-util-is/package.json +0 -70
  199. package/node_modules/core-util-is/test.js +0 -68
  200. package/node_modules/delegates/.npmignore +0 -1
  201. package/node_modules/delegates/History.md +0 -22
  202. package/node_modules/delegates/License +0 -20
  203. package/node_modules/delegates/Makefile +0 -8
  204. package/node_modules/delegates/Readme.md +0 -94
  205. package/node_modules/delegates/index.js +0 -121
  206. package/node_modules/delegates/package.json +0 -53
  207. package/node_modules/delegates/test/index.js +0 -94
  208. package/node_modules/has-unicode/LICENSE +0 -14
  209. package/node_modules/has-unicode/README.md +0 -43
  210. package/node_modules/has-unicode/index.js +0 -16
  211. package/node_modules/has-unicode/package.json +0 -62
  212. package/node_modules/is-fullwidth-code-point/index.js +0 -46
  213. package/node_modules/is-fullwidth-code-point/license +0 -21
  214. package/node_modules/is-fullwidth-code-point/package.json +0 -80
  215. package/node_modules/is-fullwidth-code-point/readme.md +0 -39
  216. package/node_modules/isarray/.npmignore +0 -1
  217. package/node_modules/isarray/.travis.yml +0 -4
  218. package/node_modules/isarray/Makefile +0 -6
  219. package/node_modules/isarray/README.md +0 -60
  220. package/node_modules/isarray/component.json +0 -19
  221. package/node_modules/isarray/index.js +0 -5
  222. package/node_modules/isarray/package.json +0 -77
  223. package/node_modules/isarray/test.js +0 -20
  224. package/node_modules/lru-cache/node_modules/yallist/package.json +0 -65
  225. package/node_modules/lru-cache/package.json +0 -73
  226. package/node_modules/minimist/.travis.yml +0 -8
  227. package/node_modules/node-abi/.circleci/config.yml +0 -63
  228. package/node_modules/node-abi/.github/workflows/update-abi.yml +0 -41
  229. package/node_modules/node-abi/.releaserc.json +0 -9
  230. package/node_modules/node-abi/CODE_OF_CONDUCT.md +0 -73
  231. package/node_modules/node-abi/CONTRIBUTING.md +0 -53
  232. package/node_modules/node-abi/node_modules/semver/functions/diff.js +0 -23
  233. package/node_modules/node-abi/node_modules/semver/functions/parse.js +0 -33
  234. package/node_modules/node-abi/node_modules/semver/index.js +0 -48
  235. package/node_modules/node-abi/node_modules/semver/internal/parse-options.js +0 -11
  236. package/node_modules/node-abi/node_modules/semver/package.json +0 -109
  237. package/node_modules/node-abi/scripts/update-abi-registry.js +0 -119
  238. package/node_modules/node-abi/test/index.js +0 -166
  239. package/node_modules/npmlog/CHANGELOG.md +0 -49
  240. package/node_modules/npmlog/LICENSE +0 -15
  241. package/node_modules/npmlog/README.md +0 -216
  242. package/node_modules/npmlog/log.js +0 -309
  243. package/node_modules/npmlog/node_modules/are-we-there-yet/CHANGES.md +0 -37
  244. package/node_modules/npmlog/node_modules/are-we-there-yet/LICENSE +0 -5
  245. package/node_modules/npmlog/node_modules/are-we-there-yet/README.md +0 -195
  246. package/node_modules/npmlog/node_modules/are-we-there-yet/index.js +0 -4
  247. package/node_modules/npmlog/node_modules/are-we-there-yet/package.json +0 -66
  248. package/node_modules/npmlog/node_modules/are-we-there-yet/tracker-base.js +0 -11
  249. package/node_modules/npmlog/node_modules/are-we-there-yet/tracker-group.js +0 -107
  250. package/node_modules/npmlog/node_modules/are-we-there-yet/tracker-stream.js +0 -36
  251. package/node_modules/npmlog/node_modules/are-we-there-yet/tracker.js +0 -30
  252. package/node_modules/npmlog/node_modules/gauge/CHANGELOG.md +0 -160
  253. package/node_modules/npmlog/node_modules/gauge/LICENSE +0 -13
  254. package/node_modules/npmlog/node_modules/gauge/README.md +0 -399
  255. package/node_modules/npmlog/node_modules/gauge/base-theme.js +0 -14
  256. package/node_modules/npmlog/node_modules/gauge/error.js +0 -24
  257. package/node_modules/npmlog/node_modules/gauge/has-color.js +0 -12
  258. package/node_modules/npmlog/node_modules/gauge/index.js +0 -233
  259. package/node_modules/npmlog/node_modules/gauge/package.json +0 -94
  260. package/node_modules/npmlog/node_modules/gauge/plumbing.js +0 -48
  261. package/node_modules/npmlog/node_modules/gauge/process.js +0 -3
  262. package/node_modules/npmlog/node_modules/gauge/progress-bar.js +0 -35
  263. package/node_modules/npmlog/node_modules/gauge/render-template.js +0 -181
  264. package/node_modules/npmlog/node_modules/gauge/set-immediate.js +0 -7
  265. package/node_modules/npmlog/node_modules/gauge/set-interval.js +0 -3
  266. package/node_modules/npmlog/node_modules/gauge/spin.js +0 -5
  267. package/node_modules/npmlog/node_modules/gauge/template-item.js +0 -73
  268. package/node_modules/npmlog/node_modules/gauge/theme-set.js +0 -115
  269. package/node_modules/npmlog/node_modules/gauge/themes.js +0 -54
  270. package/node_modules/npmlog/node_modules/gauge/wide-truncate.js +0 -25
  271. package/node_modules/npmlog/package.json +0 -78
  272. package/node_modules/number-is-nan/index.js +0 -4
  273. package/node_modules/number-is-nan/license +0 -21
  274. package/node_modules/number-is-nan/package.json +0 -70
  275. package/node_modules/number-is-nan/readme.md +0 -28
  276. package/node_modules/object-assign/index.js +0 -90
  277. package/node_modules/object-assign/license +0 -21
  278. package/node_modules/object-assign/package.json +0 -77
  279. package/node_modules/object-assign/readme.md +0 -61
  280. package/node_modules/process-nextick-args/index.js +0 -45
  281. package/node_modules/process-nextick-args/license.md +0 -19
  282. package/node_modules/process-nextick-args/package.json +0 -53
  283. package/node_modules/process-nextick-args/readme.md +0 -18
  284. package/node_modules/readable-stream/.travis.yml +0 -34
  285. package/node_modules/readable-stream/README.md +0 -58
  286. package/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +0 -60
  287. package/node_modules/readable-stream/duplex-browser.js +0 -1
  288. package/node_modules/readable-stream/duplex.js +0 -1
  289. package/node_modules/readable-stream/lib/_stream_duplex.js +0 -131
  290. package/node_modules/readable-stream/lib/_stream_passthrough.js +0 -47
  291. package/node_modules/readable-stream/lib/_stream_readable.js +0 -1019
  292. package/node_modules/readable-stream/lib/_stream_transform.js +0 -214
  293. package/node_modules/readable-stream/lib/_stream_writable.js +0 -687
  294. package/node_modules/readable-stream/lib/internal/streams/BufferList.js +0 -79
  295. package/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -74
  296. package/node_modules/readable-stream/package.json +0 -87
  297. package/node_modules/readable-stream/passthrough.js +0 -1
  298. package/node_modules/readable-stream/readable-browser.js +0 -7
  299. package/node_modules/readable-stream/readable.js +0 -19
  300. package/node_modules/readable-stream/transform.js +0 -1
  301. package/node_modules/readable-stream/writable-browser.js +0 -1
  302. package/node_modules/readable-stream/writable.js +0 -8
  303. package/node_modules/set-blocking/CHANGELOG.md +0 -26
  304. package/node_modules/set-blocking/LICENSE.txt +0 -14
  305. package/node_modules/set-blocking/README.md +0 -31
  306. package/node_modules/set-blocking/index.js +0 -7
  307. package/node_modules/set-blocking/package.json +0 -73
  308. package/node_modules/signal-exit/CHANGELOG.md +0 -35
  309. package/node_modules/signal-exit/LICENSE.txt +0 -16
  310. package/node_modules/signal-exit/README.md +0 -39
  311. package/node_modules/signal-exit/index.js +0 -163
  312. package/node_modules/signal-exit/package.json +0 -71
  313. package/node_modules/signal-exit/signals.js +0 -53
  314. package/node_modules/string-width/index.js +0 -37
  315. package/node_modules/string-width/license +0 -21
  316. package/node_modules/string-width/package.json +0 -95
  317. package/node_modules/string-width/readme.md +0 -42
  318. package/node_modules/string_decoder/.travis.yml +0 -50
  319. package/node_modules/string_decoder/package.json +0 -64
  320. package/node_modules/strip-ansi/index.js +0 -6
  321. package/node_modules/strip-ansi/license +0 -21
  322. package/node_modules/strip-ansi/package.json +0 -107
  323. package/node_modules/strip-ansi/readme.md +0 -33
  324. package/node_modules/strip-json-comments/license +0 -21
  325. package/node_modules/strip-json-comments/package.json +0 -77
  326. package/node_modules/tar-stream/node_modules/readable-stream/CONTRIBUTING.md +0 -38
  327. package/node_modules/tar-stream/node_modules/readable-stream/GOVERNANCE.md +0 -136
  328. package/node_modules/tar-stream/node_modules/readable-stream/LICENSE +0 -47
  329. package/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
  330. package/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
  331. package/node_modules/wide-align/LICENSE +0 -14
  332. package/node_modules/wide-align/README.md +0 -47
  333. package/node_modules/wide-align/align.js +0 -65
  334. package/node_modules/wide-align/package.json +0 -69
  335. /package/{.eslintrc.js → .eslintrc.cjs} +0 -0
  336. /package/node_modules/{strip-json-comments → rc/node_modules/strip-json-comments}/index.js +0 -0
  337. /package/node_modules/{ansi-regex → rc/node_modules/strip-json-comments}/license +0 -0
  338. /package/node_modules/{strip-json-comments → rc/node_modules/strip-json-comments}/readme.md +0 -0
  339. /package/node_modules/{lru-cache → semver}/LICENSE +0 -0
  340. /package/node_modules/{node-abi/node_modules/semver → semver}/classes/index.js +0 -0
  341. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/clean.js +0 -0
  342. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/cmp.js +0 -0
  343. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/compare-build.js +0 -0
  344. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/compare-loose.js +0 -0
  345. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/compare.js +0 -0
  346. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/eq.js +0 -0
  347. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/gt.js +0 -0
  348. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/gte.js +0 -0
  349. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/lt.js +0 -0
  350. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/lte.js +0 -0
  351. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/major.js +0 -0
  352. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/minor.js +0 -0
  353. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/neq.js +0 -0
  354. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/patch.js +0 -0
  355. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/prerelease.js +0 -0
  356. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/rcompare.js +0 -0
  357. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/rsort.js +0 -0
  358. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/satisfies.js +0 -0
  359. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/sort.js +0 -0
  360. /package/node_modules/{node-abi/node_modules/semver → semver}/functions/valid.js +0 -0
  361. /package/node_modules/{node-abi/node_modules/semver → semver}/internal/debug.js +0 -0
  362. /package/node_modules/{node-abi/node_modules/semver → semver}/internal/identifiers.js +0 -0
  363. /package/node_modules/{lru-cache/node_modules/yallist → semver/node_modules/lru-cache}/LICENSE +0 -0
  364. /package/node_modules/{lru-cache → semver/node_modules/lru-cache}/README.md +0 -0
  365. /package/node_modules/{lru-cache → semver/node_modules/lru-cache}/index.js +0 -0
  366. /package/node_modules/{node-abi/node_modules/semver → semver/node_modules/yallist}/LICENSE +0 -0
  367. /package/node_modules/{lru-cache → semver}/node_modules/yallist/README.md +0 -0
  368. /package/node_modules/{lru-cache → semver}/node_modules/yallist/iterator.js +0 -0
  369. /package/node_modules/{lru-cache → semver}/node_modules/yallist/yallist.js +0 -0
  370. /package/node_modules/{node-abi/node_modules/semver → semver}/preload.js +0 -0
  371. /package/node_modules/{node-abi/node_modules/semver → semver}/range.bnf +0 -0
  372. /package/node_modules/{node-abi/node_modules/semver → semver}/ranges/gtr.js +0 -0
  373. /package/node_modules/{node-abi/node_modules/semver → semver}/ranges/ltr.js +0 -0
  374. /package/node_modules/{node-abi/node_modules/semver → semver}/ranges/max-satisfying.js +0 -0
  375. /package/node_modules/{node-abi/node_modules/semver → semver}/ranges/min-satisfying.js +0 -0
  376. /package/node_modules/{node-abi/node_modules/semver → semver}/ranges/min-version.js +0 -0
  377. /package/node_modules/{node-abi/node_modules/semver → semver}/ranges/outside.js +0 -0
  378. /package/node_modules/{node-abi/node_modules/semver → semver}/ranges/simplify.js +0 -0
  379. /package/node_modules/{node-abi/node_modules/semver → semver}/ranges/to-comparators.js +0 -0
  380. /package/node_modules/{node-abi/node_modules/semver → semver}/ranges/valid.js +0 -0
  381. /package/node_modules/{tar-stream → tar-fs}/node_modules/bl/.travis.yml +0 -0
  382. /package/node_modules/{tar-stream → tar-fs}/node_modules/bl/BufferList.js +0 -0
  383. /package/node_modules/{tar-stream → tar-fs}/node_modules/bl/LICENSE.md +0 -0
  384. /package/node_modules/{tar-stream → tar-fs}/node_modules/bl/README.md +0 -0
  385. /package/node_modules/{tar-stream → tar-fs}/node_modules/bl/bl.js +0 -0
  386. /package/node_modules/{tar-stream → tar-fs}/node_modules/bl/test/convert.js +0 -0
  387. /package/node_modules/{tar-stream → tar-fs}/node_modules/bl/test/indexOf.js +0 -0
  388. /package/node_modules/{tar-stream → tar-fs}/node_modules/bl/test/isBufferList.js +0 -0
  389. /package/node_modules/{tar-stream → tar-fs}/node_modules/bl/test/test.js +0 -0
  390. /package/node_modules/{readable-stream → tar-fs/node_modules/readable-stream}/CONTRIBUTING.md +0 -0
  391. /package/node_modules/{readable-stream → tar-fs/node_modules/readable-stream}/GOVERNANCE.md +0 -0
  392. /package/node_modules/{readable-stream → tar-fs/node_modules/readable-stream}/LICENSE +0 -0
  393. /package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/errors-browser.js +0 -0
  394. /package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/errors.js +0 -0
  395. /package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/experimentalWarning.js +0 -0
  396. /package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/lib/internal/streams/from-browser.js +0 -0
  397. /package/node_modules/{readable-stream → tar-fs/node_modules/readable-stream}/lib/internal/streams/stream-browser.js +0 -0
  398. /package/node_modules/{readable-stream → tar-fs/node_modules/readable-stream}/lib/internal/streams/stream.js +0 -0
  399. /package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/readable-browser.js +0 -0
  400. /package/node_modules/{tar-stream → tar-fs}/node_modules/readable-stream/readable.js +0 -0
  401. /package/node_modules/{string_decoder → tar-fs/node_modules/string_decoder}/LICENSE +0 -0
  402. /package/node_modules/{string_decoder → tar-fs/node_modules/string_decoder}/README.md +0 -0
  403. /package/node_modules/{string_decoder → tar-fs/node_modules/string_decoder}/lib/string_decoder.js +0 -0
  404. /package/node_modules/{tar-stream → tar-fs/node_modules/tar-stream}/LICENSE +0 -0
  405. /package/node_modules/{tar-stream → tar-fs/node_modules/tar-stream}/README.md +0 -0
  406. /package/node_modules/{tar-stream → tar-fs/node_modules/tar-stream}/index.js +0 -0
  407. /package/node_modules/{tar-stream → tar-fs/node_modules/tar-stream}/pack.js +0 -0
  408. /package/node_modules/{tar-stream → tar-fs/node_modules/tar-stream}/sandbox.js +0 -0
@@ -0,0 +1,126 @@
1
+ // https://developer.mozilla.org/docs/Web/API/RTCIceCandidate
2
+ //
3
+ // Example: candidate:123456 1 UDP 123456 192.168.1.1 12345 typ host raddr=10.0.0.1 rport=54321 generation 0
4
+
5
+ import DOMException from 'node-domexception';
6
+
7
+ export default class _RTCIceCandidate {
8
+ #address;
9
+ #candidate;
10
+ #component;
11
+ #foundation;
12
+ #port;
13
+ #priority;
14
+ #protocol;
15
+ #relatedAddress;
16
+ #relatedPort;
17
+ #sdpMLineIndex;
18
+ #sdpMid;
19
+ #tcpType;
20
+ #type;
21
+ #usernameFragment;
22
+ #ip;
23
+
24
+ constructor({ candidate, sdpMLineIndex, sdpMid, usernameFragment }) {
25
+ if (candidate == null) {
26
+ throw new DOMException('candidate must be specified');
27
+ }
28
+
29
+ this.#candidate = candidate;
30
+ this.#sdpMLineIndex = sdpMLineIndex || null;
31
+ this.#sdpMid = sdpMid || null;
32
+ this.#usernameFragment = usernameFragment || null;
33
+
34
+ if (candidate) {
35
+ const fields = candidate.split(' ');
36
+ this.#foundation = fields[0];
37
+ this.#component = fields[1];
38
+ this.#protocol = fields[2];
39
+ this.#priority = parseInt(fields[3], 10);
40
+ this.#ip = fields[4];
41
+ this.#port = parseInt(fields[5], 10);
42
+ this.#type = fields[7];
43
+ if (fields[6] === 'typ') {
44
+ this.#tcpType = null;
45
+ } else if (fields[6] === 'tcp') {
46
+ this.#tcpType = fields[7];
47
+ this.#type = fields[8];
48
+ }
49
+
50
+ // Parse the candidate string to extract relatedPort and relatedAddress
51
+ for (let i = 9; i < fields.length; i++) {
52
+ const field = fields[i];
53
+ if (field.startsWith('raddr')) {
54
+ this.#relatedAddress = field.split('=')[1];
55
+ } else if (field.startsWith('rport')) {
56
+ this.#relatedPort = parseInt(field.split('=')[1], 10);
57
+ }
58
+ }
59
+ }
60
+ }
61
+
62
+ get address() {
63
+ return this.#address || null;
64
+ }
65
+
66
+ get candidate() {
67
+ return this.#candidate || '';
68
+ }
69
+
70
+ get component() {
71
+ return this.#component;
72
+ }
73
+
74
+ get foundation() {
75
+ return this.#foundation || null;
76
+ }
77
+
78
+ get port() {
79
+ return this.#port || null;
80
+ }
81
+
82
+ get priority() {
83
+ return this.#priority || null;
84
+ }
85
+
86
+ get protocol() {
87
+ return this.#protocol || null;
88
+ }
89
+
90
+ get relatedAddress() {
91
+ return this.#relatedAddress;
92
+ }
93
+
94
+ get relatedPort() {
95
+ return this.#relatedPort || null;
96
+ }
97
+
98
+ get sdpMLineIndex() {
99
+ return this.#sdpMLineIndex;
100
+ }
101
+
102
+ get sdpMid() {
103
+ return this.#sdpMid;
104
+ }
105
+
106
+ get tcpType() {
107
+ return this.#tcpType;
108
+ }
109
+
110
+ get type() {
111
+ return this.#type || null;
112
+ }
113
+
114
+ get usernameFragment() {
115
+ return this.#usernameFragment;
116
+ }
117
+
118
+ toJSON() {
119
+ return {
120
+ candidate: this.#candidate,
121
+ sdpMLineIndex: this.#sdpMLineIndex,
122
+ sdpMid: this.#sdpMid,
123
+ usernameFragment: this.#usernameFragment,
124
+ };
125
+ }
126
+ }
@@ -0,0 +1,18 @@
1
+ /// <reference lib="dom" />
2
+
3
+ export default class _RTCIceTransport extends EventTarget implements RTCIceTransport {
4
+ readonly component: RTCIceComponent;
5
+ readonly gatheringState: RTCIceGatheringState;
6
+ readonly role: string; // RTCIceRole;
7
+ readonly state: RTCIceTransportState;
8
+
9
+ getLocalCandidates(): RTCIceCandidate[];
10
+ getLocalParameters(): any; // RTCIceParameters;
11
+ getRemoteCandidates(): RTCIceCandidate[];
12
+ getRemoteParameters(): any; // RTCIceParameters;
13
+ getSelectedCandidatePair(): RTCIceCandidatePair | null;
14
+
15
+ ongatheringstatechange: ((this: RTCIceTransport, ev: Event) => any) | null;
16
+ onselectedcandidatepairchange: ((this: RTCIceTransport, ev: Event) => any) | null;
17
+ onstatechange: ((this: RTCIceTransport, ev: Event) => any) | null;
18
+ }
@@ -0,0 +1,55 @@
1
+ export default class _RTCIceTransport extends EventTarget {
2
+ #component = null;
3
+ #gatheringState = null;
4
+ #role = null;
5
+ #state = null;
6
+
7
+ ongatheringstatechange = createEmptyFunction();
8
+ onselectedcandidatepairchange = createEmptyFunction();
9
+ onstatechange = createEmptyFunction();
10
+
11
+ constructor() {
12
+ super();
13
+ }
14
+
15
+ get component() {
16
+ return this.#component;
17
+ }
18
+
19
+ get gatheringState() {
20
+ return this.#gatheringState;
21
+ }
22
+
23
+ get role() {
24
+ return this.#role;
25
+ }
26
+
27
+ get state() {
28
+ return this.#state;
29
+ }
30
+ getLocalCandidates() {
31
+ /** */
32
+ }
33
+
34
+ getLocalParameters() {
35
+ /** */
36
+ }
37
+
38
+ getRemoteCandidates() {
39
+ /** */
40
+ }
41
+
42
+ getRemoteParameters() {
43
+ /** */
44
+ }
45
+
46
+ getSelectedCandidatePair() {
47
+ /** */
48
+ }
49
+ }
50
+
51
+ function createEmptyFunction() {
52
+ return () => {
53
+ /** */
54
+ };
55
+ }
@@ -0,0 +1,50 @@
1
+ /// <reference lib="dom" />
2
+
3
+ export default class _RTCPeerConnection extends EventTarget implements RTCPeerConnection {
4
+ constructor(config?: RTCConfiguration);
5
+
6
+ // events
7
+ onconnectionstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;
8
+ ondatachannel: ((this: RTCPeerConnection, ev: RTCDataChannelEvent) => any) | null;
9
+ onicecandidate: ((this: RTCPeerConnection, ev: RTCPeerConnectionIceEvent) => any) | null;
10
+ onicecandidateerror: ((this: RTCPeerConnection, ev: Event) => any) | null;
11
+ oniceconnectionstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;
12
+ onicegatheringstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;
13
+ onnegotiationneeded: ((this: RTCPeerConnection, ev: Event) => any) | null;
14
+ onsignalingstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;
15
+ ontrack: ((this: RTCPeerConnection, ev: RTCTrackEvent) => any) | null;
16
+
17
+ // props
18
+ readonly canTrickleIceCandidates: boolean | null;
19
+ readonly connectionState: RTCPeerConnectionState;
20
+ readonly iceConnectionState: RTCIceConnectionState;
21
+ readonly iceGatheringState: RTCIceGatheringState;
22
+ readonly currentLocalDescription: RTCSessionDescription | null;
23
+ readonly currentRemoteDescription: RTCSessionDescription | null;
24
+ readonly localDescription: RTCSessionDescription | null;
25
+ readonly pendingLocalDescription: RTCSessionDescription | null;
26
+ readonly pendingRemoteDescription: RTCSessionDescription | null;
27
+ readonly remoteDescription: RTCSessionDescription | null;
28
+ readonly sctp: RTCSctpTransport | null;
29
+ readonly signalingState: RTCSignalingState;
30
+
31
+ // methods
32
+ generateCertificate(keygenAlgorithm: AlgorithmIdentifier): Promise<RTCCertificate>;
33
+ addIceCandidate(candidate?: RTCIceCandidateInit | RTCIceCandidate): Promise<void>;
34
+ addTrack(track: MediaStreamTrack, ...streams: MediaStream[]): RTCRtpSender;
35
+ addTransceiver(trackOrKind: MediaStreamTrack | string, init?: RTCRtpTransceiverInit): RTCRtpTransceiver;
36
+ close(): void;
37
+ createAnswer(options?: RTCAnswerOptions): Promise<RTCSessionDescriptionInit>;
38
+ createDataChannel(label: string, dataChannelDict?: RTCDataChannelInit): RTCDataChannel;
39
+ createOffer(options?: RTCOfferOptions): Promise<RTCSessionDescriptionInit>;
40
+ getConfiguration(): RTCConfiguration;
41
+ getReceivers(): RTCRtpReceiver[];
42
+ getSenders(): RTCRtpSender[];
43
+ getStats(selector?: MediaStreamTrack | null): Promise<RTCStatsReport>;
44
+ getTransceivers(): RTCRtpTransceiver[];
45
+ removeTrack(sender: RTCRtpSender): void;
46
+ restartIce(): Promise<void>;
47
+ setConfiguration(configuration: RTCConfiguration): void;
48
+ setLocalDescription(description: RTCSessionDescriptionInit): Promise<void>;
49
+ setRemoteDescription(description: RTCSessionDescriptionInit): Promise<void>;
50
+ }
@@ -0,0 +1,348 @@
1
+ import NodeDataChannel from '../lib/index.js';
2
+ import RTCSessionDescription from './RTCSessionDescription.js';
3
+ import RTCDataChannel from './RTCDataChannel.js';
4
+ import RTCIceCandidate from './RTCIceCandidate.js';
5
+ import { RTCDataChannelEvent, RTCPeerConnectionIceEvent } from './Events.js';
6
+ import DOMException from 'node-domexception';
7
+
8
+ export default class _RTCPeerConnection extends EventTarget {
9
+ #peerConnection;
10
+ #localOffer;
11
+ #localAnswer;
12
+ #dataChannels;
13
+ #config;
14
+ #canTrickleIceCandidates;
15
+ #sctp;
16
+
17
+ onconnectionstatechange;
18
+ ondatachannel;
19
+ onicecandidate;
20
+ onicecandidateerror;
21
+ oniceconnectionstatechange;
22
+ onicegatheringstatechange;
23
+ onnegotiationneeded;
24
+ onsignalingstatechange;
25
+ ontrack;
26
+
27
+ constructor(init = {}) {
28
+ super();
29
+
30
+ this.#config = init;
31
+ this.#localOffer = createDeferredPromise();
32
+ this.#localAnswer = createDeferredPromise();
33
+ this.#dataChannels = new Set();
34
+ this.#canTrickleIceCandidates = null;
35
+ this.#sctp = null;
36
+
37
+ const iceServers = init ? init.iceServers : [];
38
+
39
+ this.#peerConnection = new NodeDataChannel.PeerConnection(
40
+ init && init.peerIdentity ? init.peerIdentity : `peer-${getRandomString(7)}`,
41
+ {
42
+ iceServers: iceServers
43
+ .map((server) => {
44
+ const urls = Array.isArray(server.urls) ? server.urls : [server.urls];
45
+
46
+ return urls.map((url) => {
47
+ if (server.username && server.credential) {
48
+ const [protocol, rest] = url.split(/:(.*)/);
49
+ return `${protocol}:${server.username}:${server.credential}@${rest}`;
50
+ }
51
+ return url;
52
+ });
53
+ })
54
+ .flat(),
55
+ iceTransportPolicy: init ? init.iceTransportPolicy : undefined,
56
+ },
57
+ );
58
+
59
+ // forward peerConnection events
60
+ this.#peerConnection.onStateChange(() => {
61
+ this.dispatchEvent(new Event('connectionstatechange'));
62
+ });
63
+
64
+ this.#peerConnection.onIceStateChange(() => {
65
+ this.dispatchEvent(new Event('iceconnectionstatechange'));
66
+ });
67
+
68
+ this.#peerConnection.onSignalingStateChange(() => {
69
+ this.dispatchEvent(new Event('signalingstatechange'));
70
+ });
71
+
72
+ this.#peerConnection.onGatheringStateChange(() => {
73
+ this.dispatchEvent(new Event('icegatheringstatechange'));
74
+ });
75
+
76
+ this.#peerConnection.onDataChannel((channel) => {
77
+ const dataChannel = new RTCDataChannel(channel);
78
+ this.#dataChannels.add(dataChannel);
79
+ this.dispatchEvent(new RTCDataChannelEvent(dataChannel));
80
+ });
81
+
82
+ this.#peerConnection.onLocalDescription((sdp, type) => {
83
+ if (type === 'offer') {
84
+ this.#localOffer.resolve({ sdp, type });
85
+ }
86
+
87
+ if (type === 'answer') {
88
+ this.#localAnswer.resolve({ sdp, type });
89
+ }
90
+ });
91
+
92
+ this.#peerConnection.onLocalCandidate((candidate, sdpMid) => {
93
+ if (sdpMid === 'unspec') {
94
+ this.#localAnswer.reject(new Error(`Invalid description type ${sdpMid}`));
95
+ return;
96
+ }
97
+
98
+ this.dispatchEvent(new RTCPeerConnectionIceEvent(new RTCIceCandidate({ candidate, sdpMid })));
99
+ });
100
+
101
+ // forward events to properties
102
+ this.addEventListener('connectionstatechange', (e) => {
103
+ if (this.onconnectionstatechange) this.onconnectionstatechange(e);
104
+ });
105
+ this.addEventListener('signalingstatechange', (e) => {
106
+ if (this.onsignalingstatechange) this.onsignalingstatechange(e);
107
+ });
108
+ this.addEventListener('iceconnectionstatechange', (e) => {
109
+ if (this.oniceconnectionstatechange) this.oniceconnectionstatechange(e);
110
+ });
111
+ this.addEventListener('icegatheringstatechange', (e) => {
112
+ if (this.onicegatheringstatechange) this.onicegatheringstatechange(e);
113
+ });
114
+ this.addEventListener('datachannel', (e) => {
115
+ if (this.ondatachannel) this.ondatachannel(e);
116
+ });
117
+ this.addEventListener('icecandidate', (e) => {
118
+ if (this.onicecandidate) this.onicecandidate(e);
119
+ });
120
+ }
121
+
122
+ get canTrickleIceCandidates() {
123
+ return this.#canTrickleIceCandidates;
124
+ }
125
+
126
+ get connectionState() {
127
+ return this.#peerConnection.state();
128
+ }
129
+
130
+ get iceConnectionState() {
131
+ return this.#peerConnection.iceState();
132
+ }
133
+
134
+ get iceGatheringState() {
135
+ return this.#peerConnection.gatheringState();
136
+ }
137
+
138
+ get currentLocalDescription() {
139
+ return new RTCSessionDescription(this.#peerConnection.localDescription());
140
+ }
141
+
142
+ get currentRemoteDescription() {
143
+ return new RTCSessionDescription(this.#peerConnection.remoteDescription());
144
+ }
145
+
146
+ get localDescription() {
147
+ return new RTCSessionDescription(this.#peerConnection.localDescription());
148
+ }
149
+
150
+ get pendingLocalDescription() {
151
+ return new RTCSessionDescription(this.#peerConnection.localDescription());
152
+ }
153
+
154
+ get pendingRemoteDescription() {
155
+ return new RTCSessionDescription(this.#peerConnection.remoteDescription());
156
+ }
157
+
158
+ get remoteDescription() {
159
+ return new RTCSessionDescription(this.#peerConnection.remoteDescription());
160
+ }
161
+
162
+ get sctp() {
163
+ return this.#sctp;
164
+ }
165
+
166
+ get signalingState() {
167
+ return this.#peerConnection.signalingState();
168
+ }
169
+
170
+ static generateCertificate(keygenAlgorithm) {
171
+ throw new DOMException('Not implemented');
172
+ }
173
+
174
+ async addIceCandidate(candidate) {
175
+ if (candidate == null || candidate.candidate == null) {
176
+ throw new DOMException('Candidate invalid');
177
+ }
178
+
179
+ this.#peerConnection.addRemoteCandidate(candidate.candidate, candidate.sdpMid || '0');
180
+ }
181
+
182
+ addTrack(track, ...streams) {
183
+ throw new DOMException('Not implemented');
184
+ }
185
+
186
+ addTransceiver(trackOrKind, init) {
187
+ throw new DOMException('Not implemented');
188
+ }
189
+
190
+ close() {
191
+ // close all channels before shutting down
192
+ this.#dataChannels.forEach((channel) => {
193
+ channel.close();
194
+ });
195
+
196
+ this.#peerConnection.close();
197
+ }
198
+
199
+ createAnswer() {
200
+ return this.#localAnswer;
201
+ }
202
+
203
+ createDataChannel(label, opts = {}) {
204
+ const channel = this.#peerConnection.createDataChannel(label, opts);
205
+ const dataChannel = new RTCDataChannel(channel, opts);
206
+
207
+ // ensure we can close all channels when shutting down
208
+ this.#dataChannels.add(dataChannel);
209
+ dataChannel.addEventListener('close', () => {
210
+ this.#dataChannels.delete(dataChannel);
211
+ });
212
+
213
+ return dataChannel;
214
+ }
215
+
216
+ createOffer() {
217
+ return this.#localOffer;
218
+ }
219
+
220
+ getConfiguration() {
221
+ return this.#config;
222
+ }
223
+
224
+ getReceivers() {
225
+ throw new DOMException('Not implemented');
226
+ }
227
+
228
+ getSenders() {
229
+ throw new DOMException('Not implemented');
230
+ }
231
+
232
+ getStats() {
233
+ return new Promise((resolve) => {
234
+ let report = new Map();
235
+ let cp = this.#peerConnection.getSelectedCandidatePair();
236
+ let bytesSent = this.#peerConnection.bytesSent();
237
+ let bytesReceived = this.#peerConnection.bytesReceived();
238
+ let rtt = this.#peerConnection.rtt();
239
+
240
+ let localIdRs = getRandomString(8);
241
+ let localId = 'RTCIceCandidate_' + localIdRs;
242
+ report.set(localId, {
243
+ id: localId,
244
+ type: 'localcandidate',
245
+ timestamp: Date.now(),
246
+ candidateType: cp.local.type,
247
+ ip: cp.local.address,
248
+ port: cp.local.port,
249
+ });
250
+
251
+ let remoteIdRs = getRandomString(8);
252
+ let remoteId = 'RTCIceCandidate_' + remoteIdRs;
253
+ report.set(remoteId, {
254
+ id: remoteId,
255
+ type: 'remotecandidate',
256
+ timestamp: Date.now(),
257
+ candidateType: cp.remote.type,
258
+ ip: cp.remote.address,
259
+ port: cp.remote.port,
260
+ });
261
+
262
+ let candidateId = 'RTCIceCandidatePair_' + localIdRs + '_' + remoteIdRs;
263
+ report.set(candidateId, {
264
+ id: candidateId,
265
+ type: 'candidate-pair',
266
+ timestamp: Date.now(),
267
+ localCandidateId: localId,
268
+ remoteCandidateId: remoteId,
269
+ state: 'succeeded',
270
+ nominated: true,
271
+ writable: true,
272
+ bytesSent: bytesSent,
273
+ bytesReceived: bytesReceived,
274
+ totalRoundTripTime: rtt,
275
+ currentRoundTripTime: rtt,
276
+ });
277
+
278
+ let transportId = 'RTCTransport_0_1';
279
+ report.set(transportId, {
280
+ id: transportId,
281
+ timestamp: Date.now(),
282
+ type: 'transport',
283
+ bytesSent: bytesSent,
284
+ bytesReceived: bytesReceived,
285
+ dtlsState: 'connected',
286
+ selectedCandidatePairId: candidateId,
287
+ selectedCandidatePairChanges: 1,
288
+ });
289
+
290
+ return resolve(report);
291
+ });
292
+ }
293
+
294
+ getTransceivers() {
295
+ return []; // throw new DOMException('Not implemented');
296
+ }
297
+
298
+ removeTrack() {
299
+ throw new DOMException('Not implemented');
300
+ }
301
+
302
+ restartIce() {
303
+ throw new DOMException('Not implemented');
304
+ }
305
+
306
+ setConfiguration(config) {
307
+ this.#config = config;
308
+ }
309
+
310
+ async setLocalDescription(description) {
311
+ if (description == null || description.type == null) {
312
+ throw new DOMException('Local description type must be set');
313
+ }
314
+
315
+ if (description.type !== 'offer') {
316
+ // any other type causes libdatachannel to throw
317
+ return;
318
+ }
319
+ this.#peerConnection.setLocalDescription(description.type);
320
+ }
321
+
322
+ async setRemoteDescription(description) {
323
+ if (description.sdp == null) {
324
+ throw new DOMException('Remote SDP must be set');
325
+ }
326
+
327
+ this.#peerConnection.setRemoteDescription(description.sdp, description.type);
328
+ }
329
+ }
330
+
331
+ function createDeferredPromise() {
332
+ let resolve, reject;
333
+
334
+ let promise = new Promise(function (_resolve, _reject) {
335
+ resolve = _resolve;
336
+ reject = _reject;
337
+ });
338
+
339
+ promise.resolve = resolve;
340
+ promise.reject = reject;
341
+ return promise;
342
+ }
343
+
344
+ function getRandomString(length) {
345
+ return Math.random()
346
+ .toString(36)
347
+ .substring(2, 2 + length);
348
+ }
@@ -0,0 +1,10 @@
1
+ /// <reference lib="dom" />
2
+
3
+ export default class _RTCSctpTransport extends EventTarget implements RTCSctpTransport {
4
+ readonly maxChannels: number | null;
5
+ readonly maxMessageSize: number;
6
+ readonly transport: RTCDtlsTransport;
7
+ readonly state: RTCSctpTransportState;
8
+
9
+ onstatechange: ((this: RTCSctpTransport, ev: Event) => any) | null;
10
+ }
@@ -0,0 +1,34 @@
1
+ export default class _RTCSctpTransport extends EventTarget {
2
+ #maxChannels = null;
3
+ #maxMessageSize = null;
4
+ #state = null;
5
+ #transport = null;
6
+
7
+ onstatechange = createEmptyFunction();
8
+
9
+ constructor(init = {}) {
10
+ super();
11
+ }
12
+
13
+ get maxChannels() {
14
+ return this.#maxChannels;
15
+ }
16
+
17
+ get maxMessageSize() {
18
+ return this.#maxMessageSize;
19
+ }
20
+
21
+ get state() {
22
+ return this.#state;
23
+ }
24
+
25
+ get transport() {
26
+ return this.#transport;
27
+ }
28
+ }
29
+
30
+ function createEmptyFunction() {
31
+ return () => {
32
+ /** */
33
+ };
34
+ }
@@ -0,0 +1,7 @@
1
+ /// <reference lib="dom" />
2
+
3
+ export default class _RTCSessionDescription implements RTCSessionDescription {
4
+ readonly sdp: string;
5
+ readonly type: RTCSdpType;
6
+ toJSON(): any;
7
+ }
@@ -0,0 +1,37 @@
1
+ // https://developer.mozilla.org/docs/Web/API/RTCSessionDescription
2
+ //
3
+ // Example usage
4
+ // const init = {
5
+ // type: 'offer',
6
+ // 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'
7
+ // };
8
+
9
+ export default class _RTCSessionDescription {
10
+ #type;
11
+ #sdp;
12
+
13
+ constructor(init = {}) {
14
+ // Allow Empty Constructor
15
+ // if (!init || !init.type || !init.sdp) {
16
+ // throw new DOMException('Type and sdp properties are required.');
17
+ // }
18
+
19
+ this.#type = init ? init.type : null;
20
+ this.#sdp = init ? init.sdp : null;
21
+ }
22
+
23
+ get type() {
24
+ return this.#type;
25
+ }
26
+
27
+ get sdp() {
28
+ return this.#sdp;
29
+ }
30
+
31
+ toJSON() {
32
+ return {
33
+ sdp: this.#sdp,
34
+ type: this.#type,
35
+ };
36
+ }
37
+ }