@webex/plugin-meetings 3.0.0-beta.15 → 3.0.0-beta.151

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 (480) hide show
  1. package/README.md +45 -1
  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 +49 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +359 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +193 -0
  9. package/dist/breakouts/breakout.js.map +1 -0
  10. package/dist/breakouts/collection.js +23 -0
  11. package/dist/breakouts/collection.js.map +1 -0
  12. package/dist/breakouts/edit-lock-error.js +52 -0
  13. package/dist/breakouts/edit-lock-error.js.map +1 -0
  14. package/dist/breakouts/events.js +43 -0
  15. package/dist/breakouts/events.js.map +1 -0
  16. package/dist/breakouts/index.js +1046 -0
  17. package/dist/breakouts/index.js.map +1 -0
  18. package/dist/breakouts/request.js +78 -0
  19. package/dist/breakouts/request.js.map +1 -0
  20. package/dist/breakouts/utils.js +67 -0
  21. package/dist/breakouts/utils.js.map +1 -0
  22. package/dist/common/browser-detection.js +1 -21
  23. package/dist/common/browser-detection.js.map +1 -1
  24. package/dist/common/collection.js +5 -20
  25. package/dist/common/collection.js.map +1 -1
  26. package/dist/common/config.js +0 -7
  27. package/dist/common/config.js.map +1 -1
  28. package/dist/common/errors/captcha-error.js +0 -21
  29. package/dist/common/errors/captcha-error.js.map +1 -1
  30. package/dist/common/errors/intent-to-join.js +0 -21
  31. package/dist/common/errors/intent-to-join.js.map +1 -1
  32. package/dist/common/errors/join-meeting.js +0 -21
  33. package/dist/common/errors/join-meeting.js.map +1 -1
  34. package/dist/common/errors/media.js +0 -21
  35. package/dist/common/errors/media.js.map +1 -1
  36. package/dist/common/errors/parameter.js +0 -28
  37. package/dist/common/errors/parameter.js.map +1 -1
  38. package/dist/common/errors/password-error.js +0 -21
  39. package/dist/common/errors/password-error.js.map +1 -1
  40. package/dist/common/errors/permission.js +0 -21
  41. package/dist/common/errors/permission.js.map +1 -1
  42. package/dist/common/errors/reconnection-in-progress.js +0 -17
  43. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  44. package/dist/common/errors/reconnection.js +0 -21
  45. package/dist/common/errors/reconnection.js.map +1 -1
  46. package/dist/common/errors/stats.js +0 -21
  47. package/dist/common/errors/stats.js.map +1 -1
  48. package/dist/common/errors/webex-errors.js +9 -43
  49. package/dist/common/errors/webex-errors.js.map +1 -1
  50. package/dist/common/errors/webex-meetings-error.js +1 -24
  51. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  52. package/dist/common/events/events-scope.js +0 -22
  53. package/dist/common/events/events-scope.js.map +1 -1
  54. package/dist/common/events/events.js +0 -23
  55. package/dist/common/events/events.js.map +1 -1
  56. package/dist/common/events/trigger-proxy.js +0 -12
  57. package/dist/common/events/trigger-proxy.js.map +1 -1
  58. package/dist/common/events/util.js +0 -15
  59. package/dist/common/events/util.js.map +1 -1
  60. package/dist/common/logs/logger-config.js +0 -4
  61. package/dist/common/logs/logger-config.js.map +1 -1
  62. package/dist/common/logs/logger-proxy.js +1 -8
  63. package/dist/common/logs/logger-proxy.js.map +1 -1
  64. package/dist/common/logs/request.js +35 -61
  65. package/dist/common/logs/request.js.map +1 -1
  66. package/dist/common/queue.js +4 -14
  67. package/dist/common/queue.js.map +1 -1
  68. package/dist/config.js +7 -13
  69. package/dist/config.js.map +1 -1
  70. package/dist/constants.js +208 -64
  71. package/dist/constants.js.map +1 -1
  72. package/dist/controls-options-manager/constants.js +14 -0
  73. package/dist/controls-options-manager/constants.js.map +1 -0
  74. package/dist/controls-options-manager/enums.js +27 -0
  75. package/dist/controls-options-manager/enums.js.map +1 -0
  76. package/dist/controls-options-manager/index.js +297 -0
  77. package/dist/controls-options-manager/index.js.map +1 -0
  78. package/dist/controls-options-manager/types.js +7 -0
  79. package/dist/controls-options-manager/types.js.map +1 -0
  80. package/dist/controls-options-manager/util.js +300 -0
  81. package/dist/controls-options-manager/util.js.map +1 -0
  82. package/dist/index.js +78 -17
  83. package/dist/index.js.map +1 -1
  84. package/dist/locus-info/controlsUtils.js +100 -29
  85. package/dist/locus-info/controlsUtils.js.map +1 -1
  86. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  87. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  88. package/dist/locus-info/fullState.js +0 -15
  89. package/dist/locus-info/fullState.js.map +1 -1
  90. package/dist/locus-info/hostUtils.js +4 -12
  91. package/dist/locus-info/hostUtils.js.map +1 -1
  92. package/dist/locus-info/index.js +387 -208
  93. package/dist/locus-info/index.js.map +1 -1
  94. package/dist/locus-info/infoUtils.js +0 -38
  95. package/dist/locus-info/infoUtils.js.map +1 -1
  96. package/dist/locus-info/mediaSharesUtils.js +54 -38
  97. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  98. package/dist/locus-info/parser.js +90 -126
  99. package/dist/locus-info/parser.js.map +1 -1
  100. package/dist/locus-info/selfUtils.js +93 -92
  101. package/dist/locus-info/selfUtils.js.map +1 -1
  102. package/dist/media/index.js +70 -219
  103. package/dist/media/index.js.map +1 -1
  104. package/dist/media/properties.js +74 -198
  105. package/dist/media/properties.js.map +1 -1
  106. package/dist/media/util.js +1 -8
  107. package/dist/media/util.js.map +1 -1
  108. package/dist/mediaQualityMetrics/config.js +505 -495
  109. package/dist/mediaQualityMetrics/config.js.map +1 -1
  110. package/dist/meeting/in-meeting-actions.js +79 -14
  111. package/dist/meeting/in-meeting-actions.js.map +1 -1
  112. package/dist/meeting/index.js +2685 -3324
  113. package/dist/meeting/index.js.map +1 -1
  114. package/dist/meeting/locusMediaRequest.js +291 -0
  115. package/dist/meeting/locusMediaRequest.js.map +1 -0
  116. package/dist/meeting/muteState.js +243 -185
  117. package/dist/meeting/muteState.js.map +1 -1
  118. package/dist/meeting/request.js +296 -342
  119. package/dist/meeting/request.js.map +1 -1
  120. package/dist/meeting/request.type.js +0 -1
  121. package/dist/meeting/request.type.js.map +1 -1
  122. package/dist/meeting/state.js +16 -26
  123. package/dist/meeting/state.js.map +1 -1
  124. package/dist/meeting/util.js +446 -585
  125. package/dist/meeting/util.js.map +1 -1
  126. package/dist/meeting-info/collection.js +3 -25
  127. package/dist/meeting-info/collection.js.map +1 -1
  128. package/dist/meeting-info/index.js +8 -31
  129. package/dist/meeting-info/index.js.map +1 -1
  130. package/dist/meeting-info/meeting-info-v2.js +261 -242
  131. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  132. package/dist/meeting-info/request.js +1 -16
  133. package/dist/meeting-info/request.js.map +1 -1
  134. package/dist/meeting-info/util.js +98 -183
  135. package/dist/meeting-info/util.js.map +1 -1
  136. package/dist/meeting-info/utilv2.js +156 -232
  137. package/dist/meeting-info/utilv2.js.map +1 -1
  138. package/dist/meetings/collection.js +24 -20
  139. package/dist/meetings/collection.js.map +1 -1
  140. package/dist/meetings/index.js +526 -372
  141. package/dist/meetings/index.js.map +1 -1
  142. package/dist/meetings/meetings.types.js +7 -0
  143. package/dist/meetings/meetings.types.js.map +1 -0
  144. package/dist/meetings/request.js +21 -40
  145. package/dist/meetings/request.js.map +1 -1
  146. package/dist/meetings/util.js +172 -141
  147. package/dist/meetings/util.js.map +1 -1
  148. package/dist/member/index.js +58 -57
  149. package/dist/member/index.js.map +1 -1
  150. package/dist/member/types.js +15 -0
  151. package/dist/member/types.js.map +1 -0
  152. package/dist/member/util.js +101 -69
  153. package/dist/member/util.js.map +1 -1
  154. package/dist/members/collection.js +12 -12
  155. package/dist/members/collection.js.map +1 -1
  156. package/dist/members/index.js +123 -162
  157. package/dist/members/index.js.map +1 -1
  158. package/dist/members/request.js +120 -85
  159. package/dist/members/request.js.map +1 -1
  160. package/dist/members/types.js +15 -0
  161. package/dist/members/types.js.map +1 -0
  162. package/dist/members/util.js +314 -260
  163. package/dist/members/util.js.map +1 -1
  164. package/dist/metrics/config.js +50 -16
  165. package/dist/metrics/config.js.map +1 -1
  166. package/dist/metrics/constants.js +4 -7
  167. package/dist/metrics/constants.js.map +1 -1
  168. package/dist/metrics/index.js +75 -147
  169. package/dist/metrics/index.js.map +1 -1
  170. package/dist/multistream/mediaRequestManager.js +170 -50
  171. package/dist/multistream/mediaRequestManager.js.map +1 -1
  172. package/dist/multistream/receiveSlot.js +58 -65
  173. package/dist/multistream/receiveSlot.js.map +1 -1
  174. package/dist/multistream/receiveSlotManager.js +73 -94
  175. package/dist/multistream/receiveSlotManager.js.map +1 -1
  176. package/dist/multistream/remoteMedia.js +55 -74
  177. package/dist/multistream/remoteMedia.js.map +1 -1
  178. package/dist/multistream/remoteMediaGroup.js +66 -43
  179. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  180. package/dist/multistream/remoteMediaManager.js +502 -442
  181. package/dist/multistream/remoteMediaManager.js.map +1 -1
  182. package/dist/networkQualityMonitor/index.js +24 -51
  183. package/dist/networkQualityMonitor/index.js.map +1 -1
  184. package/dist/personal-meeting-room/index.js +3 -38
  185. package/dist/personal-meeting-room/index.js.map +1 -1
  186. package/dist/personal-meeting-room/request.js +2 -33
  187. package/dist/personal-meeting-room/request.js.map +1 -1
  188. package/dist/personal-meeting-room/util.js +0 -13
  189. package/dist/personal-meeting-room/util.js.map +1 -1
  190. package/dist/reachability/index.js +190 -199
  191. package/dist/reachability/index.js.map +1 -1
  192. package/dist/reachability/request.js +14 -23
  193. package/dist/reachability/request.js.map +1 -1
  194. package/dist/reactions/constants.js +13 -0
  195. package/dist/reactions/constants.js.map +1 -0
  196. package/dist/reactions/reactions.js +2 -4
  197. package/dist/reactions/reactions.js.map +1 -1
  198. package/dist/reactions/reactions.type.js +18 -24
  199. package/dist/reactions/reactions.type.js.map +1 -1
  200. package/dist/reconnection-manager/index.js +356 -476
  201. package/dist/reconnection-manager/index.js.map +1 -1
  202. package/dist/recording-controller/enums.js +17 -0
  203. package/dist/recording-controller/enums.js.map +1 -0
  204. package/dist/recording-controller/index.js +343 -0
  205. package/dist/recording-controller/index.js.map +1 -0
  206. package/dist/recording-controller/util.js +63 -0
  207. package/dist/recording-controller/util.js.map +1 -0
  208. package/dist/roap/index.js +32 -75
  209. package/dist/roap/index.js.map +1 -1
  210. package/dist/roap/request.js +129 -136
  211. package/dist/roap/request.js.map +1 -1
  212. package/dist/roap/turnDiscovery.js +143 -103
  213. package/dist/roap/turnDiscovery.js.map +1 -1
  214. package/dist/statsAnalyzer/global.js +1 -95
  215. package/dist/statsAnalyzer/global.js.map +1 -1
  216. package/dist/statsAnalyzer/index.js +369 -462
  217. package/dist/statsAnalyzer/index.js.map +1 -1
  218. package/dist/statsAnalyzer/mqaUtil.js +144 -94
  219. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  220. package/dist/transcription/index.js +9 -44
  221. package/dist/transcription/index.js.map +1 -1
  222. package/dist/types/annotation/annotation.types.d.ts +43 -0
  223. package/dist/types/annotation/constants.d.ts +31 -0
  224. package/dist/types/annotation/index.d.ts +124 -0
  225. package/dist/types/breakouts/breakout.d.ts +8 -0
  226. package/dist/types/breakouts/collection.d.ts +5 -0
  227. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  228. package/dist/types/breakouts/events.d.ts +2 -0
  229. package/dist/types/breakouts/index.d.ts +5 -0
  230. package/dist/types/breakouts/request.d.ts +22 -0
  231. package/dist/types/breakouts/utils.d.ts +15 -0
  232. package/dist/types/common/browser-detection.d.ts +9 -0
  233. package/dist/types/common/collection.d.ts +48 -0
  234. package/dist/types/common/config.d.ts +2 -0
  235. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  236. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  237. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  238. package/dist/types/common/errors/media.d.ts +15 -0
  239. package/dist/types/common/errors/parameter.d.ts +15 -0
  240. package/dist/types/common/errors/password-error.d.ts +15 -0
  241. package/dist/types/common/errors/permission.d.ts +14 -0
  242. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  243. package/dist/types/common/errors/reconnection.d.ts +15 -0
  244. package/dist/types/common/errors/stats.d.ts +15 -0
  245. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  246. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  247. package/dist/types/common/events/events-scope.d.ts +17 -0
  248. package/dist/types/common/events/events.d.ts +12 -0
  249. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  250. package/dist/types/common/events/util.d.ts +2 -0
  251. package/dist/types/common/logs/logger-config.d.ts +2 -0
  252. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  253. package/dist/types/common/logs/request.d.ts +34 -0
  254. package/dist/types/common/queue.d.ts +32 -0
  255. package/dist/types/config.d.ts +72 -0
  256. package/dist/types/constants.d.ts +978 -0
  257. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  258. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  259. package/dist/types/controls-options-manager/index.d.ts +136 -0
  260. package/dist/types/controls-options-manager/types.d.ts +43 -0
  261. package/dist/types/controls-options-manager/util.d.ts +1 -0
  262. package/dist/types/index.d.ts +7 -0
  263. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  264. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  265. package/dist/types/locus-info/fullState.d.ts +2 -0
  266. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  267. package/dist/types/locus-info/index.d.ts +315 -0
  268. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  269. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  270. package/dist/types/locus-info/parser.d.ts +212 -0
  271. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  272. package/dist/types/media/index.d.ts +34 -0
  273. package/dist/types/media/properties.d.ts +86 -0
  274. package/dist/types/media/util.d.ts +2 -0
  275. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  276. package/dist/types/meeting/in-meeting-actions.d.ts +149 -0
  277. package/dist/types/meeting/index.d.ts +1509 -0
  278. package/dist/types/meeting/locusMediaRequest.d.ts +70 -0
  279. package/dist/types/meeting/muteState.d.ts +184 -0
  280. package/dist/types/meeting/request.d.ts +270 -0
  281. package/dist/types/meeting/request.type.d.ts +11 -0
  282. package/dist/types/meeting/state.d.ts +9 -0
  283. package/dist/types/meeting/util.d.ts +75 -0
  284. package/dist/types/meeting-info/collection.d.ts +20 -0
  285. package/dist/types/meeting-info/index.d.ts +57 -0
  286. package/dist/types/meeting-info/meeting-info-v2.d.ts +122 -0
  287. package/dist/types/meeting-info/request.d.ts +22 -0
  288. package/dist/types/meeting-info/util.d.ts +2 -0
  289. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  290. package/dist/types/meetings/collection.d.ts +31 -0
  291. package/dist/types/meetings/index.d.ts +364 -0
  292. package/dist/types/meetings/meetings.types.d.ts +4 -0
  293. package/dist/types/meetings/request.d.ts +27 -0
  294. package/dist/types/meetings/util.d.ts +18 -0
  295. package/dist/types/member/index.d.ts +157 -0
  296. package/dist/types/member/types.d.ts +21 -0
  297. package/dist/types/member/util.d.ts +2 -0
  298. package/dist/types/members/collection.d.ts +29 -0
  299. package/dist/types/members/index.d.ts +353 -0
  300. package/dist/types/members/request.d.ts +114 -0
  301. package/dist/types/members/types.d.ts +24 -0
  302. package/dist/types/members/util.d.ts +210 -0
  303. package/dist/types/metrics/config.d.ts +195 -0
  304. package/dist/types/metrics/constants.d.ts +55 -0
  305. package/dist/types/metrics/index.d.ts +169 -0
  306. package/dist/types/multistream/mediaRequestManager.d.ts +104 -0
  307. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  308. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  309. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  310. package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
  311. package/dist/types/multistream/remoteMediaManager.d.ts +277 -0
  312. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  313. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  314. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  315. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  316. package/dist/types/reachability/index.d.ts +152 -0
  317. package/dist/types/reachability/request.d.ts +37 -0
  318. package/dist/types/reactions/constants.d.ts +3 -0
  319. package/dist/types/reactions/reactions.d.ts +4 -0
  320. package/dist/types/reactions/reactions.type.d.ts +52 -0
  321. package/dist/types/reconnection-manager/index.d.ts +126 -0
  322. package/dist/types/recording-controller/enums.d.ts +7 -0
  323. package/dist/types/recording-controller/index.d.ts +193 -0
  324. package/dist/types/recording-controller/util.d.ts +13 -0
  325. package/dist/types/roap/index.d.ts +77 -0
  326. package/dist/types/roap/request.d.ts +36 -0
  327. package/dist/types/roap/turnDiscovery.d.ts +91 -0
  328. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  329. package/dist/types/statsAnalyzer/index.d.ts +200 -0
  330. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  331. package/dist/types/transcription/index.d.ts +64 -0
  332. package/package.json +28 -21
  333. package/src/annotation/annotation.types.ts +52 -0
  334. package/src/annotation/constants.ts +36 -0
  335. package/src/annotation/index.ts +343 -0
  336. package/src/breakouts/README.md +220 -0
  337. package/src/breakouts/breakout.ts +163 -0
  338. package/src/breakouts/collection.ts +19 -0
  339. package/src/breakouts/edit-lock-error.ts +25 -0
  340. package/src/breakouts/events.ts +37 -0
  341. package/src/breakouts/index.ts +921 -0
  342. package/src/breakouts/request.ts +55 -0
  343. package/src/breakouts/utils.ts +57 -0
  344. package/src/common/errors/webex-errors.ts +6 -2
  345. package/src/common/logs/logger-proxy.ts +1 -1
  346. package/src/config.ts +5 -7
  347. package/src/constants.ts +155 -20
  348. package/src/controls-options-manager/constants.ts +5 -0
  349. package/src/controls-options-manager/enums.ts +18 -0
  350. package/src/controls-options-manager/index.ts +278 -0
  351. package/src/controls-options-manager/types.ts +59 -0
  352. package/src/controls-options-manager/util.ts +286 -0
  353. package/src/index.ts +34 -0
  354. package/src/locus-info/controlsUtils.ts +108 -0
  355. package/src/locus-info/index.ts +310 -21
  356. package/src/locus-info/mediaSharesUtils.ts +48 -0
  357. package/src/locus-info/parser.ts +2 -1
  358. package/src/locus-info/selfUtils.ts +71 -1
  359. package/src/media/index.ts +70 -142
  360. package/src/media/properties.ts +41 -104
  361. package/src/mediaQualityMetrics/config.ts +379 -377
  362. package/src/meeting/in-meeting-actions.ts +156 -0
  363. package/src/meeting/index.ts +1730 -1768
  364. package/src/meeting/locusMediaRequest.ts +309 -0
  365. package/src/meeting/muteState.ts +228 -132
  366. package/src/meeting/request.ts +100 -91
  367. package/src/meeting/request.type.ts +2 -0
  368. package/src/meeting/util.ts +421 -421
  369. package/src/meeting-info/meeting-info-v2.ts +134 -13
  370. package/src/meeting-info/utilv2.ts +13 -3
  371. package/src/meetings/collection.ts +20 -0
  372. package/src/meetings/index.ts +375 -83
  373. package/src/meetings/meetings.types.ts +9 -0
  374. package/src/meetings/request.ts +3 -1
  375. package/src/meetings/util.ts +103 -4
  376. package/src/member/index.ts +40 -0
  377. package/src/member/types.ts +24 -0
  378. package/src/member/util.ts +81 -1
  379. package/src/members/collection.ts +8 -0
  380. package/src/members/index.ts +108 -6
  381. package/src/members/request.ts +98 -17
  382. package/src/members/types.ts +28 -0
  383. package/src/members/util.ts +319 -240
  384. package/src/metrics/config.ts +49 -10
  385. package/src/metrics/constants.ts +2 -4
  386. package/src/metrics/index.ts +43 -27
  387. package/src/multistream/mediaRequestManager.ts +210 -45
  388. package/src/multistream/receiveSlot.ts +68 -26
  389. package/src/multistream/receiveSlotManager.ts +61 -38
  390. package/src/multistream/remoteMedia.ts +29 -3
  391. package/src/multistream/remoteMediaGroup.ts +61 -2
  392. package/src/multistream/remoteMediaManager.ts +260 -66
  393. package/src/networkQualityMonitor/index.ts +6 -6
  394. package/src/reachability/index.ts +75 -25
  395. package/src/reachability/request.ts +10 -5
  396. package/src/reactions/constants.ts +4 -0
  397. package/src/reactions/reactions.ts +4 -4
  398. package/src/reactions/reactions.type.ts +28 -3
  399. package/src/reconnection-manager/index.ts +53 -32
  400. package/src/recording-controller/enums.ts +8 -0
  401. package/src/recording-controller/index.ts +315 -0
  402. package/src/recording-controller/util.ts +58 -0
  403. package/src/roap/index.ts +21 -30
  404. package/src/roap/request.ts +51 -52
  405. package/src/roap/turnDiscovery.ts +51 -27
  406. package/src/statsAnalyzer/global.ts +1 -94
  407. package/src/statsAnalyzer/index.ts +380 -390
  408. package/src/statsAnalyzer/mqaUtil.ts +106 -99
  409. package/test/integration/spec/converged-space-meetings.js +233 -0
  410. package/test/integration/spec/journey.js +332 -255
  411. package/test/integration/spec/space-meeting.js +78 -5
  412. package/test/integration/spec/transcription.js +1 -1
  413. package/test/unit/spec/annotation/index.ts +436 -0
  414. package/test/unit/spec/breakouts/breakout.ts +203 -0
  415. package/test/unit/spec/breakouts/collection.ts +15 -0
  416. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  417. package/test/unit/spec/breakouts/events.ts +77 -0
  418. package/test/unit/spec/breakouts/index.ts +1790 -0
  419. package/test/unit/spec/breakouts/request.ts +104 -0
  420. package/test/unit/spec/breakouts/utils.js +72 -0
  421. package/test/unit/spec/controls-options-manager/index.js +287 -0
  422. package/test/unit/spec/controls-options-manager/util.js +518 -0
  423. package/test/unit/spec/fixture/locus.js +1 -0
  424. package/test/unit/spec/locus-info/controlsUtils.js +303 -30
  425. package/test/unit/spec/locus-info/index.js +615 -4
  426. package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
  427. package/test/unit/spec/locus-info/selfConstant.js +38 -0
  428. package/test/unit/spec/locus-info/selfUtils.js +200 -0
  429. package/test/unit/spec/media/index.ts +118 -22
  430. package/test/unit/spec/media/properties.ts +9 -9
  431. package/test/unit/spec/meeting/in-meeting-actions.ts +76 -0
  432. package/test/unit/spec/meeting/index.js +2394 -1381
  433. package/test/unit/spec/meeting/locusMediaRequest.ts +436 -0
  434. package/test/unit/spec/meeting/muteState.js +370 -208
  435. package/test/unit/spec/meeting/request.js +354 -42
  436. package/test/unit/spec/meeting/utils.js +268 -156
  437. package/test/unit/spec/meeting-info/meetinginfov2.js +383 -5
  438. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  439. package/test/unit/spec/meetings/collection.js +14 -0
  440. package/test/unit/spec/meetings/index.js +842 -128
  441. package/test/unit/spec/meetings/utils.js +206 -2
  442. package/test/unit/spec/member/index.js +24 -0
  443. package/test/unit/spec/member/util.js +384 -32
  444. package/test/unit/spec/members/index.js +320 -1
  445. package/test/unit/spec/members/request.js +206 -27
  446. package/test/unit/spec/members/utils.js +184 -0
  447. package/test/unit/spec/metrics/index.js +98 -0
  448. package/test/unit/spec/multistream/mediaRequestManager.ts +676 -105
  449. package/test/unit/spec/multistream/receiveSlot.ts +77 -18
  450. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  451. package/test/unit/spec/multistream/remoteMedia.ts +32 -2
  452. package/test/unit/spec/multistream/remoteMediaGroup.ts +271 -5
  453. package/test/unit/spec/multistream/remoteMediaManager.ts +672 -65
  454. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  455. package/test/unit/spec/reachability/index.ts +176 -25
  456. package/test/unit/spec/reachability/request.js +66 -0
  457. package/test/unit/spec/reconnection-manager/index.js +46 -13
  458. package/test/unit/spec/recording-controller/index.js +231 -0
  459. package/test/unit/spec/recording-controller/util.js +102 -0
  460. package/test/unit/spec/roap/index.ts +21 -51
  461. package/test/unit/spec/roap/request.ts +187 -0
  462. package/test/unit/spec/roap/turnDiscovery.ts +73 -34
  463. package/test/unit/spec/stats-analyzer/index.js +94 -43
  464. package/test/utils/constants.js +9 -0
  465. package/test/utils/integrationTestUtils.js +46 -0
  466. package/test/utils/testUtils.js +0 -45
  467. package/test/utils/webex-config.js +4 -0
  468. package/test/utils/webex-test-users.js +7 -3
  469. package/tsconfig.json +6 -0
  470. package/dist/media/internal-media-core-wrapper.js +0 -22
  471. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  472. package/dist/meeting/effectsState.js +0 -334
  473. package/dist/meeting/effectsState.js.map +0 -1
  474. package/dist/multistream/multistreamMedia.js +0 -117
  475. package/dist/multistream/multistreamMedia.js.map +0 -1
  476. package/src/index.js +0 -15
  477. package/src/media/internal-media-core-wrapper.ts +0 -9
  478. package/src/meeting/effectsState.ts +0 -211
  479. package/src/multistream/multistreamMedia.ts +0 -93
  480. package/test/unit/spec/meeting/effectsState.js +0 -281
