@webex/plugin-meetings 2.59.8-next.2 → 2.60.0-next.1

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 (433) hide show
  1. package/README.md +46 -8
  2. package/dist/annotation/annotation.types.js +7 -0
  3. package/dist/annotation/annotation.types.js.map +1 -0
  4. package/dist/annotation/constants.js +41 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +357 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +215 -0
  9. package/dist/breakouts/breakout.js.map +1 -0
  10. package/dist/breakouts/collection.js +22 -0
  11. package/dist/breakouts/collection.js.map +1 -0
  12. package/dist/breakouts/edit-lock-error.js +51 -0
  13. package/dist/breakouts/edit-lock-error.js.map +1 -0
  14. package/dist/breakouts/events.js +44 -0
  15. package/dist/breakouts/events.js.map +1 -0
  16. package/dist/breakouts/index.js +1047 -0
  17. package/dist/breakouts/index.js.map +1 -0
  18. package/dist/breakouts/request.js +77 -0
  19. package/dist/breakouts/request.js.map +1 -0
  20. package/dist/breakouts/utils.js +64 -0
  21. package/dist/breakouts/utils.js.map +1 -0
  22. package/dist/common/browser-detection.js +1 -2
  23. package/dist/common/browser-detection.js.map +1 -1
  24. package/dist/common/collection.js +1 -2
  25. package/dist/common/collection.js.map +1 -1
  26. package/dist/common/config.js +1 -2
  27. package/dist/common/config.js.map +1 -1
  28. package/dist/common/errors/captcha-error.js +1 -2
  29. package/dist/common/errors/captcha-error.js.map +1 -1
  30. package/dist/common/errors/intent-to-join.js +1 -2
  31. package/dist/common/errors/intent-to-join.js.map +1 -1
  32. package/dist/common/errors/join-meeting.js +1 -2
  33. package/dist/common/errors/join-meeting.js.map +1 -1
  34. package/dist/common/errors/media.js +1 -2
  35. package/dist/common/errors/media.js.map +1 -1
  36. package/dist/common/errors/no-meeting-info.js +50 -0
  37. package/dist/common/errors/no-meeting-info.js.map +1 -0
  38. package/dist/common/errors/parameter.js +3 -4
  39. package/dist/common/errors/parameter.js.map +1 -1
  40. package/dist/common/errors/password-error.js +1 -2
  41. package/dist/common/errors/password-error.js.map +1 -1
  42. package/dist/common/errors/permission.js +1 -2
  43. package/dist/common/errors/permission.js.map +1 -1
  44. package/dist/common/errors/reclaim-host-role-errors.js +154 -0
  45. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  46. package/dist/common/errors/reconnection-in-progress.js +1 -2
  47. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  48. package/dist/common/errors/reconnection.js +1 -2
  49. package/dist/common/errors/reconnection.js.map +1 -1
  50. package/dist/common/errors/stats.js +1 -2
  51. package/dist/common/errors/stats.js.map +1 -1
  52. package/dist/common/errors/webex-errors.js +48 -28
  53. package/dist/common/errors/webex-errors.js.map +1 -1
  54. package/dist/common/errors/webex-meetings-error.js +1 -2
  55. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  56. package/dist/common/events/events-scope.js +1 -2
  57. package/dist/common/events/events-scope.js.map +1 -1
  58. package/dist/common/events/events.js +1 -2
  59. package/dist/common/events/events.js.map +1 -1
  60. package/dist/common/events/trigger-proxy.js +1 -2
  61. package/dist/common/events/trigger-proxy.js.map +1 -1
  62. package/dist/common/events/util.js +1 -2
  63. package/dist/common/events/util.js.map +1 -1
  64. package/dist/common/logs/logger-config.js +1 -2
  65. package/dist/common/logs/logger-config.js.map +1 -1
  66. package/dist/common/logs/logger-proxy.js +2 -3
  67. package/dist/common/logs/logger-proxy.js.map +1 -1
  68. package/dist/common/logs/request.js +8 -5
  69. package/dist/common/logs/request.js.map +1 -1
  70. package/dist/common/queue.js +22 -9
  71. package/dist/common/queue.js.map +1 -1
  72. package/dist/config.js +9 -12
  73. package/dist/config.js.map +1 -1
  74. package/dist/constants.js +437 -433
  75. package/dist/constants.js.map +1 -1
  76. package/dist/controls-options-manager/constants.js +3 -6
  77. package/dist/controls-options-manager/constants.js.map +1 -1
  78. package/dist/controls-options-manager/enums.js +14 -6
  79. package/dist/controls-options-manager/enums.js.map +1 -1
  80. package/dist/controls-options-manager/index.js +126 -37
  81. package/dist/controls-options-manager/index.js.map +1 -1
  82. package/dist/controls-options-manager/types.js +7 -0
  83. package/dist/controls-options-manager/types.js.map +1 -0
  84. package/dist/controls-options-manager/util.js +309 -19
  85. package/dist/controls-options-manager/util.js.map +1 -1
  86. package/dist/index.js +116 -4
  87. package/dist/index.js.map +1 -1
  88. package/dist/interpretation/collection.js +22 -0
  89. package/dist/interpretation/collection.js.map +1 -0
  90. package/dist/interpretation/index.js +365 -0
  91. package/dist/interpretation/index.js.map +1 -0
  92. package/dist/interpretation/siLanguage.js +24 -0
  93. package/dist/interpretation/siLanguage.js.map +1 -0
  94. package/dist/locus-info/controlsUtils.js +95 -6
  95. package/dist/locus-info/controlsUtils.js.map +1 -1
  96. package/dist/locus-info/embeddedAppsUtils.js +3 -4
  97. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  98. package/dist/locus-info/fullState.js +1 -2
  99. package/dist/locus-info/fullState.js.map +1 -1
  100. package/dist/locus-info/hostUtils.js +1 -2
  101. package/dist/locus-info/hostUtils.js.map +1 -1
  102. package/dist/locus-info/index.js +408 -67
  103. package/dist/locus-info/index.js.map +1 -1
  104. package/dist/locus-info/infoUtils.js +13 -5
  105. package/dist/locus-info/infoUtils.js.map +1 -1
  106. package/dist/locus-info/mediaSharesUtils.js +58 -3
  107. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  108. package/dist/locus-info/parser.js +251 -78
  109. package/dist/locus-info/parser.js.map +1 -1
  110. package/dist/locus-info/selfUtils.js +97 -13
  111. package/dist/locus-info/selfUtils.js.map +1 -1
  112. package/dist/media/index.js +106 -319
  113. package/dist/media/index.js.map +1 -1
  114. package/dist/media/properties.js +96 -153
  115. package/dist/media/properties.js.map +1 -1
  116. package/dist/media/util.js +1 -22
  117. package/dist/media/util.js.map +1 -1
  118. package/dist/mediaQualityMetrics/config.js +498 -493
  119. package/dist/mediaQualityMetrics/config.js.map +1 -1
  120. package/dist/meeting/in-meeting-actions.js +90 -3
  121. package/dist/meeting/in-meeting-actions.js.map +1 -1
  122. package/dist/meeting/index.js +4579 -2951
  123. package/dist/meeting/index.js.map +1 -1
  124. package/dist/meeting/locusMediaRequest.js +291 -0
  125. package/dist/meeting/locusMediaRequest.js.map +1 -0
  126. package/dist/meeting/muteState.js +224 -133
  127. package/dist/meeting/muteState.js.map +1 -1
  128. package/dist/meeting/request.js +295 -197
  129. package/dist/meeting/request.js.map +1 -1
  130. package/dist/meeting/request.type.js +7 -0
  131. package/dist/meeting/request.type.js.map +1 -0
  132. package/dist/meeting/state.js +1 -2
  133. package/dist/meeting/state.js.map +1 -1
  134. package/dist/meeting/util.js +602 -432
  135. package/dist/meeting/util.js.map +1 -1
  136. package/dist/meeting-info/collection.js +1 -2
  137. package/dist/meeting-info/collection.js.map +1 -1
  138. package/dist/meeting-info/index.js +74 -7
  139. package/dist/meeting-info/index.js.map +1 -1
  140. package/dist/meeting-info/meeting-info-v2.js +197 -63
  141. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  142. package/dist/meeting-info/request.js +1 -2
  143. package/dist/meeting-info/request.js.map +1 -1
  144. package/dist/meeting-info/util.js +2 -3
  145. package/dist/meeting-info/util.js.map +1 -1
  146. package/dist/meeting-info/utilv2.js +25 -12
  147. package/dist/meeting-info/utilv2.js.map +1 -1
  148. package/dist/meetings/collection.js +23 -2
  149. package/dist/meetings/collection.js.map +1 -1
  150. package/dist/meetings/index.js +464 -123
  151. package/dist/meetings/index.js.map +1 -1
  152. package/dist/meetings/meetings.types.js +7 -0
  153. package/dist/meetings/meetings.types.js.map +1 -0
  154. package/dist/meetings/request.js +4 -3
  155. package/dist/meetings/request.js.map +1 -1
  156. package/dist/meetings/util.js +107 -6
  157. package/dist/meetings/util.js.map +1 -1
  158. package/dist/member/index.js +54 -2
  159. package/dist/member/index.js.map +1 -1
  160. package/dist/member/member.types.js +3 -4
  161. package/dist/member/member.types.js.map +1 -1
  162. package/dist/member/types.js +23 -0
  163. package/dist/member/types.js.map +1 -0
  164. package/dist/member/util.js +131 -29
  165. package/dist/member/util.js.map +1 -1
  166. package/dist/members/collection.js +11 -2
  167. package/dist/members/collection.js.map +1 -1
  168. package/dist/members/index.js +172 -8
  169. package/dist/members/index.js.map +1 -1
  170. package/dist/members/request.js +108 -41
  171. package/dist/members/request.js.map +1 -1
  172. package/dist/members/types.js +14 -0
  173. package/dist/members/types.js.map +1 -0
  174. package/dist/members/util.js +327 -234
  175. package/dist/members/util.js.map +1 -1
  176. package/dist/metrics/constants.js +14 -7
  177. package/dist/metrics/constants.js.map +1 -1
  178. package/dist/metrics/index.js +4 -452
  179. package/dist/metrics/index.js.map +1 -1
  180. package/dist/multistream/mediaRequestManager.js +344 -0
  181. package/dist/multistream/mediaRequestManager.js.map +1 -0
  182. package/dist/multistream/receiveSlot.js +200 -0
  183. package/dist/multistream/receiveSlot.js.map +1 -0
  184. package/dist/multistream/receiveSlotManager.js +174 -0
  185. package/dist/multistream/receiveSlotManager.js.map +1 -0
  186. package/dist/multistream/remoteMedia.js +268 -0
  187. package/dist/multistream/remoteMedia.js.map +1 -0
  188. package/dist/multistream/remoteMediaGroup.js +267 -0
  189. package/dist/multistream/remoteMediaGroup.js.map +1 -0
  190. package/dist/multistream/remoteMediaManager.js +1211 -0
  191. package/dist/multistream/remoteMediaManager.js.map +1 -0
  192. package/dist/multistream/sendSlotManager.js +236 -0
  193. package/dist/multistream/sendSlotManager.js.map +1 -0
  194. package/dist/networkQualityMonitor/index.js +5 -4
  195. package/dist/networkQualityMonitor/index.js.map +1 -1
  196. package/dist/personal-meeting-room/index.js +2 -3
  197. package/dist/personal-meeting-room/index.js.map +1 -1
  198. package/dist/personal-meeting-room/request.js +2 -3
  199. package/dist/personal-meeting-room/request.js.map +1 -1
  200. package/dist/personal-meeting-room/util.js +1 -2
  201. package/dist/personal-meeting-room/util.js.map +1 -1
  202. package/dist/reachability/index.js +258 -72
  203. package/dist/reachability/index.js.map +1 -1
  204. package/dist/reachability/request.js +18 -10
  205. package/dist/reachability/request.js.map +1 -1
  206. package/dist/reactions/constants.js +12 -0
  207. package/dist/reactions/constants.js.map +1 -0
  208. package/dist/reactions/reactions.js +4 -6
  209. package/dist/reactions/reactions.js.map +1 -1
  210. package/dist/reactions/reactions.type.js +21 -23
  211. package/dist/reactions/reactions.type.js.map +1 -1
  212. package/dist/reconnection-manager/index.js +272 -220
  213. package/dist/reconnection-manager/index.js.map +1 -1
  214. package/dist/recording-controller/enums.js +4 -5
  215. package/dist/recording-controller/enums.js.map +1 -1
  216. package/dist/recording-controller/index.js +57 -46
  217. package/dist/recording-controller/index.js.map +1 -1
  218. package/dist/recording-controller/util.js +10 -10
  219. package/dist/recording-controller/util.js.map +1 -1
  220. package/dist/roap/index.js +101 -235
  221. package/dist/roap/index.js.map +1 -1
  222. package/dist/roap/request.js +126 -180
  223. package/dist/roap/request.js.map +1 -1
  224. package/dist/roap/turnDiscovery.js +115 -105
  225. package/dist/roap/turnDiscovery.js.map +1 -1
  226. package/dist/rtcMetrics/constants.js +11 -0
  227. package/dist/rtcMetrics/constants.js.map +1 -0
  228. package/dist/rtcMetrics/index.js +115 -0
  229. package/dist/rtcMetrics/index.js.map +1 -0
  230. package/dist/statsAnalyzer/global.js +2 -93
  231. package/dist/statsAnalyzer/global.js.map +1 -1
  232. package/dist/statsAnalyzer/index.js +374 -374
  233. package/dist/statsAnalyzer/index.js.map +1 -1
  234. package/dist/statsAnalyzer/mqaUtil.js +100 -66
  235. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  236. package/dist/transcription/index.js +1 -2
  237. package/dist/transcription/index.js.map +1 -1
  238. package/dist/webinar/collection.js +43 -0
  239. package/dist/webinar/collection.js.map +1 -0
  240. package/dist/webinar/index.js +68 -0
  241. package/dist/webinar/index.js.map +1 -0
  242. package/package.json +27 -18
  243. package/src/annotation/annotation.types.ts +50 -0
  244. package/src/annotation/constants.ts +36 -0
  245. package/src/annotation/index.ts +328 -0
  246. package/src/breakouts/README.md +220 -0
  247. package/src/breakouts/breakout.ts +188 -0
  248. package/src/breakouts/collection.ts +19 -0
  249. package/src/breakouts/edit-lock-error.ts +25 -0
  250. package/src/breakouts/events.ts +56 -0
  251. package/src/breakouts/index.ts +925 -0
  252. package/src/breakouts/request.ts +55 -0
  253. package/src/breakouts/utils.ts +57 -0
  254. package/src/common/errors/no-meeting-info.ts +24 -0
  255. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  256. package/src/common/errors/webex-errors.ts +36 -12
  257. package/src/common/logs/logger-proxy.ts +1 -1
  258. package/src/common/logs/request.ts +5 -1
  259. package/src/common/queue.ts +22 -8
  260. package/src/config.ts +7 -9
  261. package/src/constants.ts +263 -89
  262. package/src/controls-options-manager/enums.ts +11 -1
  263. package/src/controls-options-manager/index.ts +116 -21
  264. package/src/controls-options-manager/types.ts +59 -0
  265. package/src/controls-options-manager/util.ts +294 -14
  266. package/src/index.ts +40 -0
  267. package/src/interpretation/README.md +60 -0
  268. package/src/interpretation/collection.ts +19 -0
  269. package/src/interpretation/index.ts +332 -0
  270. package/src/interpretation/siLanguage.ts +18 -0
  271. package/src/locus-info/controlsUtils.ts +110 -0
  272. package/src/locus-info/index.ts +449 -61
  273. package/src/locus-info/infoUtils.ts +14 -2
  274. package/src/locus-info/mediaSharesUtils.ts +64 -0
  275. package/src/locus-info/parser.ts +258 -47
  276. package/src/locus-info/selfUtils.ts +85 -2
  277. package/src/media/index.ts +153 -370
  278. package/src/media/properties.ts +106 -136
  279. package/src/media/util.ts +0 -21
  280. package/src/mediaQualityMetrics/config.ts +379 -377
  281. package/src/meeting/in-meeting-actions.ts +168 -0
  282. package/src/meeting/index.ts +3801 -2457
  283. package/src/meeting/locusMediaRequest.ts +313 -0
  284. package/src/meeting/muteState.ts +224 -138
  285. package/src/meeting/request.ts +207 -127
  286. package/src/meeting/request.type.ts +13 -0
  287. package/src/meeting/util.ts +590 -423
  288. package/src/meeting-info/index.ts +81 -8
  289. package/src/meeting-info/meeting-info-v2.ts +159 -13
  290. package/src/meeting-info/util.ts +1 -1
  291. package/src/meeting-info/utilv2.ts +22 -9
  292. package/src/meetings/collection.ts +20 -0
  293. package/src/meetings/index.ts +466 -124
  294. package/src/meetings/meetings.types.ts +12 -0
  295. package/src/meetings/request.ts +2 -0
  296. package/src/meetings/util.ts +116 -5
  297. package/src/member/index.ts +52 -1
  298. package/src/member/types.ts +38 -0
  299. package/src/member/util.ts +139 -28
  300. package/src/members/collection.ts +8 -0
  301. package/src/members/index.ts +196 -7
  302. package/src/members/request.ts +97 -17
  303. package/src/members/types.ts +29 -0
  304. package/src/members/util.ts +333 -240
  305. package/src/metrics/constants.ts +12 -4
  306. package/src/metrics/index.ts +1 -471
  307. package/src/multistream/mediaRequestManager.ts +440 -0
  308. package/src/multistream/receiveSlot.ts +184 -0
  309. package/src/multistream/receiveSlotManager.ts +166 -0
  310. package/src/multistream/remoteMedia.ts +254 -0
  311. package/src/multistream/remoteMediaGroup.ts +284 -0
  312. package/src/multistream/remoteMediaManager.ts +1145 -0
  313. package/src/multistream/sendSlotManager.ts +170 -0
  314. package/src/networkQualityMonitor/index.ts +6 -6
  315. package/src/reachability/index.ts +238 -45
  316. package/src/reachability/request.ts +17 -8
  317. package/src/reactions/constants.ts +4 -0
  318. package/src/reactions/reactions.ts +4 -4
  319. package/src/reactions/reactions.type.ts +30 -4
  320. package/src/reconnection-manager/index.ts +124 -107
  321. package/src/recording-controller/index.ts +20 -3
  322. package/src/recording-controller/util.ts +26 -9
  323. package/src/roap/index.ts +98 -240
  324. package/src/roap/request.ts +74 -148
  325. package/src/roap/turnDiscovery.ts +62 -56
  326. package/src/rtcMetrics/constants.ts +3 -0
  327. package/src/rtcMetrics/index.ts +100 -0
  328. package/src/statsAnalyzer/global.ts +1 -92
  329. package/src/statsAnalyzer/index.ts +429 -447
  330. package/src/statsAnalyzer/mqaUtil.ts +105 -103
  331. package/src/webinar/collection.ts +31 -0
  332. package/src/webinar/index.ts +62 -0
  333. package/test/integration/spec/converged-space-meetings.js +233 -0
  334. package/test/integration/spec/journey.js +320 -264
  335. package/test/integration/spec/space-meeting.js +77 -4
  336. package/test/unit/spec/annotation/index.ts +418 -0
  337. package/test/unit/spec/breakouts/breakout.ts +237 -0
  338. package/test/unit/spec/breakouts/collection.ts +15 -0
  339. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  340. package/test/unit/spec/breakouts/events.ts +89 -0
  341. package/test/unit/spec/breakouts/index.ts +1790 -0
  342. package/test/unit/spec/breakouts/request.ts +104 -0
  343. package/test/unit/spec/breakouts/utils.js +72 -0
  344. package/test/unit/spec/common/queue.js +31 -2
  345. package/test/unit/spec/controls-options-manager/index.js +163 -0
  346. package/test/unit/spec/controls-options-manager/util.js +576 -60
  347. package/test/unit/spec/fixture/locus.js +1 -0
  348. package/test/unit/spec/interpretation/collection.ts +15 -0
  349. package/test/unit/spec/interpretation/index.ts +589 -0
  350. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  351. package/test/unit/spec/locus-info/controlsUtils.js +323 -30
  352. package/test/unit/spec/locus-info/index.js +1390 -16
  353. package/test/unit/spec/locus-info/infoUtils.js +54 -16
  354. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  355. package/test/unit/spec/locus-info/lib/selfConstant.js +48 -0
  356. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  357. package/test/unit/spec/locus-info/parser.js +116 -35
  358. package/test/unit/spec/locus-info/selfUtils.js +275 -0
  359. package/test/unit/spec/media/index.ts +274 -0
  360. package/test/unit/spec/media/properties.ts +75 -84
  361. package/test/unit/spec/meeting/in-meeting-actions.ts +82 -0
  362. package/test/unit/spec/meeting/index.js +7420 -3125
  363. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  364. package/test/unit/spec/meeting/muteState.js +407 -212
  365. package/test/unit/spec/meeting/request.js +512 -42
  366. package/test/unit/spec/meeting/utils.js +741 -24
  367. package/test/unit/spec/meeting-info/index.js +300 -0
  368. package/test/unit/spec/meeting-info/meetinginfov2.js +500 -6
  369. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  370. package/test/unit/spec/meetings/collection.js +14 -0
  371. package/test/unit/spec/meetings/index.js +1012 -209
  372. package/test/unit/spec/meetings/utils.js +202 -2
  373. package/test/unit/spec/member/index.js +38 -8
  374. package/test/unit/spec/member/util.js +528 -27
  375. package/test/unit/spec/members/index.js +597 -3
  376. package/test/unit/spec/members/request.js +206 -27
  377. package/test/unit/spec/members/utils.js +210 -0
  378. package/test/unit/spec/metrics/index.js +1 -50
  379. package/test/unit/spec/multistream/mediaRequestManager.ts +1418 -0
  380. package/test/unit/spec/multistream/receiveSlot.ts +163 -0
  381. package/test/unit/spec/multistream/receiveSlotManager.ts +203 -0
  382. package/test/unit/spec/multistream/remoteMedia.ts +255 -0
  383. package/test/unit/spec/multistream/remoteMediaGroup.ts +662 -0
  384. package/test/unit/spec/multistream/remoteMediaManager.ts +1924 -0
  385. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  386. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  387. package/test/unit/spec/reachability/index.ts +598 -24
  388. package/test/unit/spec/reachability/request.js +68 -0
  389. package/test/unit/spec/reconnection-manager/index.js +130 -22
  390. package/test/unit/spec/recording-controller/index.js +293 -218
  391. package/test/unit/spec/recording-controller/util.js +223 -96
  392. package/test/unit/spec/roap/index.ts +200 -77
  393. package/test/unit/spec/roap/request.ts +232 -0
  394. package/test/unit/spec/roap/turnDiscovery.ts +86 -48
  395. package/test/unit/spec/rtcMetrics/index.ts +73 -0
  396. package/test/unit/spec/stats-analyzer/index.js +205 -50
  397. package/test/unit/spec/webinar/collection.ts +13 -0
  398. package/test/unit/spec/webinar/index.ts +60 -0
  399. package/test/utils/constants.js +9 -0
  400. package/test/utils/integrationTestUtils.js +46 -0
  401. package/test/utils/testUtils.js +0 -45
  402. package/test/utils/webex-config.js +4 -0
  403. package/test/utils/webex-test-users.js +7 -3
  404. package/dist/meeting/effectsState.js +0 -260
  405. package/dist/meeting/effectsState.js.map +0 -1
  406. package/dist/metrics/config.js +0 -289
  407. package/dist/metrics/config.js.map +0 -1
  408. package/dist/peer-connection-manager/index.js +0 -671
  409. package/dist/peer-connection-manager/index.js.map +0 -1
  410. package/dist/peer-connection-manager/util.js +0 -110
  411. package/dist/peer-connection-manager/util.js.map +0 -1
  412. package/dist/roap/collection.js +0 -63
  413. package/dist/roap/collection.js.map +0 -1
  414. package/dist/roap/handler.js +0 -279
  415. package/dist/roap/handler.js.map +0 -1
  416. package/dist/roap/state.js +0 -127
  417. package/dist/roap/state.js.map +0 -1
  418. package/dist/roap/util.js +0 -76
  419. package/dist/roap/util.js.map +0 -1
  420. package/src/index.js +0 -15
  421. package/src/meeting/effectsState.ts +0 -209
  422. package/src/metrics/config.ts +0 -485
  423. package/src/peer-connection-manager/index.ts +0 -847
  424. package/src/peer-connection-manager/util.ts +0 -119
  425. package/src/roap/collection.ts +0 -62
  426. package/src/roap/handler.ts +0 -294
  427. package/src/roap/state.ts +0 -156
  428. package/src/roap/util.ts +0 -100
  429. package/test/unit/spec/meeting/effectsState.js +0 -281
  430. package/test/unit/spec/peerconnection-manager/index.js +0 -218
  431. package/test/unit/spec/peerconnection-manager/utils.js +0 -49
  432. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -388
  433. package/test/unit/spec/roap/util.js +0 -30
