node-datachannel 0.4.3 → 0.5.0

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 (532) 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/client-server/README.md +22 -0
  13. package/examples/client-server/client-benchmark.js +11 -6
  14. package/examples/client-server/client-periodic.js +5 -6
  15. package/examples/client-server/client.js +4 -5
  16. package/examples/client-server/package-lock.json +311 -260
  17. package/examples/client-server/package.json +15 -14
  18. package/examples/client-server/signaling-server.js +1 -2
  19. package/examples/electron-demo/README.md +58 -0
  20. package/examples/electron-demo/forge.config.js +49 -0
  21. package/examples/electron-demo/package-lock.json +16032 -0
  22. package/examples/electron-demo/package.json +43 -0
  23. package/examples/electron-demo/src/index.css +7 -0
  24. package/examples/electron-demo/src/index.html +29 -0
  25. package/examples/electron-demo/src/main.js +53 -0
  26. package/examples/electron-demo/src/node-datachannel.js +123 -0
  27. package/examples/electron-demo/src/preload.js +28 -0
  28. package/examples/electron-demo/src/renderer.js +58 -0
  29. package/examples/electron-demo/webpack.main.config.js +11 -0
  30. package/examples/electron-demo/webpack.renderer.config.js +13 -0
  31. package/examples/electron-demo/webpack.rules.js +35 -0
  32. package/examples/media/README.md +3 -3
  33. package/examples/media/media.js +3 -4
  34. package/examples/simple-peer-usage/main.js +28 -0
  35. package/examples/simple-peer-usage/package-lock.json +317 -0
  36. package/examples/simple-peer-usage/package.json +16 -0
  37. package/lib/datachannel-stream.js +3 -4
  38. package/lib/index.d.ts +12 -4
  39. package/lib/index.js +37 -3
  40. package/package.json +81 -68
  41. package/polyfill/Events.d.ts +9 -0
  42. package/polyfill/Events.js +27 -0
  43. package/polyfill/README.md +41 -0
  44. package/polyfill/RTCCertificate.d.ts +7 -0
  45. package/polyfill/RTCCertificate.js +17 -0
  46. package/polyfill/RTCDataChannel.d.ts +35 -0
  47. package/polyfill/RTCDataChannel.js +175 -0
  48. package/polyfill/RTCDtlsTransport.d.ts +10 -0
  49. package/polyfill/RTCDtlsTransport.js +47 -0
  50. package/polyfill/RTCIceCandidate.d.ts +20 -0
  51. package/polyfill/RTCIceCandidate.js +126 -0
  52. package/polyfill/RTCIceTransport.d.ts +18 -0
  53. package/polyfill/RTCIceTransport.js +82 -0
  54. package/polyfill/RTCPeerConnection.d.ts +50 -0
  55. package/polyfill/RTCPeerConnection.js +371 -0
  56. package/polyfill/RTCSctpTransport.d.ts +10 -0
  57. package/polyfill/RTCSctpTransport.js +53 -0
  58. package/polyfill/RTCSessionDescription.d.ts +7 -0
  59. package/polyfill/RTCSessionDescription.js +37 -0
  60. package/polyfill/index.d.ts +14 -0
  61. package/polyfill/index.js +14 -0
  62. package/src/data-channel-wrapper.cpp +47 -6
  63. package/src/main.cpp +5 -5
  64. package/src/peer-connection-wrapper.cpp +191 -9
  65. package/src/peer-connection-wrapper.h +6 -0
  66. package/src/rtc-wrapper.cpp +14 -9
  67. package/src/thread-safe-callback.cpp +4 -10
  68. package/src/thread-safe-callback.h +3 -12
  69. package/test/connectivity.js +9 -4
  70. package/test/polyfill-connectivity.js +90 -0
  71. package/test/test.js +2 -2
  72. package/test/wpt.js +50 -0
  73. package/examples/README.md +0 -21
  74. package/node_modules/ansi-regex/index.js +0 -4
  75. package/node_modules/ansi-regex/license +0 -21
  76. package/node_modules/ansi-regex/package.json +0 -111
  77. package/node_modules/ansi-regex/readme.md +0 -39
  78. package/node_modules/aproba/LICENSE +0 -14
  79. package/node_modules/aproba/README.md +0 -94
  80. package/node_modules/aproba/index.js +0 -105
  81. package/node_modules/aproba/package.json +0 -65
  82. package/node_modules/base64-js/LICENSE +0 -21
  83. package/node_modules/base64-js/README.md +0 -34
  84. package/node_modules/base64-js/base64js.min.js +0 -1
  85. package/node_modules/base64-js/index.d.ts +0 -3
  86. package/node_modules/base64-js/index.js +0 -150
  87. package/node_modules/base64-js/package.json +0 -78
  88. package/node_modules/buffer/AUTHORS.md +0 -70
  89. package/node_modules/buffer/LICENSE +0 -21
  90. package/node_modules/buffer/README.md +0 -410
  91. package/node_modules/buffer/index.d.ts +0 -186
  92. package/node_modules/buffer/index.js +0 -1817
  93. package/node_modules/buffer/package.json +0 -130
  94. package/node_modules/chownr/LICENSE +0 -15
  95. package/node_modules/chownr/README.md +0 -3
  96. package/node_modules/chownr/chownr.js +0 -167
  97. package/node_modules/chownr/package.json +0 -66
  98. package/node_modules/code-point-at/index.js +0 -32
  99. package/node_modules/code-point-at/license +0 -21
  100. package/node_modules/code-point-at/package.json +0 -73
  101. package/node_modules/code-point-at/readme.md +0 -32
  102. package/node_modules/console-control-strings/LICENSE +0 -13
  103. package/node_modules/console-control-strings/README.md +0 -145
  104. package/node_modules/console-control-strings/README.md~ +0 -140
  105. package/node_modules/console-control-strings/index.js +0 -125
  106. package/node_modules/console-control-strings/package.json +0 -64
  107. package/node_modules/core-util-is/LICENSE +0 -19
  108. package/node_modules/core-util-is/README.md +0 -3
  109. package/node_modules/core-util-is/float.patch +0 -604
  110. package/node_modules/core-util-is/lib/util.js +0 -107
  111. package/node_modules/core-util-is/package.json +0 -70
  112. package/node_modules/core-util-is/test.js +0 -68
  113. package/node_modules/decompress-response/index.d.ts +0 -22
  114. package/node_modules/decompress-response/index.js +0 -58
  115. package/node_modules/decompress-response/license +0 -9
  116. package/node_modules/decompress-response/package.json +0 -91
  117. package/node_modules/decompress-response/readme.md +0 -48
  118. package/node_modules/deep-extend/CHANGELOG.md +0 -46
  119. package/node_modules/deep-extend/LICENSE +0 -20
  120. package/node_modules/deep-extend/README.md +0 -91
  121. package/node_modules/deep-extend/index.js +0 -1
  122. package/node_modules/deep-extend/lib/deep-extend.js +0 -150
  123. package/node_modules/deep-extend/package.json +0 -95
  124. package/node_modules/delegates/.npmignore +0 -1
  125. package/node_modules/delegates/History.md +0 -22
  126. package/node_modules/delegates/License +0 -20
  127. package/node_modules/delegates/Makefile +0 -8
  128. package/node_modules/delegates/Readme.md +0 -94
  129. package/node_modules/delegates/index.js +0 -121
  130. package/node_modules/delegates/package.json +0 -53
  131. package/node_modules/delegates/test/index.js +0 -94
  132. package/node_modules/detect-libc/LICENSE +0 -201
  133. package/node_modules/detect-libc/README.md +0 -160
  134. package/node_modules/detect-libc/index.d.ts +0 -11
  135. package/node_modules/detect-libc/lib/detect-libc.js +0 -178
  136. package/node_modules/detect-libc/lib/process.js +0 -16
  137. package/node_modules/detect-libc/package.json +0 -75
  138. package/node_modules/end-of-stream/LICENSE +0 -21
  139. package/node_modules/end-of-stream/README.md +0 -54
  140. package/node_modules/end-of-stream/index.js +0 -94
  141. package/node_modules/end-of-stream/package.json +0 -69
  142. package/node_modules/expand-template/.travis.yml +0 -6
  143. package/node_modules/expand-template/LICENSE +0 -21
  144. package/node_modules/expand-template/README.md +0 -43
  145. package/node_modules/expand-template/index.js +0 -26
  146. package/node_modules/expand-template/package.json +0 -63
  147. package/node_modules/expand-template/test.js +0 -67
  148. package/node_modules/fs-constants/LICENSE +0 -21
  149. package/node_modules/fs-constants/README.md +0 -26
  150. package/node_modules/fs-constants/browser.js +0 -1
  151. package/node_modules/fs-constants/index.js +0 -1
  152. package/node_modules/fs-constants/package.json +0 -50
  153. package/node_modules/github-from-package/.travis.yml +0 -4
  154. package/node_modules/github-from-package/LICENSE +0 -18
  155. package/node_modules/github-from-package/example/package.json +0 -8
  156. package/node_modules/github-from-package/example/url.js +0 -3
  157. package/node_modules/github-from-package/index.js +0 -17
  158. package/node_modules/github-from-package/package.json +0 -62
  159. package/node_modules/github-from-package/readme.markdown +0 -53
  160. package/node_modules/github-from-package/test/a.json +0 -8
  161. package/node_modules/github-from-package/test/b.json +0 -5
  162. package/node_modules/github-from-package/test/c.json +0 -5
  163. package/node_modules/github-from-package/test/d.json +0 -7
  164. package/node_modules/github-from-package/test/e.json +0 -5
  165. package/node_modules/github-from-package/test/url.js +0 -19
  166. package/node_modules/has-unicode/LICENSE +0 -14
  167. package/node_modules/has-unicode/README.md +0 -43
  168. package/node_modules/has-unicode/index.js +0 -16
  169. package/node_modules/has-unicode/package.json +0 -62
  170. package/node_modules/ieee754/LICENSE +0 -11
  171. package/node_modules/ieee754/README.md +0 -51
  172. package/node_modules/ieee754/index.d.ts +0 -10
  173. package/node_modules/ieee754/index.js +0 -85
  174. package/node_modules/ieee754/package.json +0 -87
  175. package/node_modules/inherits/LICENSE +0 -16
  176. package/node_modules/inherits/README.md +0 -42
  177. package/node_modules/inherits/inherits.js +0 -9
  178. package/node_modules/inherits/inherits_browser.js +0 -27
  179. package/node_modules/inherits/package.json +0 -78
  180. package/node_modules/ini/LICENSE +0 -15
  181. package/node_modules/ini/README.md +0 -102
  182. package/node_modules/ini/ini.js +0 -206
  183. package/node_modules/ini/package.json +0 -69
  184. package/node_modules/is-fullwidth-code-point/index.js +0 -46
  185. package/node_modules/is-fullwidth-code-point/license +0 -21
  186. package/node_modules/is-fullwidth-code-point/package.json +0 -80
  187. package/node_modules/is-fullwidth-code-point/readme.md +0 -39
  188. package/node_modules/isarray/.npmignore +0 -1
  189. package/node_modules/isarray/.travis.yml +0 -4
  190. package/node_modules/isarray/Makefile +0 -6
  191. package/node_modules/isarray/README.md +0 -60
  192. package/node_modules/isarray/component.json +0 -19
  193. package/node_modules/isarray/index.js +0 -5
  194. package/node_modules/isarray/package.json +0 -77
  195. package/node_modules/isarray/test.js +0 -20
  196. package/node_modules/lru-cache/LICENSE +0 -15
  197. package/node_modules/lru-cache/README.md +0 -166
  198. package/node_modules/lru-cache/index.js +0 -334
  199. package/node_modules/lru-cache/node_modules/yallist/LICENSE +0 -15
  200. package/node_modules/lru-cache/node_modules/yallist/README.md +0 -204
  201. package/node_modules/lru-cache/node_modules/yallist/iterator.js +0 -8
  202. package/node_modules/lru-cache/node_modules/yallist/package.json +0 -65
  203. package/node_modules/lru-cache/node_modules/yallist/yallist.js +0 -426
  204. package/node_modules/lru-cache/package.json +0 -73
  205. package/node_modules/mimic-response/index.d.ts +0 -17
  206. package/node_modules/mimic-response/index.js +0 -77
  207. package/node_modules/mimic-response/license +0 -9
  208. package/node_modules/mimic-response/package.json +0 -77
  209. package/node_modules/mimic-response/readme.md +0 -78
  210. package/node_modules/minimist/.travis.yml +0 -8
  211. package/node_modules/minimist/LICENSE +0 -18
  212. package/node_modules/minimist/example/parse.js +0 -2
  213. package/node_modules/minimist/index.js +0 -249
  214. package/node_modules/minimist/package.json +0 -79
  215. package/node_modules/minimist/readme.markdown +0 -98
  216. package/node_modules/minimist/test/all_bool.js +0 -32
  217. package/node_modules/minimist/test/bool.js +0 -178
  218. package/node_modules/minimist/test/dash.js +0 -31
  219. package/node_modules/minimist/test/default_bool.js +0 -35
  220. package/node_modules/minimist/test/dotted.js +0 -22
  221. package/node_modules/minimist/test/kv_short.js +0 -16
  222. package/node_modules/minimist/test/long.js +0 -31
  223. package/node_modules/minimist/test/num.js +0 -36
  224. package/node_modules/minimist/test/parse.js +0 -197
  225. package/node_modules/minimist/test/parse_modified.js +0 -9
  226. package/node_modules/minimist/test/proto.js +0 -60
  227. package/node_modules/minimist/test/short.js +0 -67
  228. package/node_modules/minimist/test/stop_early.js +0 -15
  229. package/node_modules/minimist/test/unknown.js +0 -102
  230. package/node_modules/minimist/test/whitespace.js +0 -8
  231. package/node_modules/mkdirp-classic/LICENSE +0 -21
  232. package/node_modules/mkdirp-classic/README.md +0 -18
  233. package/node_modules/mkdirp-classic/index.js +0 -98
  234. package/node_modules/mkdirp-classic/package.json +0 -50
  235. package/node_modules/napi-build-utils/LICENSE +0 -21
  236. package/node_modules/napi-build-utils/README.md +0 -48
  237. package/node_modules/napi-build-utils/index.js +0 -213
  238. package/node_modules/napi-build-utils/index.md +0 -81
  239. package/node_modules/napi-build-utils/package.json +0 -72
  240. package/node_modules/node-abi/.circleci/config.yml +0 -63
  241. package/node_modules/node-abi/.github/workflows/update-abi.yml +0 -41
  242. package/node_modules/node-abi/.releaserc.json +0 -9
  243. package/node_modules/node-abi/CODE_OF_CONDUCT.md +0 -73
  244. package/node_modules/node-abi/CONTRIBUTING.md +0 -53
  245. package/node_modules/node-abi/LICENSE +0 -21
  246. package/node_modules/node-abi/README.md +0 -50
  247. package/node_modules/node-abi/abi_registry.json +0 -186
  248. package/node_modules/node-abi/index.js +0 -179
  249. package/node_modules/node-abi/node_modules/semver/LICENSE +0 -15
  250. package/node_modules/node-abi/node_modules/semver/README.md +0 -568
  251. package/node_modules/node-abi/node_modules/semver/bin/semver.js +0 -183
  252. package/node_modules/node-abi/node_modules/semver/classes/comparator.js +0 -136
  253. package/node_modules/node-abi/node_modules/semver/classes/index.js +0 -5
  254. package/node_modules/node-abi/node_modules/semver/classes/range.js +0 -519
  255. package/node_modules/node-abi/node_modules/semver/classes/semver.js +0 -287
  256. package/node_modules/node-abi/node_modules/semver/functions/clean.js +0 -6
  257. package/node_modules/node-abi/node_modules/semver/functions/cmp.js +0 -52
  258. package/node_modules/node-abi/node_modules/semver/functions/coerce.js +0 -52
  259. package/node_modules/node-abi/node_modules/semver/functions/compare-build.js +0 -7
  260. package/node_modules/node-abi/node_modules/semver/functions/compare-loose.js +0 -3
  261. package/node_modules/node-abi/node_modules/semver/functions/compare.js +0 -5
  262. package/node_modules/node-abi/node_modules/semver/functions/diff.js +0 -23
  263. package/node_modules/node-abi/node_modules/semver/functions/eq.js +0 -3
  264. package/node_modules/node-abi/node_modules/semver/functions/gt.js +0 -3
  265. package/node_modules/node-abi/node_modules/semver/functions/gte.js +0 -3
  266. package/node_modules/node-abi/node_modules/semver/functions/inc.js +0 -18
  267. package/node_modules/node-abi/node_modules/semver/functions/lt.js +0 -3
  268. package/node_modules/node-abi/node_modules/semver/functions/lte.js +0 -3
  269. package/node_modules/node-abi/node_modules/semver/functions/major.js +0 -3
  270. package/node_modules/node-abi/node_modules/semver/functions/minor.js +0 -3
  271. package/node_modules/node-abi/node_modules/semver/functions/neq.js +0 -3
  272. package/node_modules/node-abi/node_modules/semver/functions/parse.js +0 -33
  273. package/node_modules/node-abi/node_modules/semver/functions/patch.js +0 -3
  274. package/node_modules/node-abi/node_modules/semver/functions/prerelease.js +0 -6
  275. package/node_modules/node-abi/node_modules/semver/functions/rcompare.js +0 -3
  276. package/node_modules/node-abi/node_modules/semver/functions/rsort.js +0 -3
  277. package/node_modules/node-abi/node_modules/semver/functions/satisfies.js +0 -10
  278. package/node_modules/node-abi/node_modules/semver/functions/sort.js +0 -3
  279. package/node_modules/node-abi/node_modules/semver/functions/valid.js +0 -6
  280. package/node_modules/node-abi/node_modules/semver/index.js +0 -48
  281. package/node_modules/node-abi/node_modules/semver/internal/constants.js +0 -17
  282. package/node_modules/node-abi/node_modules/semver/internal/debug.js +0 -9
  283. package/node_modules/node-abi/node_modules/semver/internal/identifiers.js +0 -23
  284. package/node_modules/node-abi/node_modules/semver/internal/parse-options.js +0 -11
  285. package/node_modules/node-abi/node_modules/semver/internal/re.js +0 -182
  286. package/node_modules/node-abi/node_modules/semver/package.json +0 -109
  287. package/node_modules/node-abi/node_modules/semver/preload.js +0 -2
  288. package/node_modules/node-abi/node_modules/semver/range.bnf +0 -16
  289. package/node_modules/node-abi/node_modules/semver/ranges/gtr.js +0 -4
  290. package/node_modules/node-abi/node_modules/semver/ranges/intersects.js +0 -7
  291. package/node_modules/node-abi/node_modules/semver/ranges/ltr.js +0 -4
  292. package/node_modules/node-abi/node_modules/semver/ranges/max-satisfying.js +0 -25
  293. package/node_modules/node-abi/node_modules/semver/ranges/min-satisfying.js +0 -24
  294. package/node_modules/node-abi/node_modules/semver/ranges/min-version.js +0 -61
  295. package/node_modules/node-abi/node_modules/semver/ranges/outside.js +0 -80
  296. package/node_modules/node-abi/node_modules/semver/ranges/simplify.js +0 -47
  297. package/node_modules/node-abi/node_modules/semver/ranges/subset.js +0 -244
  298. package/node_modules/node-abi/node_modules/semver/ranges/to-comparators.js +0 -8
  299. package/node_modules/node-abi/node_modules/semver/ranges/valid.js +0 -11
  300. package/node_modules/node-abi/package.json +0 -72
  301. package/node_modules/node-abi/scripts/update-abi-registry.js +0 -119
  302. package/node_modules/node-abi/test/index.js +0 -166
  303. package/node_modules/npmlog/CHANGELOG.md +0 -49
  304. package/node_modules/npmlog/LICENSE +0 -15
  305. package/node_modules/npmlog/README.md +0 -216
  306. package/node_modules/npmlog/log.js +0 -309
  307. package/node_modules/npmlog/node_modules/are-we-there-yet/CHANGES.md +0 -37
  308. package/node_modules/npmlog/node_modules/are-we-there-yet/LICENSE +0 -5
  309. package/node_modules/npmlog/node_modules/are-we-there-yet/README.md +0 -195
  310. package/node_modules/npmlog/node_modules/are-we-there-yet/index.js +0 -4
  311. package/node_modules/npmlog/node_modules/are-we-there-yet/package.json +0 -66
  312. package/node_modules/npmlog/node_modules/are-we-there-yet/tracker-base.js +0 -11
  313. package/node_modules/npmlog/node_modules/are-we-there-yet/tracker-group.js +0 -107
  314. package/node_modules/npmlog/node_modules/are-we-there-yet/tracker-stream.js +0 -36
  315. package/node_modules/npmlog/node_modules/are-we-there-yet/tracker.js +0 -30
  316. package/node_modules/npmlog/node_modules/gauge/CHANGELOG.md +0 -160
  317. package/node_modules/npmlog/node_modules/gauge/LICENSE +0 -13
  318. package/node_modules/npmlog/node_modules/gauge/README.md +0 -399
  319. package/node_modules/npmlog/node_modules/gauge/base-theme.js +0 -14
  320. package/node_modules/npmlog/node_modules/gauge/error.js +0 -24
  321. package/node_modules/npmlog/node_modules/gauge/has-color.js +0 -12
  322. package/node_modules/npmlog/node_modules/gauge/index.js +0 -233
  323. package/node_modules/npmlog/node_modules/gauge/package.json +0 -94
  324. package/node_modules/npmlog/node_modules/gauge/plumbing.js +0 -48
  325. package/node_modules/npmlog/node_modules/gauge/process.js +0 -3
  326. package/node_modules/npmlog/node_modules/gauge/progress-bar.js +0 -35
  327. package/node_modules/npmlog/node_modules/gauge/render-template.js +0 -181
  328. package/node_modules/npmlog/node_modules/gauge/set-immediate.js +0 -7
  329. package/node_modules/npmlog/node_modules/gauge/set-interval.js +0 -3
  330. package/node_modules/npmlog/node_modules/gauge/spin.js +0 -5
  331. package/node_modules/npmlog/node_modules/gauge/template-item.js +0 -73
  332. package/node_modules/npmlog/node_modules/gauge/theme-set.js +0 -115
  333. package/node_modules/npmlog/node_modules/gauge/themes.js +0 -54
  334. package/node_modules/npmlog/node_modules/gauge/wide-truncate.js +0 -25
  335. package/node_modules/npmlog/package.json +0 -78
  336. package/node_modules/number-is-nan/index.js +0 -4
  337. package/node_modules/number-is-nan/license +0 -21
  338. package/node_modules/number-is-nan/package.json +0 -70
  339. package/node_modules/number-is-nan/readme.md +0 -28
  340. package/node_modules/object-assign/index.js +0 -90
  341. package/node_modules/object-assign/license +0 -21
  342. package/node_modules/object-assign/package.json +0 -77
  343. package/node_modules/object-assign/readme.md +0 -61
  344. package/node_modules/once/LICENSE +0 -15
  345. package/node_modules/once/README.md +0 -79
  346. package/node_modules/once/once.js +0 -42
  347. package/node_modules/once/package.json +0 -74
  348. package/node_modules/prebuild-install/CHANGELOG.md +0 -98
  349. package/node_modules/prebuild-install/CONTRIBUTING.md +0 -6
  350. package/node_modules/prebuild-install/LICENSE +0 -21
  351. package/node_modules/prebuild-install/README.md +0 -159
  352. package/node_modules/prebuild-install/asset.js +0 -44
  353. package/node_modules/prebuild-install/bin.js +0 -78
  354. package/node_modules/prebuild-install/download.js +0 -142
  355. package/node_modules/prebuild-install/error.js +0 -14
  356. package/node_modules/prebuild-install/help.txt +0 -16
  357. package/node_modules/prebuild-install/index.js +0 -1
  358. package/node_modules/prebuild-install/log.js +0 -25
  359. package/node_modules/prebuild-install/package.json +0 -129
  360. package/node_modules/prebuild-install/proxy.js +0 -35
  361. package/node_modules/prebuild-install/rc.js +0 -60
  362. package/node_modules/prebuild-install/util.js +0 -143
  363. package/node_modules/process-nextick-args/index.js +0 -45
  364. package/node_modules/process-nextick-args/license.md +0 -19
  365. package/node_modules/process-nextick-args/package.json +0 -53
  366. package/node_modules/process-nextick-args/readme.md +0 -18
  367. package/node_modules/pump/.travis.yml +0 -5
  368. package/node_modules/pump/LICENSE +0 -21
  369. package/node_modules/pump/README.md +0 -65
  370. package/node_modules/pump/index.js +0 -82
  371. package/node_modules/pump/package.json +0 -63
  372. package/node_modules/pump/test-browser.js +0 -66
  373. package/node_modules/pump/test-node.js +0 -53
  374. package/node_modules/rc/LICENSE.APACHE2 +0 -15
  375. package/node_modules/rc/LICENSE.BSD +0 -26
  376. package/node_modules/rc/LICENSE.MIT +0 -24
  377. package/node_modules/rc/README.md +0 -227
  378. package/node_modules/rc/browser.js +0 -7
  379. package/node_modules/rc/cli.js +0 -4
  380. package/node_modules/rc/index.js +0 -53
  381. package/node_modules/rc/lib/utils.js +0 -104
  382. package/node_modules/rc/package.json +0 -70
  383. package/node_modules/rc/test/ini.js +0 -16
  384. package/node_modules/rc/test/nested-env-vars.js +0 -50
  385. package/node_modules/rc/test/test.js +0 -59
  386. package/node_modules/readable-stream/.travis.yml +0 -34
  387. package/node_modules/readable-stream/CONTRIBUTING.md +0 -38
  388. package/node_modules/readable-stream/GOVERNANCE.md +0 -136
  389. package/node_modules/readable-stream/LICENSE +0 -47
  390. package/node_modules/readable-stream/README.md +0 -58
  391. package/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +0 -60
  392. package/node_modules/readable-stream/duplex-browser.js +0 -1
  393. package/node_modules/readable-stream/duplex.js +0 -1
  394. package/node_modules/readable-stream/lib/_stream_duplex.js +0 -131
  395. package/node_modules/readable-stream/lib/_stream_passthrough.js +0 -47
  396. package/node_modules/readable-stream/lib/_stream_readable.js +0 -1019
  397. package/node_modules/readable-stream/lib/_stream_transform.js +0 -214
  398. package/node_modules/readable-stream/lib/_stream_writable.js +0 -687
  399. package/node_modules/readable-stream/lib/internal/streams/BufferList.js +0 -79
  400. package/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -74
  401. package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
  402. package/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
  403. package/node_modules/readable-stream/package.json +0 -87
  404. package/node_modules/readable-stream/passthrough.js +0 -1
  405. package/node_modules/readable-stream/readable-browser.js +0 -7
  406. package/node_modules/readable-stream/readable.js +0 -19
  407. package/node_modules/readable-stream/transform.js +0 -1
  408. package/node_modules/readable-stream/writable-browser.js +0 -1
  409. package/node_modules/readable-stream/writable.js +0 -8
  410. package/node_modules/safe-buffer/LICENSE +0 -21
  411. package/node_modules/safe-buffer/README.md +0 -584
  412. package/node_modules/safe-buffer/index.d.ts +0 -187
  413. package/node_modules/safe-buffer/index.js +0 -62
  414. package/node_modules/safe-buffer/package.json +0 -70
  415. package/node_modules/set-blocking/CHANGELOG.md +0 -26
  416. package/node_modules/set-blocking/LICENSE.txt +0 -14
  417. package/node_modules/set-blocking/README.md +0 -31
  418. package/node_modules/set-blocking/index.js +0 -7
  419. package/node_modules/set-blocking/package.json +0 -73
  420. package/node_modules/signal-exit/CHANGELOG.md +0 -35
  421. package/node_modules/signal-exit/LICENSE.txt +0 -16
  422. package/node_modules/signal-exit/README.md +0 -39
  423. package/node_modules/signal-exit/index.js +0 -163
  424. package/node_modules/signal-exit/package.json +0 -71
  425. package/node_modules/signal-exit/signals.js +0 -53
  426. package/node_modules/simple-concat/.travis.yml +0 -3
  427. package/node_modules/simple-concat/LICENSE +0 -20
  428. package/node_modules/simple-concat/README.md +0 -44
  429. package/node_modules/simple-concat/index.js +0 -15
  430. package/node_modules/simple-concat/package.json +0 -75
  431. package/node_modules/simple-concat/test/basic.js +0 -41
  432. package/node_modules/simple-get/.github/dependabot.yml +0 -15
  433. package/node_modules/simple-get/.github/workflows/ci.yml +0 -23
  434. package/node_modules/simple-get/LICENSE +0 -20
  435. package/node_modules/simple-get/README.md +0 -333
  436. package/node_modules/simple-get/index.js +0 -108
  437. package/node_modules/simple-get/package.json +0 -95
  438. package/node_modules/string-width/index.js +0 -37
  439. package/node_modules/string-width/license +0 -21
  440. package/node_modules/string-width/package.json +0 -95
  441. package/node_modules/string-width/readme.md +0 -42
  442. package/node_modules/string_decoder/.travis.yml +0 -50
  443. package/node_modules/string_decoder/LICENSE +0 -48
  444. package/node_modules/string_decoder/README.md +0 -47
  445. package/node_modules/string_decoder/lib/string_decoder.js +0 -296
  446. package/node_modules/string_decoder/package.json +0 -64
  447. package/node_modules/strip-ansi/index.js +0 -6
  448. package/node_modules/strip-ansi/license +0 -21
  449. package/node_modules/strip-ansi/package.json +0 -107
  450. package/node_modules/strip-ansi/readme.md +0 -33
  451. package/node_modules/strip-json-comments/index.js +0 -70
  452. package/node_modules/strip-json-comments/license +0 -21
  453. package/node_modules/strip-json-comments/package.json +0 -77
  454. package/node_modules/strip-json-comments/readme.md +0 -64
  455. package/node_modules/tar-fs/.travis.yml +0 -6
  456. package/node_modules/tar-fs/LICENSE +0 -21
  457. package/node_modules/tar-fs/README.md +0 -165
  458. package/node_modules/tar-fs/index.js +0 -351
  459. package/node_modules/tar-fs/package.json +0 -71
  460. package/node_modules/tar-fs/test/fixtures/a/hello.txt +0 -1
  461. package/node_modules/tar-fs/test/fixtures/b/a/test.txt +0 -1
  462. package/node_modules/tar-fs/test/fixtures/d/file1 +0 -0
  463. package/node_modules/tar-fs/test/fixtures/d/file2 +0 -0
  464. package/node_modules/tar-fs/test/fixtures/d/sub-dir/file5 +0 -0
  465. package/node_modules/tar-fs/test/fixtures/d/sub-files/file3 +0 -0
  466. package/node_modules/tar-fs/test/fixtures/d/sub-files/file4 +0 -0
  467. package/node_modules/tar-fs/test/fixtures/e/directory/.ignore +0 -0
  468. package/node_modules/tar-fs/test/fixtures/e/file +0 -0
  469. package/node_modules/tar-fs/test/fixtures/invalid.tar +0 -0
  470. package/node_modules/tar-fs/test/index.js +0 -346
  471. package/node_modules/tar-stream/LICENSE +0 -21
  472. package/node_modules/tar-stream/README.md +0 -168
  473. package/node_modules/tar-stream/extract.js +0 -257
  474. package/node_modules/tar-stream/headers.js +0 -293
  475. package/node_modules/tar-stream/index.js +0 -2
  476. package/node_modules/tar-stream/node_modules/bl/.travis.yml +0 -17
  477. package/node_modules/tar-stream/node_modules/bl/BufferList.js +0 -396
  478. package/node_modules/tar-stream/node_modules/bl/LICENSE.md +0 -13
  479. package/node_modules/tar-stream/node_modules/bl/README.md +0 -247
  480. package/node_modules/tar-stream/node_modules/bl/bl.js +0 -84
  481. package/node_modules/tar-stream/node_modules/bl/package.json +0 -68
  482. package/node_modules/tar-stream/node_modules/bl/test/convert.js +0 -21
  483. package/node_modules/tar-stream/node_modules/bl/test/indexOf.js +0 -492
  484. package/node_modules/tar-stream/node_modules/bl/test/isBufferList.js +0 -32
  485. package/node_modules/tar-stream/node_modules/bl/test/test.js +0 -869
  486. package/node_modules/tar-stream/node_modules/readable-stream/CONTRIBUTING.md +0 -38
  487. package/node_modules/tar-stream/node_modules/readable-stream/GOVERNANCE.md +0 -136
  488. package/node_modules/tar-stream/node_modules/readable-stream/LICENSE +0 -47
  489. package/node_modules/tar-stream/node_modules/readable-stream/README.md +0 -106
  490. package/node_modules/tar-stream/node_modules/readable-stream/errors-browser.js +0 -127
  491. package/node_modules/tar-stream/node_modules/readable-stream/errors.js +0 -116
  492. package/node_modules/tar-stream/node_modules/readable-stream/experimentalWarning.js +0 -17
  493. package/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_duplex.js +0 -139
  494. package/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_passthrough.js +0 -39
  495. package/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_readable.js +0 -1124
  496. package/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_transform.js +0 -201
  497. package/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_writable.js +0 -697
  498. package/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/async_iterator.js +0 -207
  499. package/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/buffer_list.js +0 -210
  500. package/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -105
  501. package/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +0 -104
  502. package/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/from-browser.js +0 -3
  503. package/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/from.js +0 -64
  504. package/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/pipeline.js +0 -97
  505. package/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/state.js +0 -27
  506. package/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
  507. package/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
  508. package/node_modules/tar-stream/node_modules/readable-stream/package.json +0 -101
  509. package/node_modules/tar-stream/node_modules/readable-stream/readable-browser.js +0 -9
  510. package/node_modules/tar-stream/node_modules/readable-stream/readable.js +0 -16
  511. package/node_modules/tar-stream/pack.js +0 -255
  512. package/node_modules/tar-stream/package.json +0 -95
  513. package/node_modules/tar-stream/sandbox.js +0 -11
  514. package/node_modules/tunnel-agent/LICENSE +0 -55
  515. package/node_modules/tunnel-agent/README.md +0 -4
  516. package/node_modules/tunnel-agent/index.js +0 -244
  517. package/node_modules/tunnel-agent/package.json +0 -59
  518. package/node_modules/util-deprecate/History.md +0 -16
  519. package/node_modules/util-deprecate/LICENSE +0 -24
  520. package/node_modules/util-deprecate/README.md +0 -53
  521. package/node_modules/util-deprecate/browser.js +0 -67
  522. package/node_modules/util-deprecate/node.js +0 -6
  523. package/node_modules/util-deprecate/package.json +0 -62
  524. package/node_modules/wide-align/LICENSE +0 -14
  525. package/node_modules/wide-align/README.md +0 -47
  526. package/node_modules/wide-align/align.js +0 -65
  527. package/node_modules/wide-align/package.json +0 -69
  528. package/node_modules/wrappy/LICENSE +0 -15
  529. package/node_modules/wrappy/README.md +0 -36
  530. package/node_modules/wrappy/package.json +0 -62
  531. package/node_modules/wrappy/wrappy.js +0 -33
  532. /package/{.eslintrc.js → .eslintrc.cjs} +0 -0