@@ -1,52 +1,33 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
-
7
5
  _Object$defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
-
11
8
  exports.default = void 0;
12
-
13
9
  var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
14
-
15
10
  var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
16
-
17
11
  var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
18
-
19
12
  var _now = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/date/now"));
20
-
21
13
  var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
22
-
23
14
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
24
-
15
+ var _assign = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/assign"));
25
16
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/toConsumableArray"));
26
-
27
17
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
28
-
29
18
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
30
-
31
19
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
32
-
33
20
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
34
-
35
21
  var _uniq2 = _interopRequireDefault(require("lodash/uniq"));
36
-
37
22
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
38
-
39
23
  var _constants = require("../constants");
40
-
41
24
  var _request = _interopRequireDefault(require("./request"));
42
-
43
25
  var DEFAULT_TIMEOUT = 3000;
44
26
  var VIDEO_MESH_TIMEOUT = 1000;
45
27
  /**
46
28
  * @class Reachability
47
29
  * @export
48
30
  */
49
-
50
31
  var Reachability = /*#__PURE__*/function () {
51
32
  /**
52
33
  * Creates an instance of Reachability.
@@ -55,10 +36,12 @@ var Reachability = /*#__PURE__*/function () {
55
36
  */
56
37
  function Reachability(webex) {
57
38
  (0, _classCallCheck2.default)(this, Reachability);
39
+ (0, _defineProperty2.default)(this, "namespace", _constants.REACHABILITY.namespace);
58
40
  (0, _defineProperty2.default)(this, "webex", void 0);
59
41
  (0, _defineProperty2.default)(this, "reachabilityRequest", void 0);
60
42
  (0, _defineProperty2.default)(this, "clusterLatencyResults", void 0);
61
43
  this.webex = webex;
44
+
62
45
  /**
63
46
  * internal request object for the server
64
47
  * @instance
@@ -66,8 +49,8 @@ var Reachability = /*#__PURE__*/function () {
66
49
  * @private
67
50
  * @memberof Reachability
68
51
  */
69
-
70
52
  this.reachabilityRequest = new _request.default(this.webex);
53
+
71
54
  /**
72
55
  * internal object of clusters latency results
73
56
  * @instance
@@ -75,9 +58,9 @@ var Reachability = /*#__PURE__*/function () {
75
58
  * @private
76
59
  * @memberof Reachability
77
60
  */
78
-
79
61
  this.clusterLatencyResults = {};
80
62
  }
63
+
81
64
  /**
82
65
  * fetches reachability data
83
66
  * @returns {Object} reachability data
@@ -85,73 +68,57 @@ var Reachability = /*#__PURE__*/function () {
85
68
  * @async
86
69
  * @memberof Reachability
87
70
  */
88
-
89
-
90
71
  (0, _createClass2.default)(Reachability, [{
91
72
  key: "gatherReachability",
92
73
  value: function () {
93
74
  var _gatherReachability = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
94
- var _window, _window$localStorage;
95
-
96
- var clusters, results;
75
+ var _yield$this$reachabil, clusters, joinCookie, results;
97
76
  return _regenerator.default.wrap(function _callee$(_context) {
98
- while (1) {
99
- switch (_context.prev = _context.next) {
100
- case 0:
101
- this.setup(); // Remove stored reachability results to ensure no stale data
102
-
103
- if (!((_window = window) !== null && _window !== void 0 && (_window$localStorage = _window.localStorage) !== null && _window$localStorage !== void 0 && _window$localStorage.removeItem)) {
104
- _context.next = 5;
105
- break;
106
- }
107
-
108
- window.localStorage.removeItem(_constants.REACHABILITY.localStorage);
109
- _context.next = 7;
110
- break;
111
-
112
- case 5:
113
- _loggerProxy.default.logger.error('Reachability:index#gatherReachability --> Error in accessing LocalStorage.');
114
-
115
- return _context.abrupt("return", {});
116
-
117
- case 7:
118
- _context.prev = 7;
119
- _context.next = 10;
120
- return this.reachabilityRequest.getClusters();
121
-
122
- case 10:
123
- clusters = _context.sent;
124
- _context.next = 13;
125
- return this.performReachabilityCheck(clusters);
126
-
127
- case 13:
128
- results = _context.sent;
129
- window.localStorage.setItem(_constants.REACHABILITY.localStorage, (0, _stringify.default)(results));
77
+ while (1) switch (_context.prev = _context.next) {
78
+ case 0:
79
+ this.setup();
130
80
 
131
- _loggerProxy.default.logger.log('Reachability:index#gatherReachability --> Reachability checks completed');
132
-
133
- return _context.abrupt("return", results);
134
-
135
- case 19:
136
- _context.prev = 19;
137
- _context.t0 = _context["catch"](7);
138
-
139
- _loggerProxy.default.logger.error("Reachability:index#gatherReachability --> Error in calling getClusters(): ".concat(_context.t0));
140
-
141
- return _context.abrupt("return", {});
142
-
143
- case 23:
144
- case "end":
145
- return _context.stop();
146
- }
81
+ // Remove stored reachability results to ensure no stale data
82
+ // @ts-ignore
83
+ _context.next = 3;
84
+ return this.webex.boundedStorage.del(this.namespace, _constants.REACHABILITY.localStorageResult);
85
+ case 3:
86
+ _context.next = 5;
87
+ return this.webex.boundedStorage.del(this.namespace, _constants.REACHABILITY.localStorageJoinCookie);
88
+ case 5:
89
+ _context.prev = 5;
90
+ _context.next = 8;
91
+ return this.reachabilityRequest.getClusters();
92
+ case 8:
93
+ _yield$this$reachabil = _context.sent;
94
+ clusters = _yield$this$reachabil.clusters;
95
+ joinCookie = _yield$this$reachabil.joinCookie;
96
+ _context.next = 13;
97
+ return this.performReachabilityCheck(clusters);
98
+ case 13:
99
+ results = _context.sent;
100
+ _context.next = 16;
101
+ return this.webex.boundedStorage.put(this.namespace, _constants.REACHABILITY.localStorageResult, (0, _stringify.default)(results));
102
+ case 16:
103
+ _context.next = 18;
104
+ return this.webex.boundedStorage.put(this.namespace, _constants.REACHABILITY.localStorageJoinCookie, (0, _stringify.default)(joinCookie));
105
+ case 18:
106
+ _loggerProxy.default.logger.log('Reachability:index#gatherReachability --> Reachability checks completed');
107
+ return _context.abrupt("return", results);
108
+ case 22:
109
+ _context.prev = 22;
110
+ _context.t0 = _context["catch"](5);
111
+ _loggerProxy.default.logger.error("Reachability:index#gatherReachability --> Error in calling getClusters(): ".concat(_context.t0));
112
+ return _context.abrupt("return", {});
113
+ case 26:
114
+ case "end":
115
+ return _context.stop();
147
116
  }
148
- }, _callee, this, [[7, 19]]);
117
+ }, _callee, this, [[5, 22]]);
149
118
  }));
150
-
151
119
  function gatherReachability() {
152
120
  return _gatherReachability.apply(this, arguments);
153
121
  }
154
-
155
122
  return gatherReachability;
156
123
  }()
157
124
  /**
@@ -160,28 +127,42 @@ var Reachability = /*#__PURE__*/function () {
160
127
  * @public
161
128
  * @memberof Reachability
162
129
  */
163
-
164
130
  }, {
165
131
  key: "isAnyClusterReachable",
166
- value: function isAnyClusterReachable() {
167
- var reachable = false;
168
- var reachabilityData = window.localStorage.getItem(_constants.REACHABILITY.localStorage);
169
-
170
- if (reachabilityData) {
171
- try {
172
- var reachabilityResults = JSON.parse(reachabilityData);
173
- reachable = (0, _values.default)(reachabilityResults).some(function (result) {
174
- var _result$udp, _result$tcp;
175
-
176
- 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';
177
- });
178
- } catch (e) {
179
- _loggerProxy.default.logger.error("Roap:request#attachReachabilityData --> Error in parsing reachability data: ".concat(e));
180
- }
132
+ value: function () {
133
+ var _isAnyClusterReachable = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
134
+ var reachable, reachabilityData, reachabilityResults;
135
+ return _regenerator.default.wrap(function _callee2$(_context2) {
136
+ while (1) switch (_context2.prev = _context2.next) {
137
+ case 0:
138
+ reachable = false; // @ts-ignore
139
+ _context2.next = 3;
140
+ return this.webex.boundedStorage.get(this.namespace, _constants.REACHABILITY.localStorageResult).catch(function () {});
141
+ case 3:
142
+ reachabilityData = _context2.sent;
143
+ if (reachabilityData) {
144
+ try {
145
+ reachabilityResults = JSON.parse(reachabilityData);
146
+ reachable = (0, _values.default)(reachabilityResults).some(function (result) {
147
+ var _result$udp, _result$tcp;
148
+ 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';
149
+ });
150
+ } catch (e) {
151
+ _loggerProxy.default.logger.error("Roap:request#attachReachabilityData --> Error in parsing reachability data: ".concat(e));
152
+ }
153
+ }
154
+ return _context2.abrupt("return", reachable);
155
+ case 6:
156
+ case "end":
157
+ return _context2.stop();
158
+ }
159
+ }, _callee2, this);
160
+ }));
161
+ function isAnyClusterReachable() {
162
+ return _isAnyClusterReachable.apply(this, arguments);
181
163
  }
182
-
183
- return reachable;
184
- }
164
+ return isAnyClusterReachable;
165
+ }()
185
166
  /**
186
167
  * Generate peerConnection config settings
187
168
  * @param {object} cluster
@@ -189,7 +170,6 @@ var Reachability = /*#__PURE__*/function () {
189
170
  * @private
190
171
  * @memberof Reachability
191
172
  */
192
-
193
173
  }, {
194
174
  key: "buildPeerConnectionConfig",
195
175
  value: function buildPeerConnectionConfig(cluster) {
@@ -206,6 +186,7 @@ var Reachability = /*#__PURE__*/function () {
206
186
  iceTransportPolicy: 'all'
207
187
  };
208
188
  }
189
+
209
190
  /**
210
191
  * Creates an RTCPeerConnection
211
192
  * @param {object} cluster
@@ -213,24 +194,23 @@ var Reachability = /*#__PURE__*/function () {
213
194
  * @private
214
195
  * @memberof Reachability
215
196
  */
216
-
217
197
  }, {
218
198
  key: "createPeerConnection",
219
199
  value: function createPeerConnection(cluster) {
220
200
  var key = cluster.key,
221
- config = cluster.config;
222
-
201
+ config = cluster.config;
223
202
  try {
224
- var peerConnection = new window.RTCPeerConnection(config); // @ts-ignore
203
+ var peerConnection = new window.RTCPeerConnection(config);
225
204
 
205
+ // @ts-ignore
226
206
  peerConnection.key = key;
227
207
  return peerConnection;
228
208
  } catch (peerConnectionError) {
229
209
  _loggerProxy.default.logger.log("Reachability:index#createPeerConnection --> Error creating peerConnection: ".concat(peerConnectionError));
230
-
231
210
  return null;
232
211
  }
233
212
  }
213
+
234
214
  /**
235
215
  * Gets total elapsed time
236
216
  * @param {RTCPeerConnection} peerConnection
@@ -238,7 +218,6 @@ var Reachability = /*#__PURE__*/function () {
238
218
  * @private
239
219
  * @memberof Reachability
240
220
  */
241
-
242
221
  }, {
243
222
  key: "getElapsedTime",
244
223
  value: function getElapsedTime(peerConnection) {
@@ -246,6 +225,7 @@ var Reachability = /*#__PURE__*/function () {
246
225
  delete peerConnection.begin;
247
226
  return (0, _now.default)() - startTime;
248
227
  }
228
+
249
229
  /**
250
230
  * creates offer and generates localSDP
251
231
  * @param {object} clusterList cluster List
@@ -253,66 +233,59 @@ var Reachability = /*#__PURE__*/function () {
253
233
  * @private
254
234
  * @memberof Reachability
255
235
  */
256
-
257
236
  }, {
258
237
  key: "getLocalSDPForClusters",
259
238
  value: function getLocalSDPForClusters(clusterList) {
260
239
  var _this = this;
261
-
262
240
  var clusters = (0, _toConsumableArray2.default)((0, _keys.default)(clusterList));
263
241
  clusters = clusters.map( /*#__PURE__*/function () {
264
- var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(key) {
242
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(key) {
265
243
  var cluster, config, peerConnection, description;
266
- return _regenerator.default.wrap(function _callee2$(_context2) {
267
- while (1) {
268
- switch (_context2.prev = _context2.next) {
269
- case 0:
270
- cluster = clusterList[key];
271
- config = _this.buildPeerConnectionConfig(cluster);
272
- peerConnection = _this.createPeerConnection({
273
- key: key,
274
- config: config
275
- });
276
- _context2.next = 5;
277
- return peerConnection.createOffer({
278
- offerToReceiveAudio: true
279
- });
280
-
281
- case 5:
282
- description = _context2.sent;
283
- // @ts-ignore
284
- peerConnection.begin = (0, _now.default)();
285
- peerConnection.setLocalDescription(description);
286
- return _context2.abrupt("return", _this.iceGatheringState(peerConnection, cluster.isVideoMesh ? VIDEO_MESH_TIMEOUT : DEFAULT_TIMEOUT).catch(function (iceGatheringStateError) {
287
- _loggerProxy.default.logger.log("Reachability:index#getLocalSDPForClusters --> Error in getLocalSDP : ".concat(iceGatheringStateError));
288
- }));
289
-
290
- case 9:
291
- case "end":
292
- return _context2.stop();
293
- }
244
+ return _regenerator.default.wrap(function _callee3$(_context3) {
245
+ while (1) switch (_context3.prev = _context3.next) {
246
+ case 0:
247
+ cluster = clusterList[key];
248
+ config = _this.buildPeerConnectionConfig(cluster);
249
+ peerConnection = _this.createPeerConnection({
250
+ key: key,
251
+ config: config
252
+ });
253
+ _context3.next = 5;
254
+ return peerConnection.createOffer({
255
+ offerToReceiveAudio: true
256
+ });
257
+ case 5:
258
+ description = _context3.sent;
259
+ // @ts-ignore
260
+ peerConnection.begin = (0, _now.default)();
261
+ peerConnection.setLocalDescription(description);
262
+ return _context3.abrupt("return", _this.iceGatheringState(peerConnection, cluster.isVideoMesh ? VIDEO_MESH_TIMEOUT : DEFAULT_TIMEOUT).catch(function (iceGatheringStateError) {
263
+ _loggerProxy.default.logger.log("Reachability:index#getLocalSDPForClusters --> Error in getLocalSDP : ".concat(iceGatheringStateError));
264
+ }));
265
+ case 9:
266
+ case "end":
267
+ return _context3.stop();
294
268
  }
295
- }, _callee2);
269
+ }, _callee3);
296
270
  }));
297
-
298
271
  return function (_x) {
299
272
  return _ref.apply(this, arguments);
300
273
  };
301
274
  }());
302
275
  return _promise.default.all(clusters).then(this.parseIceResultsToReachabilityResults).then(function (reachabilityLatencyResults) {
303
- _this.logUnreachableClusters(); // return results
304
-
276
+ _this.logUnreachableClusters();
305
277
 
278
+ // return results
306
279
  return reachabilityLatencyResults;
307
280
  });
308
281
  }
282
+
309
283
  /**
310
284
  * Get list of all unreachable clusters
311
285
  * @returns {array} Unreachable clusters
312
286
  * @private
313
287
  * @memberof Reachability
314
288
  */
315
-
316
289
  }, {
317
290
  key: "getUnreachablClusters",
318
291
  value: function getUnreachablClusters() {
@@ -320,13 +293,13 @@ var Reachability = /*#__PURE__*/function () {
320
293
  var clusters = this.clusterLatencyResults;
321
294
  (0, _keys.default)(clusters).forEach(function (key) {
322
295
  var cluster = clusters[key];
323
-
324
296
  if (cluster.unreachable && !cluster.reachable) {
325
297
  unreachableList.push(key);
326
298
  }
327
299
  });
328
300
  return unreachableList;
329
301
  }
302
+
330
303
  /**
331
304
  * Attach an event handler for the icegatheringstatechange
332
305
  * event and measure latency.
@@ -335,25 +308,23 @@ var Reachability = /*#__PURE__*/function () {
335
308
  * @private
336
309
  * @memberof Reachability
337
310
  */
338
-
339
311
  }, {
340
312
  key: "handleIceGatheringStateChange",
341
313
  value: function handleIceGatheringStateChange(peerConnection) {
342
314
  var _this2 = this;
343
-
344
315
  peerConnection.onicegatheringstatechange = function () {
345
316
  var COMPLETE = _constants.ICE_GATHERING_STATE.COMPLETE;
346
-
347
317
  if (peerConnection.iceConnectionState === COMPLETE) {
348
- var elapsed = _this2.getElapsedTime(peerConnection); // @ts-ignore
349
-
350
-
351
- _loggerProxy.default.logger.log("Reachability:index#onIceGatheringStateChange --> Successfully pinged ".concat(peerConnection.key, ":"), elapsed);
318
+ var elapsed = _this2.getElapsedTime(peerConnection);
352
319
 
320
+ // @ts-ignore
321
+ _loggerProxy.default.logger.log( // @ts-ignore
322
+ "Reachability:index#onIceGatheringStateChange --> Successfully pinged ".concat(peerConnection.key, ":"), elapsed);
353
323
  _this2.setLatencyAndClose(peerConnection, elapsed);
354
324
  }
355
325
  };
356
326
  }
327
+
357
328
  /**
358
329
  * Attach an event handler for the icecandidate
359
330
  * event and measure latency.
@@ -362,25 +333,23 @@ var Reachability = /*#__PURE__*/function () {
362
333
  * @private
363
334
  * @memberof Reachability
364
335
  */
365
-
366
336
  }, {
367
337
  key: "handleOnIceCandidate",
368
338
  value: function handleOnIceCandidate(peerConnection) {
369
339
  var _this3 = this;
370
-
371
340
  peerConnection.onicecandidate = function (e) {
372
341
  var SERVER_REFLEXIVE = 'srflx';
373
-
374
342
  if (e.candidate && String(e.candidate.type).toLowerCase() === SERVER_REFLEXIVE) {
375
- var elapsed = _this3.getElapsedTime(peerConnection); // @ts-ignore
376
-
377
-
378
- _loggerProxy.default.logger.log("Reachability:index#onIceCandidate --> Successfully pinged ".concat(peerConnection.key, ":"), elapsed);
379
-
343
+ var elapsed = _this3.getElapsedTime(peerConnection);
344
+ _loggerProxy.default.logger.log( // @ts-ignore
345
+ "Reachability:index#onIceCandidate --> Successfully pinged ".concat(peerConnection.key, ":"), elapsed);
346
+ // order is important
347
+ _this3.addPublicIP(peerConnection, e.candidate.address);
380
348
  _this3.setLatencyAndClose(peerConnection, elapsed);
381
349
  }
382
350
  };
383
351
  }
352
+
384
353
  /**
385
354
  * An event handler on an RTCPeerConnection when the state of the ICE
386
355
  * candidate gathering process changes. Used to measure connection
@@ -390,22 +359,19 @@ var Reachability = /*#__PURE__*/function () {
390
359
  * @param {number} timeout
391
360
  * @returns {Promise}
392
361
  */
393
-
394
362
  }, {
395
363
  key: "iceGatheringState",
396
364
  value: function iceGatheringState(peerConnection, timeout) {
397
365
  var _this4 = this;
398
-
399
366
  var ELAPSED = 'elapsed';
400
367
  return new _promise.default(function (resolve) {
401
368
  var peerConnectionProxy = new window.Proxy(peerConnection, {
369
+ // eslint-disable-next-line require-jsdoc
402
370
  get: function get(target, property) {
403
371
  var targetMember = target[property];
404
-
405
372
  if (typeof targetMember === 'function') {
406
373
  return targetMember.bind(target);
407
374
  }
408
-
409
375
  return targetMember;
410
376
  },
411
377
  set: function set(target, property, value) {
@@ -414,38 +380,42 @@ var Reachability = /*#__PURE__*/function () {
414
380
  // @ts-ignore
415
381
  resolve({
416
382
  clusterId: peerConnection.key,
383
+ publicIPs: target.publicIPs,
417
384
  elapsed: value
418
385
  });
419
386
  return true;
420
- } // pass thru
421
-
387
+ }
422
388
 
389
+ // pass thru
423
390
  return window.Reflect.set(target, property, value);
424
391
  }
425
- }); // Using peerConnection proxy so handle functions below
426
- // won't be coupled to our promise implementation
392
+ });
427
393
 
394
+ // Using peerConnection proxy so handle functions below
395
+ // won't be coupled to our promise implementation
428
396
  _this4.handleIceGatheringStateChange(peerConnectionProxy);
397
+ _this4.handleOnIceCandidate(peerConnectionProxy);
429
398
 
430
- _this4.handleOnIceCandidate(peerConnectionProxy); // Set maximum timeout
431
-
432
-
399
+ // Set maximum timeout
433
400
  window.setTimeout(function () {
434
- var CLOSED = _constants.CONNECTION_STATE.CLOSED; // Close any open peerConnections
401
+ var CLOSED = _constants.CONNECTION_STATE.CLOSED;
435
402
 
403
+ // Close any open peerConnections
436
404
  if (peerConnectionProxy.connectionState !== CLOSED) {
405
+ // order is important
406
+ _this4.addPublicIP(peerConnectionProxy, null);
437
407
  _this4.setLatencyAndClose(peerConnectionProxy, null);
438
408
  }
439
409
  }, timeout);
440
410
  });
441
411
  }
412
+
442
413
  /**
443
414
  * Make a log of unreachable clusters.
444
415
  * @returns {undefined}
445
416
  * @private
446
417
  * @memberof Reachability
447
418
  */
448
-
449
419
  }, {
450
420
  key: "logUnreachableClusters",
451
421
  value: function logUnreachableClusters() {
@@ -454,34 +424,38 @@ var Reachability = /*#__PURE__*/function () {
454
424
  _loggerProxy.default.logger.log("Reachability:index#logUnreachableClusters --> No ice candidate for ".concat(cluster, "."));
455
425
  });
456
426
  }
427
+
457
428
  /**
458
429
  * Calculates time to establish connection
459
- * @param {array} iceResults iceResults
430
+ * @param {Array<ICECandidateResult>} iceResults iceResults
460
431
  * @returns {object} reachabilityMap
461
- * @private
432
+ * @protected
462
433
  * @memberof Reachability
463
434
  */
464
-
465
435
  }, {
466
436
  key: "parseIceResultsToReachabilityResults",
467
437
  value: function parseIceResultsToReachabilityResults(iceResults) {
468
438
  var reachabilityMap = {};
469
439
  iceResults.forEach(function (_ref2) {
470
440
  var clusterId = _ref2.clusterId,
471
- elapsed = _ref2.elapsed;
472
- var latencyResult;
473
-
474
- if (elapsed === null) {
475
- latencyResult = {
441
+ elapsed = _ref2.elapsed,
442
+ publicIPs = _ref2.publicIPs;
443
+ var latencyResult = {};
444
+ if (!elapsed) {
445
+ (0, _assign.default)(latencyResult, {
476
446
  reachable: 'false'
477
- };
447
+ });
478
448
  } else {
479
- latencyResult = {
449
+ (0, _assign.default)(latencyResult, {
480
450
  reachable: 'true',
481
451
  latencyInMilliseconds: elapsed.toString()
482
- };
452
+ });
453
+ }
454
+ if (publicIPs) {
455
+ (0, _assign.default)(latencyResult, {
456
+ clientMediaIPs: publicIPs
457
+ });
483
458
  }
484
-
485
459
  reachabilityMap[clusterId] = {
486
460
  udp: latencyResult,
487
461
  tcp: latencyResult
@@ -489,6 +463,7 @@ var Reachability = /*#__PURE__*/function () {
489
463
  });
490
464
  return reachabilityMap;
491
465
  }
466
+
492
467
  /**
493
468
  * fetches reachability data
494
469
  * @param {object} clusterList
@@ -496,33 +471,54 @@ var Reachability = /*#__PURE__*/function () {
496
471
  * @private
497
472
  * @memberof Reachability
498
473
  */
499
-
500
474
  }, {
501
475
  key: "performReachabilityCheck",
502
476
  value: function performReachabilityCheck(clusterList) {
503
477
  var _this5 = this;
504
-
505
478
  if (!clusterList || !(0, _keys.default)(clusterList).length) {
506
479
  return _promise.default.resolve({});
507
480
  }
508
-
509
481
  return new _promise.default(function (resolve) {
510
482
  _this5.getLocalSDPForClusters(clusterList).then(function (localSDPData) {
511
483
  if (!localSDPData || !(0, _keys.default)(localSDPData).length) {
512
484
  // TODO: handle the error condition properly and try retry
513
485
  _loggerProxy.default.logger.log('Reachability:index#performReachabilityCheck --> Local SDP is empty or has missing elements..returning');
514
-
515
486
  resolve({});
516
487
  } else {
517
488
  resolve(localSDPData);
518
489
  }
519
490
  }).catch(function (error) {
520
491
  _loggerProxy.default.logger.error("Reachability:index#performReachabilityCheck --> Error in getLocalSDPForClusters: ".concat(error));
521
-
522
492
  resolve({});
523
493
  });
524
494
  });
525
495
  }
496
+
497
+ /**
498
+ * Adds public IP (client media IPs)
499
+ * @param {RTCPeerConnection} peerConnection
500
+ * @param {string} publicIP
501
+ * @returns {void}
502
+ */
503
+ }, {
504
+ key: "addPublicIP",
505
+ value: function addPublicIP(peerConnection, publicIP) {
506
+ var modifiedPeerConnection = peerConnection;
507
+ var CLOSED = _constants.CONNECTION_STATE.CLOSED;
508
+ if (modifiedPeerConnection.connectionState === CLOSED) {
509
+ _loggerProxy.default.logger.log("Reachability:index#addPublicIP --> Attempting to set publicIP of ".concat(publicIP, " on closed peerConnection."));
510
+ }
511
+ if (publicIP) {
512
+ if (modifiedPeerConnection.publicIPs) {
513
+ modifiedPeerConnection.publicIPs.push(publicIP);
514
+ } else {
515
+ modifiedPeerConnection.publicIPs = [publicIP];
516
+ }
517
+ } else {
518
+ modifiedPeerConnection.publicIPs = null;
519
+ }
520
+ }
521
+
526
522
  /**
527
523
  * Records latency and closes the peerConnection
528
524
  * @param {RTCPeerConnection} peerConnection
@@ -531,42 +527,38 @@ var Reachability = /*#__PURE__*/function () {
531
527
  * @private
532
528
  * @memberof Reachability
533
529
  */
534
-
535
530
  }, {
536
531
  key: "setLatencyAndClose",
537
532
  value: function setLatencyAndClose(peerConnection, elapsed) {
538
533
  var _intialState;
539
-
540
534
  var REACHABLE = 'reachable';
541
535
  var UNREACHABLE = 'unreachable';
542
- var CLOSED = _constants.CONNECTION_STATE.CLOSED; // @ts-ignore
543
-
536
+ var CLOSED = _constants.CONNECTION_STATE.CLOSED;
537
+ // @ts-ignore
544
538
  var key = peerConnection.key;
545
539
  var resultKey = elapsed === null ? UNREACHABLE : REACHABLE;
546
540
  var intialState = (_intialState = {}, (0, _defineProperty2.default)(_intialState, REACHABLE, 0), (0, _defineProperty2.default)(_intialState, UNREACHABLE, 0), _intialState);
547
-
548
541
  if (peerConnection.connectionState === CLOSED) {
549
542
  _loggerProxy.default.logger.log("Reachability:index#setLatencyAndClose --> Attempting to set latency of ".concat(elapsed, " on closed peerConnection."));
550
-
551
543
  return;
552
544
  }
553
-
554
545
  this.clusterLatencyResults[key] = this.clusterLatencyResults[key] || intialState;
555
- this.clusterLatencyResults[key][resultKey] += 1; // Set to null in case this fired from
556
- // an event other than onIceCandidate
546
+ this.clusterLatencyResults[key][resultKey] += 1;
557
547
 
548
+ // Set to null in case this fired from
549
+ // an event other than onIceCandidate
558
550
  peerConnection.onicecandidate = null;
559
- peerConnection.close(); // @ts-ignore
560
-
551
+ peerConnection.close();
552
+ // @ts-ignore
561
553
  peerConnection.elapsed = elapsed;
562
554
  }
555
+
563
556
  /**
564
557
  * utility function
565
558
  * @returns {undefined}
566
559
  * @private
567
560
  * @memberof Reachability
568
561
  */
569
-
570
562
  }, {
571
563
  key: "setup",
572
564
  value: function setup() {
@@ -575,6 +567,5 @@ var Reachability = /*#__PURE__*/function () {
575
567
  }]);
576
568
  return Reachability;
577
569
  }();
578
-
579
570
  exports.default = Reachability;
580
571
  //# sourceMappingURL=index.js.map