@@ -12,13 +12,15 @@ var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/obj
12
12
  var _now = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/date/now"));
13
13
  var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
14
14
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
15
+ var _assign = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/assign"));
15
16
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/toConsumableArray"));
16
17
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
17
18
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
18
19
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
19
20
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
20
- var _lodash = _interopRequireDefault(require("lodash"));
21
+ var _lodash = require("lodash");
21
22
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
23
+ var _util = _interopRequireDefault(require("../meeting/util"));
22
24
  var _constants = require("../constants");
23
25
  var _request = _interopRequireDefault(require("./request"));
24
26
  /*!
@@ -31,11 +33,18 @@ var _request = _interopRequireDefault(require("./request"));
31
33
  var DEFAULT_TIMEOUT = 3000;
32
34
  var VIDEO_MESH_TIMEOUT = 1000;
33
35
 
36
+ // result for a specific transport protocol (like udp or tcp)
37
+
38
+ // reachability result for a specifc media cluster
39
+
40
+ // this is the type that is required by the backend when we send them reachability results
41
+
42
+ // this is the type used by Reachability class internally and stored in local storage
34
43
  /**
35
44
  * @class Reachability
36
45
  * @export
37
46
  */
38
- var Reachability = /*#__PURE__*/function () {
47
+ var Reachability = exports.default = /*#__PURE__*/function () {
39
48
  /**
40
49
  * Creates an instance of Reachability.
41
50
  * @param {object} webex
@@ -43,6 +52,7 @@ var Reachability = /*#__PURE__*/function () {
43
52
  */
44
53
  function Reachability(webex) {
45
54
  (0, _classCallCheck2.default)(this, Reachability);
55
+ (0, _defineProperty2.default)(this, "namespace", _constants.REACHABILITY.namespace);
46
56
  (0, _defineProperty2.default)(this, "webex", void 0);
47
57
  (0, _defineProperty2.default)(this, "reachabilityRequest", void 0);
48
58
  (0, _defineProperty2.default)(this, "clusterLatencyResults", void 0);
@@ -76,80 +86,210 @@ var Reachability = /*#__PURE__*/function () {
76
86
  */
77
87
  (0, _createClass2.default)(Reachability, [{
78
88
  key: "gatherReachability",
79
- value: function () {
89
+ value: (function () {
80
90
  var _gatherReachability = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
81
- var _window, _window$localStorage;
82
- var clusters, results;
91
+ var _yield$this$reachabil, clusters, joinCookie, results;
83
92
  return _regenerator.default.wrap(function _callee$(_context) {
84
93
  while (1) switch (_context.prev = _context.next) {
85
94
  case 0:
86
95
  this.setup();
87
96
 
88
97
  // Remove stored reachability results to ensure no stale data
89
- if (!((_window = window) !== null && _window !== void 0 && (_window$localStorage = _window.localStorage) !== null && _window$localStorage !== void 0 && _window$localStorage.removeItem)) {
90
- _context.next = 5;
91
- break;
92
- }
93
- window.localStorage.removeItem(_constants.REACHABILITY.localStorage);
94
- _context.next = 7;
95
- break;
98
+ // @ts-ignore
99
+ _context.next = 3;
100
+ return this.webex.boundedStorage.del(this.namespace, _constants.REACHABILITY.localStorageResult);
101
+ case 3:
102
+ _context.next = 5;
103
+ return this.webex.boundedStorage.del(this.namespace, _constants.REACHABILITY.localStorageJoinCookie);
96
104
  case 5:
97
- _loggerProxy.default.logger.error('Reachability:index#gatherReachability --> Error in accessing LocalStorage.');
98
- return _context.abrupt("return", {});
99
- case 7:
100
- _context.prev = 7;
101
- _context.next = 10;
102
- return this.reachabilityRequest.getClusters();
103
- case 10:
104
- clusters = _context.sent;
105
+ _context.prev = 5;
106
+ _context.next = 8;
107
+ return this.reachabilityRequest.getClusters(_util.default.getIpVersion(this.webex));
108
+ case 8:
109
+ _yield$this$reachabil = _context.sent;
110
+ clusters = _yield$this$reachabil.clusters;
111
+ joinCookie = _yield$this$reachabil.joinCookie;
105
112
  _context.next = 13;
106
113
  return this.performReachabilityCheck(clusters);
107
114
  case 13:
108
115
  results = _context.sent;
109
- window.localStorage.setItem(_constants.REACHABILITY.localStorage, (0, _stringify.default)(results));
116
+ _context.next = 16;
117
+ return this.webex.boundedStorage.put(this.namespace, _constants.REACHABILITY.localStorageResult, (0, _stringify.default)(results));
118
+ case 16:
119
+ _context.next = 18;
120
+ return this.webex.boundedStorage.put(this.namespace, _constants.REACHABILITY.localStorageJoinCookie, (0, _stringify.default)(joinCookie));
121
+ case 18:
110
122
  _loggerProxy.default.logger.log('Reachability:index#gatherReachability --> Reachability checks completed');
111
123
  return _context.abrupt("return", results);
112
- case 19:
113
- _context.prev = 19;
114
- _context.t0 = _context["catch"](7);
124
+ case 22:
125
+ _context.prev = 22;
126
+ _context.t0 = _context["catch"](5);
115
127
  _loggerProxy.default.logger.error("Reachability:index#gatherReachability --> Error in calling getClusters(): ".concat(_context.t0));
116
128
  return _context.abrupt("return", {});
117
- case 23:
129
+ case 26:
118
130
  case "end":
119
131
  return _context.stop();
120
132
  }
121
- }, _callee, this, [[7, 19]]);
133
+ }, _callee, this, [[5, 22]]);
122
134
  }));
123
135
  function gatherReachability() {
124
136
  return _gatherReachability.apply(this, arguments);
125
137
  }
126
138
  return gatherReachability;
127
139
  }()
140
+ /**
141
+ * Returns statistics about last reachability results. The returned value is an object
142
+ * with a flat list of properties so that it can be easily sent with metrics
143
+ *
144
+ * @returns {Promise} Promise with metrics values, it never rejects/throws.
145
+ */
146
+ )
147
+ }, {
148
+ key: "getReachabilityMetrics",
149
+ value: (function () {
150
+ var _getReachabilityMetrics = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
151
+ var stats, updateStats, resultsJson, internalResults;
152
+ return _regenerator.default.wrap(function _callee2$(_context2) {
153
+ while (1) switch (_context2.prev = _context2.next) {
154
+ case 0:
155
+ stats = {
156
+ reachability_public_udp_success: 0,
157
+ reachability_public_udp_failed: 0,
158
+ reachability_public_tcp_success: 0,
159
+ reachability_public_tcp_failed: 0,
160
+ reachability_vmn_udp_success: 0,
161
+ reachability_vmn_udp_failed: 0,
162
+ reachability_vmn_tcp_success: 0,
163
+ reachability_vmn_tcp_failed: 0
164
+ };
165
+ updateStats = function updateStats(clusterType, result) {
166
+ var _result$udp, _result$tcp;
167
+ if ((_result$udp = result.udp) !== null && _result$udp !== void 0 && _result$udp.reachable) {
168
+ var outcome = result.udp.reachable === 'true' ? 'success' : 'failed';
169
+ stats["reachability_".concat(clusterType, "_udp_").concat(outcome)] += 1;
170
+ }
171
+ if ((_result$tcp = result.tcp) !== null && _result$tcp !== void 0 && _result$tcp.reachable) {
172
+ var _outcome = result.tcp.reachable === 'true' ? 'success' : 'failed';
173
+ stats["reachability_".concat(clusterType, "_tcp_").concat(_outcome)] += 1;
174
+ }
175
+ };
176
+ _context2.prev = 2;
177
+ _context2.next = 5;
178
+ return this.webex.boundedStorage.get(_constants.REACHABILITY.namespace, _constants.REACHABILITY.localStorageResult);
179
+ case 5:
180
+ resultsJson = _context2.sent;
181
+ internalResults = JSON.parse(resultsJson);
182
+ (0, _values.default)(internalResults).forEach(function (result) {
183
+ updateStats(result.isVideoMesh ? 'vmn' : 'public', result);
184
+ });
185
+ _context2.next = 13;
186
+ break;
187
+ case 10:
188
+ _context2.prev = 10;
189
+ _context2.t0 = _context2["catch"](2);
190
+ // empty storage, that's ok
191
+ _loggerProxy.default.logger.warn('Roap:request#getReachabilityMetrics --> Error parsing reachability data: ', _context2.t0);
192
+ case 13:
193
+ return _context2.abrupt("return", stats);
194
+ case 14:
195
+ case "end":
196
+ return _context2.stop();
197
+ }
198
+ }, _callee2, this, [[2, 10]]);
199
+ }));
200
+ function getReachabilityMetrics() {
201
+ return _getReachabilityMetrics.apply(this, arguments);
202
+ }
203
+ return getReachabilityMetrics;
204
+ }()
205
+ /**
206
+ * Reachability results as an object in the format that backend expects
207
+ *
208
+ * @returns {any} reachability results that need to be sent to the backend
209
+ */
210
+ )
211
+ }, {
212
+ key: "getReachabilityResults",
213
+ value: (function () {
214
+ var _getReachabilityResults = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
215
+ var results, reachabilityResultsProps, resultsJson, internalResults;
216
+ return _regenerator.default.wrap(function _callee3$(_context3) {
217
+ while (1) switch (_context3.prev = _context3.next) {
218
+ case 0:
219
+ // these are the only props that backend needs in the reachability results:
220
+ reachabilityResultsProps = ['udp', 'tcp', 'xtls'];
221
+ _context3.prev = 1;
222
+ _context3.next = 4;
223
+ return this.webex.boundedStorage.get(_constants.REACHABILITY.namespace, _constants.REACHABILITY.localStorageResult);
224
+ case 4:
225
+ resultsJson = _context3.sent;
226
+ internalResults = JSON.parse(resultsJson);
227
+ results = (0, _lodash.mapValues)(internalResults, function (result) {
228
+ return (0, _lodash.pick)(result, reachabilityResultsProps);
229
+ });
230
+ _context3.next = 12;
231
+ break;
232
+ case 9:
233
+ _context3.prev = 9;
234
+ _context3.t0 = _context3["catch"](1);
235
+ // empty storage, that's ok
236
+ _loggerProxy.default.logger.warn('Roap:request#attachReachabilityData --> Error parsing reachability data: ', _context3.t0);
237
+ case 12:
238
+ return _context3.abrupt("return", results);
239
+ case 13:
240
+ case "end":
241
+ return _context3.stop();
242
+ }
243
+ }, _callee3, this, [[1, 9]]);
244
+ }));
245
+ function getReachabilityResults() {
246
+ return _getReachabilityResults.apply(this, arguments);
247
+ }
248
+ return getReachabilityResults;
249
+ }()
128
250
  /**
129
251
  * fetches reachability data and checks for cluster reachability
130
252
  * @returns {boolean}
131
253
  * @public
132
254
  * @memberof Reachability
133
255
  */