@@ -0,0 +1,41 @@
1
+ # WebRTC Polyfills
2
+
3
+ > This part is ongoing work and is considered to be in beta phase.
4
+
5
+ > Any feedback and contributions are welcomed.
6
+
7
+ WebRTC polyfills to be used for libraries like `simple-peer`.
8
+
9
+ ## Example Usage
10
+
11
+ > For a native usage example please check test folder.
12
+
13
+ `simple-peer` usage example
14
+
15
+ ```js
16
+ import Peer from 'simple-peer';
17
+ import nodeDatachannelPolyfill from 'node-datachannel/polyfill';
18
+
19
+ var peer1 = new Peer({ initiator: true, wrtc: nodeDatachannelPolyfill });
20
+ var peer2 = new Peer({ wrtc: nodeDatachannelPolyfill });
21
+
22
+ peer1.on('signal', (data) => {
23
+ // when peer1 has signaling data, give it to peer2 somehow
24
+ peer2.signal(data);
25
+ });
26
+
27
+ peer2.on('signal', (data) => {
28
+ // when peer2 has signaling data, give it to peer1 somehow
29
+ peer1.signal(data);
30
+ });
31
+
32
+ peer1.on('connect', () => {
33
+ // wait for 'connect' event before using the data channel
34
+ peer1.send('hey peer2, how is it going?');
35
+ });
36
+
37
+ peer2.on('data', (data) => {
38
+ // got a data channel message
39
+ console.log('got a message from peer1: ' + data);
40
+ });
41
+ ```
@@ -0,0 +1,7 @@
1
+ /// <reference lib="dom" />
2
+
3
+ export default class RTCCertificate implements RTCCertificate {
4
+ constructor();
5
+ readonly expires: number;
6
+ getFingerprints(): RTCDtlsFingerprint[];
7
+ }
@@ -0,0 +1,17 @@
1
+ export default class RTCCertificate {
2
+ #expires;
3
+ #fingerprints;
4
+
5
+ constructor() {
6
+ this.#expires = null;
7
+ this.#fingerprints = [];
8
+ }
9
+
10
+ get expires() {
11
+ return this.#expires;
12
+ }
13
+
14
+ getFingerprints() {
15
+ return this.#fingerprints;
16
+ }
17
+ }
@@ -0,0 +1,35 @@
1
+ /// <reference lib="dom" />
2
+
3
+ import NodeDataChannel from '../lib';
4
+
5
+ export default class _RTCDataChannel extends EventTarget implements RTCDataChannel {
6
+ constructor(dataChannel: NodeDataChannel.DataChannel, opts: RTCDataChannelInit);
7
+
8
+ // events
9
+ onbufferedamountlow: ((this: RTCDataChannel, ev: Event) => any) | null;
10
+ onclose: ((this: RTCDataChannel, ev: Event) => any) | null;
11
+ onclosing: ((this: RTCDataChannel, ev: Event) => any) | null;
12
+ onerror: ((this: RTCDataChannel, ev: Event) => any) | null;
13
+ onmessage: ((this: RTCDataChannel, ev: MessageEvent) => any) | null;
14
+ onopen: ((this: RTCDataChannel, ev: Event) => any) | null;
15
+
16
+ // props
17
+ binaryType: BinaryType;
18
+ bufferedAmountLowThreshold: number;
19
+ readonly bufferedAmount: number;
20
+ readonly id: number | null;
21
+ readonly label: string;
22
+ readonly maxPacketLifeTime: number | null;
23
+ readonly maxRetransmits: number | null;
24
+ readonly negotiated: boolean;
25
+ readonly ordered: boolean;
26
+ readonly protocol: string;
27
+ readonly readyState: RTCDataChannelState;
28
+
29
+ // methods
30
+ close(): void;
31
+ send(data: string): void;
32
+ send(data: ArrayBuffer): void;
33
+ send(data: ArrayBufferView): void;
34
+ send(data: Blob): void;
35
+ }
@@ -0,0 +1,175 @@
1
+ import DOMException from 'node-domexception';
2
+
3
+ export default class _RTCDataChannel extends EventTarget {
4
+ #dataChannel;
5
+ #readyState;
6
+ #bufferedAmountLowThreshold;
7
+ #binaryType;
8
+ #maxPacketLifeTime;
9
+ #maxRetransmits;
10
+ #negotiated;
11
+ #ordered;
12
+
13
+ onbufferedamountlow;
14
+ onclose;
15
+ onclosing;
16
+ onerror;
17
+ onmessage;
18
+ onopen;
19
+
20
+ constructor(dataChannel, opts = {}) {
21
+ super();
22
+
23
+ this.#dataChannel = dataChannel;
24
+ this.#binaryType = 'arraybuffer';
25
+ this.#readyState = this.#dataChannel.isOpen() ? 'open' : 'connecting';
26
+ this.#bufferedAmountLowThreshold = 0;
27
+ this.#maxPacketLifeTime = opts.maxPacketLifeTime || null;
28
+ this.#maxRetransmits = opts.maxRetransmits || null;
29
+ this.#negotiated = opts.negotiated || false;
30
+ this.#ordered = opts.ordered || true;
31
+
32
+ // forward dataChannel events
33
+ this.#dataChannel.onOpen(() => {
34
+ this.#readyState = 'open';
35
+ this.dispatchEvent(new Event('open'));
36
+ });
37
+
38
+ this.#dataChannel.onClosed(() => {
39
+ this.#readyState = 'closed';
40
+ this.dispatchEvent(new Event('close'));
41
+ });
42
+
43
+ this.#dataChannel.onError((msg) => {
44
+ this.dispatchEvent(
45
+ new RTCErrorEvent('error', {
46
+ error: new RTCError(
47
+ {
48
+ errorDetail: 'data-channel-failure',
49
+ },
50
+ msg,
51
+ ),
52
+ }),
53
+ );
54
+ });
55
+
56
+ this.#dataChannel.onBufferedAmountLow(() => {
57
+ this.dispatchEvent(new Event('bufferedamountlow'));
58
+ });
59
+
60
+ this.#dataChannel.onMessage((data) => {
61
+ if (ArrayBuffer.isView(data)) {
62
+ data = data.buffer;
63
+ }
64
+
65
+ this.dispatchEvent(new MessageEvent('message', { data }));
66
+ });
67
+
68
+ // forward events to properties
69
+ this.addEventListener('message', (e) => {
70
+ if (this.onmessage) this.onmessage(e);
71
+ });
72
+ this.addEventListener('bufferedamountlow', (e) => {
73
+ if (this.onbufferedamountlow) this.onbufferedamountlow(e);
74
+ });
75
+ this.addEventListener('error', (e) => {
76
+ if (this.onerror) this.onerror(e);
77
+ });
78
+ this.addEventListener('close', (e) => {
79
+ if (this.onclose) this.onclose(e);
80
+ });
81
+ this.addEventListener('closing', (e) => {
82
+ if (this.onclosing) this.onclosing(e);
83
+ });
84
+ this.addEventListener('open', (e) => {
85
+ if (this.onopen) this.onopen(e);
86
+ });
87
+ }
88
+
89
+ set binaryType(type) {
90
+ if (type !== 'blob' && type !== 'arraybuffer') {
91
+ throw new DOMException(
92
+ "Failed to set the 'binaryType' property on 'RTCDataChannel': Unknown binary type : " + type,
93
+ 'TypeMismatchError',
94
+ );
95
+ }
96
+ this.#binaryType = type;
97
+ }
98
+
99
+ get binaryType() {
100
+ return this.#binaryType;
101
+ }
102
+
103
+ get bufferedAmount() {
104
+ return this.#dataChannel.bufferedAmount();
105
+ }
106
+
107
+ get bufferedAmountLowThreshold() {
108
+ return this.#bufferedAmountLowThreshold;
109
+ }
110
+
111
+ set bufferedAmountLowThreshold(value) {
112
+ const number = Number(value) || 0;
113
+ this.#bufferedAmountLowThreshold = number;
114
+ this.#dataChannel.setBufferedAmountLowThreshold(number);
115
+ }
116
+
117
+ get id() {
118
+ return this.#dataChannel.getId();
119
+ }
120
+
121
+ get label() {
122
+ return this.#dataChannel.getLabel();
123
+ }
124
+
125
+ get maxPacketLifeTime() {
126
+ return this.#maxPacketLifeTime;
127
+ }
128
+
129
+ get maxRetransmits() {
130
+ return this.#maxRetransmits;
131
+ }
132
+
133
+ get negotiated() {
134
+ return this.#negotiated;
135
+ }
136
+
137
+ get ordered() {
138
+ return this.#ordered;
139
+ }
140
+
141
+ get protocol() {
142
+ return this.#dataChannel.getProtocol();
143
+ }
144
+
145
+ get readyState() {
146
+ return this.#readyState;
147
+ }
148
+
149
+ send(data) {
150
+ if (this.#readyState !== 'open') {
151
+ throw new DOMException(
152
+ "Failed to execute 'send' on 'RTCDataChannel': RTCDataChannel.readyState is not 'open'",
153
+ 'InvalidStateError',
154
+ );
155
+ }
156
+
157
+ // Needs network error, type error implemented
158
+ if (typeof data === 'string') {
159
+ this.#dataChannel.sendMessage(data);
160
+ } else if (data instanceof Blob) {
161
+ data.arrayBuffer().then((ab) => {
162
+ this.#dataChannel.sendMessageBinary(new Uint8Array(ab));
163
+ });
164
+ } else {
165
+ this.#dataChannel.sendMessageBinary(new Uint8Array(data));
166
+ }
167
+ }
168
+
169
+ close() {
170
+ this.#readyState = 'closing';
171
+ this.dispatchEvent(new Event('closing'));
172
+
173
+ this.#dataChannel.close();
174
+ }
175
+ }
@@ -0,0 +1,10 @@
1
+ /// <reference lib="dom" />
2
+
3
+ export default class _RTCDtlsTransport extends EventTarget implements RTCDtlsTransport {
4
+ readonly iceTransport: RTCIceTransport;
5
+ readonly state: RTCDtlsTransportState;
6
+ getRemoteCertificates(): ArrayBuffer[];
7
+
8
+ onstatechange: ((this: RTCDtlsTransport, ev: Event) => any) | null;
9
+ onerror: ((this: RTCDtlsTransport, ev: Event) => any) | null;
10
+ }
@@ -0,0 +1,47 @@
1
+ import RTCIceTransport from './RTCIceTransport.js';
2
+
3
+ export default class _RTCDtlsTransport extends EventTarget {
4
+ #pc = null;
5
+ #extraFunctions = null;
6
+ #iceTransport = null;
7
+
8
+ onerror = null;
9
+ onstatechange = null;
10
+
11
+ constructor({ pc, extraFunctions }) {
12
+ super();
13
+ this.#pc = pc;
14
+ this.#extraFunctions = extraFunctions;
15
+
16
+ this.#iceTransport = new RTCIceTransport({ pc, extraFunctions });
17
+
18
+ // forward peerConnection events
19
+ this.#pc.addEventListener('connectionstatechange', () => {
20
+ this.dispatchEvent(new Event('statechange'));
21
+ });
22
+
23
+ // forward events to properties
24
+ this.addEventListener('statechange', (e) => {
25
+ if (this.onstatechange) this.onstatechange(e);
26
+ });
27
+ }
28
+
29
+ get iceTransport() {
30
+ return this.#iceTransport;
31
+ }
32
+
33
+ get state() {
34
+ // reduce state from new, connecting, connected, disconnected, failed, closed, unknown
35
+ // to RTCDtlsTRansport states new, connecting, connected, closed, failed
36
+ let state = this.#pc ? this.#pc.connectionState : 'new';
37
+ if (state === 'disconnected' || state === 'unknown') {
38
+ state = 'closed';
39
+ }
40
+ return state;
41
+ }
42
+
43
+ getRemoteCertificates() {
44
+ // TODO: implement
45
+ return new ArrayBuffer(0);
46
+ }
47
+ }
@@ -0,0 +1,20 @@
1
+ /// <reference lib="dom" />
2
+
3
+ export default class _RTCIceCandidate implements RTCIceCandidate {
4
+ constructor(init: RTCIceCandidateInit);
5
+ readonly address: string | null;
6
+ readonly candidate: string;
7
+ readonly component: RTCIceComponent | null;
8
+ readonly foundation: string | null;
9
+ readonly port: number | null;
10
+ readonly priority: number | null;
11
+ readonly protocol: RTCIceProtocol | null;
12
+ readonly relatedAddress: string | null;
13
+ readonly relatedPort: number | null;
14
+ readonly sdpMLineIndex: number | null;
15
+ readonly sdpMid: string | null;
16
+ readonly tcpType: RTCIceTcpCandidateType | null;
17
+ readonly type: RTCIceCandidateType | null;
18
+ readonly usernameFragment: string | null;
19
+ toJSON(): RTCIceCandidateInit;
20
+ }
@@ -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] == '1' ? 'rtp' : 'rtcp';
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,82 @@
1
+ import RTCIceCandidate from './RTCIceCandidate.js';
2
+
3
+ export default class _RTCIceTransport extends EventTarget {
4
+ #pc = null;
5
+ #extraFunctions = null;
6
+
7
+ ongatheringstatechange = null;
8
+ onselectedcandidatepairchange = null;
9
+ onstatechange = null;
10
+
11
+ constructor({ pc, extraFunctions }) {
12
+ super();
13
+ this.#pc = pc;
14
+ this.#extraFunctions = extraFunctions;
15
+
16
+ // forward peerConnection events
17
+ this.#pc.addEventListener('icegatheringstatechange', () => {
18
+ this.dispatchEvent(new Event('gatheringstatechange'));
19
+ });
20
+ this.#pc.addEventListener('iceconnectionstatechange', () => {
21
+ console.log('*********');
22
+ this.dispatchEvent(new Event('statechange'));
23
+ });
24
+
25
+ // forward events to properties
26
+ this.addEventListener('gatheringstatechange', (e) => {
27
+ if (this.ongatheringstatechange) this.ongatheringstatechange(e);
28
+ });
29
+ this.addEventListener('statechange', (e) => {
30
+ if (this.onstatechange) this.onstatechange(e);
31
+ });
32
+ }
33
+
34
+ get component() {
35
+ let cp = this.getSelectedCandidatePair();
36
+ if (!cp) return null;
37
+ return cp.local.component;
38
+ }
39
+
40
+ get gatheringState() {
41
+ return this.#pc ? this.#pc.iceGatheringState : 'new';
42
+ }
43
+
44
+ get role() {
45
+ return this.#pc.localDescription.type == 'offer' ? 'controlling' : 'controlled';
46
+ }
47
+
48
+ get state() {
49
+ return this.#pc ? this.#pc.iceConnectionState : 'new';
50
+ }
51
+
52
+ getLocalCandidates() {
53
+ return this.#pc ? this.#extraFunctions.localCandidates() : [];
54
+ }
55
+
56
+ getLocalParameters() {
57
+ /** */
58
+ }
59
+
60
+ getRemoteCandidates() {
61
+ return this.#pc ? this.#extraFunctions.remoteCandidates() : [];
62
+ }
63
+
64
+ getRemoteParameters() {
65
+ /** */
66
+ }
67
+
68
+ getSelectedCandidatePair() {
69
+ let cp = this.#extraFunctions.selectedCandidatePair();
70
+ if (!cp) return null;
71
+ return {
72
+ local: new RTCIceCandidate({
73
+ candidate: cp.local.candidate,
74
+ sdpMid: cp.local.mid,
75
+ }),
76
+ remote: new RTCIceCandidate({
77
+ candidate: cp.remote.candidate,
78
+ sdpMid: cp.remote.mid,
79
+ }),
80
+ };
81
+ }
82
+ }
@@ -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
+ }