256
+ )
134
257
  }, {
135
- key: "isAnyClusterReachable",
136
- value: function isAnyClusterReachable() {
137
- var reachable = false;
138
- var reachabilityData = window.localStorage.getItem(_constants.REACHABILITY.localStorage);
139
- if (reachabilityData) {
140
- try {
141
- var reachabilityResults = JSON.parse(reachabilityData);
142
- reachable = (0, _values.default)(reachabilityResults).some(function (result) {
143
- var _result$udp, _result$tcp;
144
- return ((_result$udp = result.udp) === null || _result$udp === void 0 ? void 0 : _result$udp.reachable) === 'true' || ((_result$tcp = result.tcp) === null || _result$tcp === void 0 ? void 0 : _result$tcp.reachable) === 'true';
145
- });
146
- } catch (e) {
147
- _loggerProxy.default.logger.error("Roap:request#attachReachabilityData --> Error in parsing reachability data: ".concat(e));
148
- }
258
+ key: "isAnyPublicClusterReachable",
259
+ value: (function () {
260
+ var _isAnyPublicClusterReachable = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
261
+ var reachable, reachabilityData, reachabilityResults;
262
+ return _regenerator.default.wrap(function _callee4$(_context4) {
263
+ while (1) switch (_context4.prev = _context4.next) {
264
+ case 0:
265
+ reachable = false; // @ts-ignore
266
+ _context4.next = 3;
267
+ return this.webex.boundedStorage.get(this.namespace, _constants.REACHABILITY.localStorageResult).catch(function () {});
268
+ case 3:
269
+ reachabilityData = _context4.sent;
270
+ if (reachabilityData) {
271
+ try {
272
+ reachabilityResults = JSON.parse(reachabilityData);
273
+ reachable = (0, _values.default)(reachabilityResults).some(function (result) {
274
+ var _result$udp2, _result$tcp2;
275
+ return !result.isVideoMesh && (((_result$udp2 = result.udp) === null || _result$udp2 === void 0 ? void 0 : _result$udp2.reachable) === 'true' || ((_result$tcp2 = result.tcp) === null || _result$tcp2 === void 0 ? void 0 : _result$tcp2.reachable) === 'true');
276
+ });
277
+ } catch (e) {
278
+ _loggerProxy.default.logger.error("Roap:request#attachReachabilityData --> Error in parsing reachability data: ".concat(e));
279
+ }
280
+ }
281
+ return _context4.abrupt("return", reachable);
282
+ case 6:
283
+ case "end":
284
+ return _context4.stop();
285
+ }
286
+ }, _callee4, this);
287
+ }));
288
+ function isAnyPublicClusterReachable() {
289
+ return _isAnyPublicClusterReachable.apply(this, arguments);
149
290
  }
150
- return reachable;
151
- }
152
-
291
+ return isAnyPublicClusterReachable;
292
+ }()
153
293
  /**
154
294
  * Generate peerConnection config settings
155
295
  * @param {object} cluster
@@ -157,10 +297,11 @@ var Reachability = /*#__PURE__*/function () {
157
297
  * @private
158
298
  * @memberof Reachability
159
299
  */
300
+ )
160
301
  }, {
161
302
  key: "buildPeerConnectionConfig",
162
303
  value: function buildPeerConnectionConfig(cluster) {
163
- var iceServers = _lodash.default.uniq([].concat((0, _toConsumableArray2.default)(cluster.udp), (0, _toConsumableArray2.default)(cluster.tcp))).map(function (url) {
304
+ var iceServers = (0, _lodash.uniq)(cluster.udp).map(function (url) {
164
305
  return {
165
306
  username: '',
166
307
  credential: '',
@@ -226,10 +367,10 @@ var Reachability = /*#__PURE__*/function () {
226
367
  var _this = this;
227
368
  var clusters = (0, _toConsumableArray2.default)((0, _keys.default)(clusterList));
228
369
  clusters = clusters.map( /*#__PURE__*/function () {
229
- var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(key) {
370
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(key) {
230
371
  var cluster, config, peerConnection, description;
231
- return _regenerator.default.wrap(function _callee2$(_context2) {
232
- while (1) switch (_context2.prev = _context2.next) {
372
+ return _regenerator.default.wrap(function _callee5$(_context5) {
373
+ while (1) switch (_context5.prev = _context5.next) {
233
374
  case 0:
234
375
  cluster = clusterList[key];
235
376
  config = _this.buildPeerConnectionConfig(cluster);
@@ -237,29 +378,29 @@ var Reachability = /*#__PURE__*/function () {
237
378
  key: key,
238
379
  config: config
239
380
  });
240
- _context2.next = 5;
381
+ _context5.next = 5;
241
382
  return peerConnection.createOffer({
242
383
  offerToReceiveAudio: true
243
384
  });
244
385
  case 5:
245
- description = _context2.sent;
386
+ description = _context5.sent;
246
387
  // @ts-ignore
247
388
  peerConnection.begin = (0, _now.default)();
248
389
  peerConnection.setLocalDescription(description);
249
- return _context2.abrupt("return", _this.iceGatheringState(peerConnection, cluster.isVideoMesh ? VIDEO_MESH_TIMEOUT : DEFAULT_TIMEOUT).catch(function (iceGatheringStateError) {
390
+ return _context5.abrupt("return", _this.iceGatheringState(peerConnection, cluster.isVideoMesh).catch(function (iceGatheringStateError) {
250
391
  _loggerProxy.default.logger.log("Reachability:index#getLocalSDPForClusters --> Error in getLocalSDP : ".concat(iceGatheringStateError));
251
392
  }));
252
393
  case 9:
253
394
  case "end":
254
- return _context2.stop();
395
+ return _context5.stop();
255
396
  }
256
- }, _callee2);
397
+ }, _callee5);
257
398
  }));
258
399
  return function (_x) {
259
400
  return _ref.apply(this, arguments);
260
401
  };
261
402
  }());
262
- return _promise.default.all(clusters).then(this.parseIceResultsToReachabilityResults).then(function (reachabilityLatencyResults) {
403
+ return _promise.default.all(clusters).then(this.parseIceResultsToInternalReachabilityResults).then(function (reachabilityLatencyResults) {
263
404
  _this.logUnreachableClusters();
264
405
 
265
406
  // return results
@@ -330,6 +471,8 @@ var Reachability = /*#__PURE__*/function () {
330
471
  var elapsed = _this3.getElapsedTime(peerConnection);
331
472
  _loggerProxy.default.logger.log( // @ts-ignore
332
473
  "Reachability:index#onIceCandidate --> Successfully pinged ".concat(peerConnection.key, ":"), elapsed);
474
+ // order is important
475
+ _this3.addPublicIP(peerConnection, e.candidate.address);
333
476
  _this3.setLatencyAndClose(peerConnection, elapsed);
334
477
  }
335
478
  };
@@ -341,16 +484,18 @@ var Reachability = /*#__PURE__*/function () {
341
484
  * speed.
342
485
  * @private
343
486
  * @param {RTCPeerConnection} peerConnection
344
- * @param {number} timeout
487
+ * @param {boolean} isVideoMesh
345
488
  * @returns {Promise}
346
489
  */
347
490
  }, {
348
491
  key: "iceGatheringState",
349
- value: function iceGatheringState(peerConnection, timeout) {
492
+ value: function iceGatheringState(peerConnection, isVideoMesh) {
350
493
  var _this4 = this;
351
494
  var ELAPSED = 'elapsed';
495
+ var timeout = isVideoMesh ? VIDEO_MESH_TIMEOUT : DEFAULT_TIMEOUT;
352
496
  return new _promise.default(function (resolve) {
353
497
  var peerConnectionProxy = new window.Proxy(peerConnection, {
498
+ // eslint-disable-next-line require-jsdoc
354
499
  get: function get(target, property) {
355
500
  var targetMember = target[property];
356
501
  if (typeof targetMember === 'function') {
@@ -361,9 +506,12 @@ var Reachability = /*#__PURE__*/function () {
361
506
  set: function set(target, property, value) {
362
507
  // only intercept elapsed property
363
508
  if (property === ELAPSED) {
364
- // @ts-ignore
365
509
  resolve({
510
+ // @ts-ignore
366
511
  clusterId: peerConnection.key,
512
+ isVideoMesh: isVideoMesh,
513
+ // @ts-ignore
514
+ publicIPs: target.publicIPs,
367
515
  elapsed: value
368
516
  });
369
517
  return true;
@@ -385,6 +533,8 @@ var Reachability = /*#__PURE__*/function () {
385
533
 
386
534
  // Close any open peerConnections
387
535
  if (peerConnectionProxy.connectionState !== CLOSED) {
536
+ // order is important
537
+ _this4.addPublicIP(peerConnectionProxy, null);
388
538
  _this4.setLatencyAndClose(peerConnectionProxy, null);
389
539
  }
390
540
  }, timeout);
@@ -408,32 +558,45 @@ var Reachability = /*#__PURE__*/function () {
408
558
 
409
559
  /**
410
560
  * Calculates time to establish connection
411
- * @param {array} iceResults iceResults
561
+ * @param {Array<ICECandidateResult>} iceResults iceResults
412
562
  * @returns {object} reachabilityMap
413
- * @private
563
+ * @protected
414
564
  * @memberof Reachability
415
565
  */
416
566
  }, {
417
- key: "parseIceResultsToReachabilityResults",
418
- value: function parseIceResultsToReachabilityResults(iceResults) {
567
+ key: "parseIceResultsToInternalReachabilityResults",
568
+ value: function parseIceResultsToInternalReachabilityResults(iceResults) {
419
569
  var reachabilityMap = {};
420
570
  iceResults.forEach(function (_ref2) {
421
571
  var clusterId = _ref2.clusterId,
422
- elapsed = _ref2.elapsed;
423
- var latencyResult;
424
- if (elapsed === null) {
425
- latencyResult = {
572
+ isVideoMesh = _ref2.isVideoMesh,
573
+ elapsed = _ref2.elapsed,
574
+ publicIPs = _ref2.publicIPs;
575
+ var latencyResult = {};
576
+ if (!elapsed) {
577
+ (0, _assign.default)(latencyResult, {
426
578
  reachable: 'false'
427
- };
579
+ });
428
580
  } else {
429
- latencyResult = {
581
+ (0, _assign.default)(latencyResult, {
430
582
  reachable: 'true',
431
583
  latencyInMilliseconds: elapsed.toString()
432
- };
584
+ });
585
+ }
586
+ if (publicIPs) {
587
+ (0, _assign.default)(latencyResult, {
588
+ clientMediaIPs: publicIPs
589
+ });
433
590
  }
434
591
  reachabilityMap[clusterId] = {
435
592
  udp: latencyResult,
436
- tcp: latencyResult
593
+ tcp: {
594
+ untested: 'true'
595
+ },
596
+ xtls: {
597
+ untested: 'true'
598
+ },
599
+ isVideoMesh: isVideoMesh
437
600
  };
438
601
  });
439
602
  return reachabilityMap;
@@ -442,7 +605,7 @@ var Reachability = /*#__PURE__*/function () {
442
605
  /**
443
606
  * fetches reachability data
444
607
  * @param {object} clusterList
445
- * @returns {Promise<localSDPData>} reachability check results
608
+ * @returns {Promise<InternalReachabilityResults>} reachability check results
446
609
  * @private
447
610
  * @memberof Reachability
448
611
  */
@@ -469,6 +632,31 @@ var Reachability = /*#__PURE__*/function () {
469
632
  });
470
633
  }
471
634
 
635
+ /**
636
+ * Adds public IP (client media IPs)
637
+ * @param {RTCPeerConnection} peerConnection
638
+ * @param {string} publicIP
639
+ * @returns {void}
640
+ */
641
+ }, {
642
+ key: "addPublicIP",
643
+ value: function addPublicIP(peerConnection, publicIP) {
644
+ var modifiedPeerConnection = peerConnection;
645
+ var CLOSED = _constants.CONNECTION_STATE.CLOSED;
646
+ if (modifiedPeerConnection.connectionState === CLOSED) {
647
+ _loggerProxy.default.logger.log("Reachability:index#addPublicIP --> Attempting to set publicIP of ".concat(publicIP, " on closed peerConnection."));
648
+ }
649
+ if (publicIP) {
650
+ if (modifiedPeerConnection.publicIPs) {
651
+ modifiedPeerConnection.publicIPs.push(publicIP);
652
+ } else {
653
+ modifiedPeerConnection.publicIPs = [publicIP];
654
+ }
655
+ } else {
656
+ modifiedPeerConnection.publicIPs = null;
657
+ }
658
+ }
659
+
472
660
  /**
473
661
  * Records latency and closes the peerConnection
474
662
  * @param {RTCPeerConnection} peerConnection
@@ -480,14 +668,13 @@ var Reachability = /*#__PURE__*/function () {
480
668
  }, {
481
669
  key: "setLatencyAndClose",
482
670
  value: function setLatencyAndClose(peerConnection, elapsed) {
483
- var _intialState;
484
671
  var REACHABLE = 'reachable';
485
672
  var UNREACHABLE = 'unreachable';
486
673
  var CLOSED = _constants.CONNECTION_STATE.CLOSED;
487
674
  // @ts-ignore
488
675
  var key = peerConnection.key;
489
676
  var resultKey = elapsed === null ? UNREACHABLE : REACHABLE;
490
- var intialState = (_intialState = {}, (0, _defineProperty2.default)(_intialState, REACHABLE, 0), (0, _defineProperty2.default)(_intialState, UNREACHABLE, 0), _intialState);
677
+ var intialState = (0, _defineProperty2.default)((0, _defineProperty2.default)({}, REACHABLE, 0), UNREACHABLE, 0);
491
678
  if (peerConnection.connectionState === CLOSED) {
492
679
  _loggerProxy.default.logger.log("Reachability:index#setLatencyAndClose --> Attempting to set latency of ".concat(elapsed, " on closed peerConnection."));
493
680
  return;
@@ -517,5 +704,4 @@ var Reachability = /*#__PURE__*/function () {
517
704
  }]);
518
705
  return Reachability;
519
706
  }();
520
- exports.default = Reachability;
521
707
  //# sourceMappingURL=index.js.map