@webex/plugin-meetings 3.0.0-beta.4 → 3.0.0-beta.400

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 (629) hide show
  1. package/README.md +58 -8
  2. package/UPGRADING.md +9 -9
  3. package/browsers.js +19 -24
  4. package/dist/annotation/annotation.types.js +7 -0
  5. package/dist/annotation/annotation.types.js.map +1 -0
  6. package/dist/annotation/constants.js +49 -0
  7. package/dist/annotation/constants.js.map +1 -0
  8. package/dist/annotation/index.js +342 -0
  9. package/dist/annotation/index.js.map +1 -0
  10. package/dist/breakouts/breakout.js +216 -0
  11. package/dist/breakouts/breakout.js.map +1 -0
  12. package/dist/breakouts/collection.js +23 -0
  13. package/dist/breakouts/collection.js.map +1 -0
  14. package/dist/breakouts/edit-lock-error.js +52 -0
  15. package/dist/breakouts/edit-lock-error.js.map +1 -0
  16. package/dist/breakouts/events.js +45 -0
  17. package/dist/breakouts/events.js.map +1 -0
  18. package/dist/breakouts/index.js +1048 -0
  19. package/dist/breakouts/index.js.map +1 -0
  20. package/dist/breakouts/request.js +78 -0
  21. package/dist/breakouts/request.js.map +1 -0
  22. package/dist/breakouts/utils.js +67 -0
  23. package/dist/breakouts/utils.js.map +1 -0
  24. package/dist/common/browser-detection.js +1 -20
  25. package/dist/common/browser-detection.js.map +1 -1
  26. package/dist/common/collection.js +5 -20
  27. package/dist/common/collection.js.map +1 -1
  28. package/dist/common/config.js +0 -7
  29. package/dist/common/config.js.map +1 -1
  30. package/dist/common/errors/captcha-error.js +10 -24
  31. package/dist/common/errors/captcha-error.js.map +1 -1
  32. package/dist/common/errors/intent-to-join.js +11 -24
  33. package/dist/common/errors/intent-to-join.js.map +1 -1
  34. package/dist/common/errors/join-meeting.js +12 -25
  35. package/dist/common/errors/join-meeting.js.map +1 -1
  36. package/dist/common/errors/media.js +10 -24
  37. package/dist/common/errors/media.js.map +1 -1
  38. package/dist/common/errors/no-meeting-info.js +51 -0
  39. package/dist/common/errors/no-meeting-info.js.map +1 -0
  40. package/dist/common/errors/parameter.js +5 -33
  41. package/dist/common/errors/parameter.js.map +1 -1
  42. package/dist/common/errors/password-error.js +10 -24
  43. package/dist/common/errors/password-error.js.map +1 -1
  44. package/dist/common/errors/permission.js +9 -23
  45. package/dist/common/errors/permission.js.map +1 -1
  46. package/dist/common/errors/reclaim-host-role-errors.js +158 -0
  47. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  48. package/dist/common/errors/reconnection-in-progress.js +0 -17
  49. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  50. package/dist/common/errors/reconnection.js +10 -24
  51. package/dist/common/errors/reconnection.js.map +1 -1
  52. package/dist/common/errors/stats.js +10 -24
  53. package/dist/common/errors/stats.js.map +1 -1
  54. package/dist/common/errors/webex-errors.js +54 -48
  55. package/dist/common/errors/webex-errors.js.map +1 -1
  56. package/dist/common/errors/webex-meetings-error.js +5 -25
  57. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  58. package/dist/common/events/events-scope.js +0 -22
  59. package/dist/common/events/events-scope.js.map +1 -1
  60. package/dist/common/events/events.js +0 -23
  61. package/dist/common/events/events.js.map +1 -1
  62. package/dist/common/events/trigger-proxy.js +0 -12
  63. package/dist/common/events/trigger-proxy.js.map +1 -1
  64. package/dist/common/events/util.js +0 -15
  65. package/dist/common/events/util.js.map +1 -1
  66. package/dist/common/logs/logger-config.js +0 -4
  67. package/dist/common/logs/logger-config.js.map +1 -1
  68. package/dist/common/logs/logger-proxy.js +1 -8
  69. package/dist/common/logs/logger-proxy.js.map +1 -1
  70. package/dist/common/logs/request.js +41 -60
  71. package/dist/common/logs/request.js.map +1 -1
  72. package/dist/common/queue.js +28 -23
  73. package/dist/common/queue.js.map +1 -1
  74. package/dist/config.js +11 -15
  75. package/dist/config.js.map +1 -1
  76. package/dist/constants.js +347 -74
  77. package/dist/constants.js.map +1 -1
  78. package/dist/controls-options-manager/constants.js +14 -0
  79. package/dist/controls-options-manager/constants.js.map +1 -0
  80. package/dist/controls-options-manager/enums.js +27 -0
  81. package/dist/controls-options-manager/enums.js.map +1 -0
  82. package/dist/controls-options-manager/index.js +297 -0
  83. package/dist/controls-options-manager/index.js.map +1 -0
  84. package/dist/controls-options-manager/types.js +7 -0
  85. package/dist/controls-options-manager/types.js.map +1 -0
  86. package/dist/controls-options-manager/util.js +319 -0
  87. package/dist/controls-options-manager/util.js.map +1 -0
  88. package/dist/index.js +125 -18
  89. package/dist/index.js.map +1 -1
  90. package/dist/interceptors/index.js +15 -0
  91. package/dist/interceptors/index.js.map +1 -0
  92. package/dist/interceptors/locusRetry.js +93 -0
  93. package/dist/interceptors/locusRetry.js.map +1 -0
  94. package/dist/interpretation/collection.js +23 -0
  95. package/dist/interpretation/collection.js.map +1 -0
  96. package/dist/interpretation/index.js +380 -0
  97. package/dist/interpretation/index.js.map +1 -0
  98. package/dist/interpretation/siLanguage.js +25 -0
  99. package/dist/interpretation/siLanguage.js.map +1 -0
  100. package/dist/locus-info/controlsUtils.js +101 -29
  101. package/dist/locus-info/controlsUtils.js.map +1 -1
  102. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  103. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  104. package/dist/locus-info/fullState.js +0 -15
  105. package/dist/locus-info/fullState.js.map +1 -1
  106. package/dist/locus-info/hostUtils.js +4 -12
  107. package/dist/locus-info/hostUtils.js.map +1 -1
  108. package/dist/locus-info/index.js +564 -246
  109. package/dist/locus-info/index.js.map +1 -1
  110. package/dist/locus-info/infoUtils.js +10 -38
  111. package/dist/locus-info/infoUtils.js.map +1 -1
  112. package/dist/locus-info/mediaSharesUtils.js +82 -38
  113. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  114. package/dist/locus-info/parser.js +314 -163
  115. package/dist/locus-info/parser.js.map +1 -1
  116. package/dist/locus-info/selfUtils.js +110 -92
  117. package/dist/locus-info/selfUtils.js.map +1 -1
  118. package/dist/media/index.js +107 -231
  119. package/dist/media/index.js.map +1 -1
  120. package/dist/media/properties.js +137 -222
  121. package/dist/media/properties.js.map +1 -1
  122. package/dist/media/util.js +2 -9
  123. package/dist/media/util.js.map +1 -1
  124. package/dist/mediaQualityMetrics/config.js +316 -501
  125. package/dist/mediaQualityMetrics/config.js.map +1 -1
  126. package/dist/meeting/in-meeting-actions.js +97 -14
  127. package/dist/meeting/in-meeting-actions.js.map +1 -1
  128. package/dist/meeting/index.js +5311 -3871
  129. package/dist/meeting/index.js.map +1 -1
  130. package/dist/meeting/locusMediaRequest.js +292 -0
  131. package/dist/meeting/locusMediaRequest.js.map +1 -0
  132. package/dist/meeting/muteState.js +260 -183
  133. package/dist/meeting/muteState.js.map +1 -1
  134. package/dist/meeting/request.js +421 -347
  135. package/dist/meeting/request.js.map +1 -1
  136. package/dist/meeting/request.type.js +7 -0
  137. package/dist/meeting/request.type.js.map +1 -0
  138. package/dist/meeting/state.js +21 -31
  139. package/dist/meeting/state.js.map +1 -1
  140. package/dist/meeting/util.js +672 -585
  141. package/dist/meeting/util.js.map +1 -1
  142. package/dist/meeting/voicea-meeting.js +172 -0
  143. package/dist/meeting/voicea-meeting.js.map +1 -0
  144. package/dist/meeting-info/collection.js +6 -25
  145. package/dist/meeting-info/collection.js.map +1 -1
  146. package/dist/meeting-info/index.js +87 -39
  147. package/dist/meeting-info/index.js.map +1 -1
  148. package/dist/meeting-info/meeting-info-v2.js +352 -283
  149. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  150. package/dist/meeting-info/request.js +3 -15
  151. package/dist/meeting-info/request.js.map +1 -1
  152. package/dist/meeting-info/util.js +99 -183
  153. package/dist/meeting-info/util.js.map +1 -1
  154. package/dist/meeting-info/utilv2.js +147 -234
  155. package/dist/meeting-info/utilv2.js.map +1 -1
  156. package/dist/meetings/collection.js +43 -19
  157. package/dist/meetings/collection.js.map +1 -1
  158. package/dist/meetings/index.js +895 -600
  159. package/dist/meetings/index.js.map +1 -1
  160. package/dist/meetings/meetings.types.js +7 -0
  161. package/dist/meetings/meetings.types.js.map +1 -0
  162. package/dist/meetings/request.js +26 -41
  163. package/dist/meetings/request.js.map +1 -1
  164. package/dist/meetings/util.js +184 -157
  165. package/dist/meetings/util.js.map +1 -1
  166. package/dist/member/index.js +134 -85
  167. package/dist/member/index.js.map +1 -1
  168. package/dist/member/types.js +25 -0
  169. package/dist/member/types.js.map +1 -0
  170. package/dist/member/util.js +158 -88
  171. package/dist/member/util.js.map +1 -1
  172. package/dist/members/collection.js +13 -12
  173. package/dist/members/collection.js.map +1 -1
  174. package/dist/members/index.js +194 -204
  175. package/dist/members/index.js.map +1 -1
  176. package/dist/members/request.js +113 -68
  177. package/dist/members/request.js.map +1 -1
  178. package/dist/members/types.js +15 -0
  179. package/dist/members/types.js.map +1 -0
  180. package/dist/members/util.js +324 -259
  181. package/dist/members/util.js.map +1 -1
  182. package/dist/metrics/constants.js +19 -7
  183. package/dist/metrics/constants.js.map +1 -1
  184. package/dist/metrics/index.js +11 -558
  185. package/dist/metrics/index.js.map +1 -1
  186. package/dist/multistream/mediaRequestManager.js +263 -50
  187. package/dist/multistream/mediaRequestManager.js.map +1 -1
  188. package/dist/multistream/receiveSlot.js +58 -65
  189. package/dist/multistream/receiveSlot.js.map +1 -1
  190. package/dist/multistream/receiveSlotManager.js +76 -95
  191. package/dist/multistream/receiveSlotManager.js.map +1 -1
  192. package/dist/multistream/remoteMedia.js +62 -76
  193. package/dist/multistream/remoteMedia.js.map +1 -1
  194. package/dist/multistream/remoteMediaGroup.js +82 -45
  195. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  196. package/dist/multistream/remoteMediaManager.js +657 -448
  197. package/dist/multistream/remoteMediaManager.js.map +1 -1
  198. package/dist/multistream/sendSlotManager.js +255 -0
  199. package/dist/multistream/sendSlotManager.js.map +1 -0
  200. package/dist/networkQualityMonitor/index.js +40 -59
  201. package/dist/networkQualityMonitor/index.js.map +1 -1
  202. package/dist/personal-meeting-room/index.js +21 -45
  203. package/dist/personal-meeting-room/index.js.map +1 -1
  204. package/dist/personal-meeting-room/request.js +1 -31
  205. package/dist/personal-meeting-room/request.js.map +1 -1
  206. package/dist/personal-meeting-room/util.js +0 -13
  207. package/dist/personal-meeting-room/util.js.map +1 -1
  208. package/dist/reachability/clusterReachability.js +356 -0
  209. package/dist/reachability/clusterReachability.js.map +1 -0
  210. package/dist/reachability/index.js +297 -460
  211. package/dist/reachability/index.js.map +1 -1
  212. package/dist/reachability/request.js +20 -26
  213. package/dist/reachability/request.js.map +1 -1
  214. package/dist/reachability/util.js +29 -0
  215. package/dist/reachability/util.js.map +1 -0
  216. package/dist/reactions/constants.js +13 -0
  217. package/dist/reactions/constants.js.map +1 -0
  218. package/dist/reactions/reactions.js +109 -0
  219. package/dist/reactions/reactions.js.map +1 -0
  220. package/dist/reactions/reactions.type.js +36 -0
  221. package/dist/reactions/reactions.type.js.map +1 -0
  222. package/dist/reconnection-manager/index.js +413 -483
  223. package/dist/reconnection-manager/index.js.map +1 -1
  224. package/dist/recording-controller/enums.js +17 -0
  225. package/dist/recording-controller/enums.js.map +1 -0
  226. package/dist/recording-controller/index.js +362 -0
  227. package/dist/recording-controller/index.js.map +1 -0
  228. package/dist/recording-controller/util.js +64 -0
  229. package/dist/recording-controller/util.js.map +1 -0
  230. package/dist/roap/index.js +102 -86
  231. package/dist/roap/index.js.map +1 -1
  232. package/dist/roap/request.js +131 -135
  233. package/dist/roap/request.js.map +1 -1
  234. package/dist/roap/turnDiscovery.js +437 -116
  235. package/dist/roap/turnDiscovery.js.map +1 -1
  236. package/dist/rtcMetrics/constants.js +12 -0
  237. package/dist/rtcMetrics/constants.js.map +1 -0
  238. package/dist/rtcMetrics/index.js +179 -0
  239. package/dist/rtcMetrics/index.js.map +1 -0
  240. package/dist/statsAnalyzer/global.js +1 -95
  241. package/dist/statsAnalyzer/global.js.map +1 -1
  242. package/dist/statsAnalyzer/index.js +557 -583
  243. package/dist/statsAnalyzer/index.js.map +1 -1
  244. package/dist/statsAnalyzer/mqaUtil.js +326 -130
  245. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  246. package/dist/transcription/index.js +22 -47
  247. package/dist/transcription/index.js.map +1 -1
  248. package/dist/types/annotation/annotation.types.d.ts +42 -0
  249. package/dist/types/annotation/constants.d.ts +31 -0
  250. package/dist/types/annotation/index.d.ts +117 -0
  251. package/dist/types/breakouts/breakout.d.ts +8 -0
  252. package/dist/types/breakouts/collection.d.ts +5 -0
  253. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  254. package/dist/types/breakouts/events.d.ts +8 -0
  255. package/dist/types/breakouts/index.d.ts +5 -0
  256. package/dist/types/breakouts/request.d.ts +22 -0
  257. package/dist/types/breakouts/utils.d.ts +15 -0
  258. package/dist/types/common/browser-detection.d.ts +9 -0
  259. package/dist/types/common/collection.d.ts +48 -0
  260. package/dist/types/common/config.d.ts +2 -0
  261. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  262. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  263. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  264. package/dist/types/common/errors/media.d.ts +15 -0
  265. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  266. package/dist/types/common/errors/parameter.d.ts +15 -0
  267. package/dist/types/common/errors/password-error.d.ts +15 -0
  268. package/dist/types/common/errors/permission.d.ts +14 -0
  269. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  270. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  271. package/dist/types/common/errors/reconnection.d.ts +15 -0
  272. package/dist/types/common/errors/stats.d.ts +15 -0
  273. package/dist/types/common/errors/webex-errors.d.ts +93 -0
  274. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  275. package/dist/types/common/events/events-scope.d.ts +17 -0
  276. package/dist/types/common/events/events.d.ts +12 -0
  277. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  278. package/dist/types/common/events/util.d.ts +2 -0
  279. package/dist/types/common/logs/logger-config.d.ts +2 -0
  280. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  281. package/dist/types/common/logs/request.d.ts +36 -0
  282. package/dist/types/common/queue.d.ts +34 -0
  283. package/dist/types/config.d.ts +72 -0
  284. package/dist/types/constants.d.ts +1088 -0
  285. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  286. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  287. package/dist/types/controls-options-manager/index.d.ts +136 -0
  288. package/dist/types/controls-options-manager/types.d.ts +43 -0
  289. package/dist/types/controls-options-manager/util.d.ts +1 -0
  290. package/dist/types/index.d.ts +7 -0
  291. package/dist/types/interceptors/index.d.ts +2 -0
  292. package/dist/types/interceptors/locusRetry.d.ts +27 -0
  293. package/dist/types/interpretation/collection.d.ts +5 -0
  294. package/dist/types/interpretation/index.d.ts +5 -0
  295. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  296. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  297. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  298. package/dist/types/locus-info/fullState.d.ts +2 -0
  299. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  300. package/dist/types/locus-info/index.d.ts +322 -0
  301. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  302. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  303. package/dist/types/locus-info/parser.d.ts +272 -0
  304. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  305. package/dist/types/media/index.d.ts +34 -0
  306. package/dist/types/media/properties.d.ts +93 -0
  307. package/dist/types/media/util.d.ts +2 -0
  308. package/dist/types/mediaQualityMetrics/config.d.ts +241 -0
  309. package/dist/types/meeting/in-meeting-actions.d.ts +167 -0
  310. package/dist/types/meeting/index.d.ts +1824 -0
  311. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  312. package/dist/types/meeting/muteState.d.ts +178 -0
  313. package/dist/types/meeting/request.d.ts +293 -0
  314. package/dist/types/meeting/request.type.d.ts +11 -0
  315. package/dist/types/meeting/state.d.ts +9 -0
  316. package/dist/types/meeting/util.d.ts +118 -0
  317. package/dist/types/meeting/voicea-meeting.d.ts +16 -0
  318. package/dist/types/meeting-info/collection.d.ts +20 -0
  319. package/dist/types/meeting-info/index.d.ts +69 -0
  320. package/dist/types/meeting-info/meeting-info-v2.d.ts +123 -0
  321. package/dist/types/meeting-info/request.d.ts +22 -0
  322. package/dist/types/meeting-info/util.d.ts +2 -0
  323. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  324. package/dist/types/meetings/collection.d.ts +40 -0
  325. package/dist/types/meetings/index.d.ts +389 -0
  326. package/dist/types/meetings/meetings.types.d.ts +4 -0
  327. package/dist/types/meetings/request.d.ts +27 -0
  328. package/dist/types/meetings/util.d.ts +18 -0
  329. package/dist/types/member/index.d.ts +160 -0
  330. package/dist/types/member/types.d.ts +32 -0
  331. package/dist/types/member/util.d.ts +2 -0
  332. package/dist/types/members/collection.d.ts +29 -0
  333. package/dist/types/members/index.d.ts +353 -0
  334. package/dist/types/members/request.d.ts +114 -0
  335. package/dist/types/members/types.d.ts +25 -0
  336. package/dist/types/members/util.d.ts +215 -0
  337. package/dist/types/metrics/constants.d.ts +70 -0
  338. package/dist/types/metrics/index.d.ts +45 -0
  339. package/dist/types/multistream/mediaRequestManager.d.ts +120 -0
  340. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  341. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  342. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  343. package/dist/types/multistream/remoteMediaGroup.d.ts +49 -0
  344. package/dist/types/multistream/remoteMediaManager.d.ts +301 -0
  345. package/dist/types/multistream/sendSlotManager.d.ts +70 -0
  346. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  347. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  348. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  349. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  350. package/dist/types/reachability/clusterReachability.d.ts +109 -0
  351. package/dist/types/reachability/index.d.ts +105 -0
  352. package/dist/types/reachability/request.d.ts +39 -0
  353. package/dist/types/reachability/util.d.ts +8 -0
  354. package/dist/types/reactions/constants.d.ts +3 -0
  355. package/dist/types/reactions/reactions.d.ts +4 -0
  356. package/dist/types/reactions/reactions.type.d.ts +52 -0
  357. package/dist/types/reconnection-manager/index.d.ts +136 -0
  358. package/dist/types/recording-controller/enums.d.ts +7 -0
  359. package/dist/types/recording-controller/index.d.ts +207 -0
  360. package/dist/types/recording-controller/util.d.ts +14 -0
  361. package/dist/types/roap/index.d.ts +86 -0
  362. package/dist/types/roap/request.d.ts +39 -0
  363. package/dist/types/roap/turnDiscovery.d.ts +155 -0
  364. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  365. package/dist/types/rtcMetrics/index.d.ts +61 -0
  366. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  367. package/dist/types/statsAnalyzer/index.d.ts +217 -0
  368. package/dist/types/statsAnalyzer/mqaUtil.d.ts +48 -0
  369. package/dist/types/transcription/index.d.ts +64 -0
  370. package/dist/types/webinar/collection.d.ts +16 -0
  371. package/dist/types/webinar/index.d.ts +5 -0
  372. package/dist/webinar/collection.js +44 -0
  373. package/dist/webinar/collection.js.map +1 -0
  374. package/dist/webinar/index.js +69 -0
  375. package/dist/webinar/index.js.map +1 -0
  376. package/internal-README.md +7 -6
  377. package/package.json +30 -21
  378. package/src/annotation/annotation.types.ts +50 -0
  379. package/src/annotation/constants.ts +36 -0
  380. package/src/annotation/index.ts +328 -0
  381. package/src/breakouts/README.md +220 -0
  382. package/src/breakouts/breakout.ts +188 -0
  383. package/src/breakouts/collection.ts +19 -0
  384. package/src/breakouts/edit-lock-error.ts +25 -0
  385. package/src/breakouts/events.ts +56 -0
  386. package/src/breakouts/index.ts +925 -0
  387. package/src/breakouts/request.ts +55 -0
  388. package/src/breakouts/utils.ts +57 -0
  389. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  390. package/src/common/collection.ts +9 -7
  391. package/src/common/{config.js → config.ts} +1 -1
  392. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  393. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  394. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  395. package/src/common/errors/{media.js → media.ts} +11 -7
  396. package/src/common/errors/no-meeting-info.ts +24 -0
  397. package/src/common/errors/parameter.ts +11 -7
  398. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  399. package/src/common/errors/{permission.js → permission.ts} +10 -6
  400. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  401. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  402. package/src/common/errors/{stats.js → stats.ts} +11 -7
  403. package/src/common/errors/{webex-errors.js → webex-errors.ts} +51 -8
  404. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  405. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  406. package/src/common/events/{events.js → events.ts} +5 -1
  407. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  408. package/src/common/events/{util.js → util.ts} +2 -3
  409. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  410. package/src/common/logs/logger-proxy.ts +44 -0
  411. package/src/common/logs/{request.js → request.ts} +26 -9
  412. package/src/common/queue.ts +22 -9
  413. package/src/{config.js → config.ts} +19 -21
  414. package/src/constants.ts +296 -27
  415. package/src/controls-options-manager/constants.ts +5 -0
  416. package/src/controls-options-manager/enums.ts +18 -0
  417. package/src/controls-options-manager/index.ts +278 -0
  418. package/src/controls-options-manager/types.ts +59 -0
  419. package/src/controls-options-manager/util.ts +300 -0
  420. package/src/index.ts +45 -0
  421. package/src/interceptors/index.ts +3 -0
  422. package/src/interceptors/locusRetry.ts +67 -0
  423. package/src/interpretation/README.md +60 -0
  424. package/src/interpretation/collection.ts +19 -0
  425. package/src/interpretation/index.ts +349 -0
  426. package/src/interpretation/siLanguage.ts +18 -0
  427. package/src/locus-info/controlsUtils.ts +222 -0
  428. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  429. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  430. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  431. package/src/locus-info/{index.js → index.ts} +561 -119
  432. package/src/locus-info/{infoUtils.js → infoUtils.ts} +29 -10
  433. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +97 -17
  434. package/src/locus-info/{parser.js → parser.ts} +303 -104
  435. package/src/locus-info/{selfUtils.js → selfUtils.ts} +199 -68
  436. package/src/media/index.ts +460 -0
  437. package/src/media/properties.ts +283 -0
  438. package/src/media/{util.js → util.ts} +2 -2
  439. package/src/mediaQualityMetrics/config.ts +249 -0
  440. package/src/meeting/in-meeting-actions.ts +199 -3
  441. package/src/meeting/index.ts +8494 -0
  442. package/src/meeting/locusMediaRequest.ts +313 -0
  443. package/src/meeting/muteState.ts +465 -0
  444. package/src/meeting/request.ts +912 -0
  445. package/src/meeting/request.type.ts +13 -0
  446. package/src/meeting/{state.js → state.ts} +50 -35
  447. package/src/meeting/util.ts +799 -0
  448. package/src/meeting/voicea-meeting.ts +122 -0
  449. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  450. package/src/meeting-info/index.ts +210 -0
  451. package/src/meeting-info/meeting-info-v2.ts +423 -0
  452. package/src/meeting-info/{request.js → request.ts} +14 -4
  453. package/src/meeting-info/{util.js → util.ts} +70 -58
  454. package/src/meeting-info/{utilv2.js → utilv2.ts} +99 -82
  455. package/src/meetings/collection.ts +76 -0
  456. package/src/meetings/index.ts +1539 -0
  457. package/src/meetings/meetings.types.ts +12 -0
  458. package/src/meetings/{request.js → request.ts} +34 -25
  459. package/src/meetings/{util.js → util.ts} +133 -38
  460. package/src/member/{index.js → index.ts} +159 -56
  461. package/src/member/types.ts +38 -0
  462. package/src/member/util.ts +397 -0
  463. package/src/members/{collection.js → collection.ts} +10 -2
  464. package/src/members/{index.js → index.ts} +351 -146
  465. package/src/members/request.ts +255 -0
  466. package/src/members/types.ts +29 -0
  467. package/src/members/util.ts +353 -0
  468. package/src/metrics/{constants.js → constants.ts} +17 -6
  469. package/src/metrics/index.ts +73 -0
  470. package/src/multistream/mediaRequestManager.ts +341 -64
  471. package/src/multistream/receiveSlot.ts +69 -26
  472. package/src/multistream/receiveSlotManager.ts +66 -42
  473. package/src/multistream/remoteMedia.ts +40 -5
  474. package/src/multistream/remoteMediaGroup.ts +82 -3
  475. package/src/multistream/remoteMediaManager.ts +401 -81
  476. package/src/multistream/sendSlotManager.ts +199 -0
  477. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  478. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  479. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  480. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  481. package/src/reachability/clusterReachability.ts +320 -0
  482. package/src/reachability/index.ts +371 -0
  483. package/src/reachability/request.ts +50 -35
  484. package/src/reachability/util.ts +24 -0
  485. package/src/reactions/constants.ts +4 -0
  486. package/src/reactions/reactions.ts +104 -0
  487. package/src/reactions/reactions.type.ts +62 -0
  488. package/src/reconnection-manager/index.ts +643 -0
  489. package/src/recording-controller/enums.ts +8 -0
  490. package/src/recording-controller/index.ts +332 -0
  491. package/src/recording-controller/util.ts +75 -0
  492. package/src/roap/index.ts +288 -0
  493. package/src/roap/request.ts +153 -0
  494. package/src/roap/turnDiscovery.ts +374 -70
  495. package/src/rtcMetrics/constants.ts +3 -0
  496. package/src/rtcMetrics/index.ts +166 -0
  497. package/src/statsAnalyzer/global.ts +37 -0
  498. package/src/statsAnalyzer/index.ts +1275 -0
  499. package/src/statsAnalyzer/mqaUtil.ts +440 -0
  500. package/src/transcription/{index.js → index.ts} +46 -39
  501. package/src/webinar/collection.ts +31 -0
  502. package/src/webinar/index.ts +62 -0
  503. package/test/integration/spec/converged-space-meetings.js +233 -0
  504. package/test/integration/spec/journey.js +791 -531
  505. package/test/integration/spec/space-meeting.js +391 -204
  506. package/test/integration/spec/transcription.js +7 -8
  507. package/test/unit/spec/annotation/index.ts +418 -0
  508. package/test/unit/spec/breakouts/breakout.ts +238 -0
  509. package/test/unit/spec/breakouts/collection.ts +15 -0
  510. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  511. package/test/unit/spec/breakouts/events.ts +89 -0
  512. package/test/unit/spec/breakouts/index.ts +1793 -0
  513. package/test/unit/spec/breakouts/request.ts +104 -0
  514. package/test/unit/spec/breakouts/utils.js +72 -0
  515. package/test/unit/spec/common/browser-detection.js +9 -28
  516. package/test/unit/spec/common/queue.js +31 -2
  517. package/test/unit/spec/controls-options-manager/index.js +287 -0
  518. package/test/unit/spec/controls-options-manager/util.js +582 -0
  519. package/test/unit/spec/fixture/locus.js +93 -90
  520. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  521. package/test/unit/spec/interpretation/collection.ts +15 -0
  522. package/test/unit/spec/interpretation/index.ts +625 -0
  523. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  524. package/test/unit/spec/locus-info/controlsUtils.js +325 -32
  525. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  526. package/test/unit/spec/locus-info/index.js +1458 -21
  527. package/test/unit/spec/locus-info/infoUtils.js +71 -40
  528. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  529. package/test/unit/spec/locus-info/lib/SeqCmp.json +529 -685
  530. package/test/unit/spec/locus-info/mediaSharesUtils.ts +41 -0
  531. package/test/unit/spec/locus-info/parser.js +119 -44
  532. package/test/unit/spec/locus-info/selfConstant.js +120 -103
  533. package/test/unit/spec/locus-info/selfUtils.js +291 -12
  534. package/test/unit/spec/media/index.ts +194 -111
  535. package/test/unit/spec/media/properties.ts +11 -11
  536. package/test/unit/spec/meeting/in-meeting-actions.ts +96 -3
  537. package/test/unit/spec/meeting/index.js +8616 -1921
  538. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  539. package/test/unit/spec/meeting/muteState.js +568 -207
  540. package/test/unit/spec/meeting/request.js +602 -82
  541. package/test/unit/spec/meeting/utils.js +867 -179
  542. package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
  543. package/test/unit/spec/meeting-info/index.js +300 -0
  544. package/test/unit/spec/meeting-info/meetinginfov2.js +631 -78
  545. package/test/unit/spec/meeting-info/request.js +7 -9
  546. package/test/unit/spec/meeting-info/util.js +11 -12
  547. package/test/unit/spec/meeting-info/utilv2.js +131 -74
  548. package/test/unit/spec/meetings/collection.js +27 -1
  549. package/test/unit/spec/meetings/index.js +1826 -374
  550. package/test/unit/spec/meetings/utils.js +243 -14
  551. package/test/unit/spec/member/index.js +61 -7
  552. package/test/unit/spec/member/util.js +526 -26
  553. package/test/unit/spec/members/index.js +536 -55
  554. package/test/unit/spec/members/request.js +228 -40
  555. package/test/unit/spec/members/utils.js +217 -4
  556. package/test/unit/spec/metrics/index.js +13 -68
  557. package/test/unit/spec/multistream/mediaRequestManager.ts +1032 -110
  558. package/test/unit/spec/multistream/receiveSlot.ts +77 -18
  559. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  560. package/test/unit/spec/multistream/remoteMedia.ts +40 -2
  561. package/test/unit/spec/multistream/remoteMediaGroup.ts +350 -5
  562. package/test/unit/spec/multistream/remoteMediaManager.ts +937 -65
  563. package/test/unit/spec/multistream/sendSlotManager.ts +274 -0
  564. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  565. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  566. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  567. package/test/unit/spec/reachability/index.ts +606 -26
  568. package/test/unit/spec/reachability/request.js +68 -0
  569. package/test/unit/spec/reachability/util.ts +40 -0
  570. package/test/unit/spec/reconnection-manager/index.js +222 -34
  571. package/test/unit/spec/recording-controller/index.js +306 -0
  572. package/test/unit/spec/recording-controller/util.js +229 -0
  573. package/test/unit/spec/roap/index.ts +238 -82
  574. package/test/unit/spec/roap/request.ts +255 -0
  575. package/test/unit/spec/roap/turnDiscovery.ts +707 -110
  576. package/test/unit/spec/rtcMetrics/index.ts +122 -0
  577. package/test/unit/spec/stats-analyzer/index.js +1331 -62
  578. package/test/unit/spec/webinar/collection.ts +13 -0
  579. package/test/unit/spec/webinar/index.ts +60 -0
  580. package/test/utils/cmr.js +44 -42
  581. package/test/utils/constants.js +9 -0
  582. package/test/utils/integrationTestUtils.js +46 -0
  583. package/test/utils/testUtils.js +63 -99
  584. package/test/utils/webex-config.js +22 -18
  585. package/test/utils/webex-test-users.js +65 -50
  586. package/tsconfig.json +6 -0
  587. package/dist/media/internal-media-core-wrapper.js +0 -22
  588. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  589. package/dist/meeting/effectsState.js +0 -327
  590. package/dist/meeting/effectsState.js.map +0 -1
  591. package/dist/metrics/config.js +0 -301
  592. package/dist/metrics/config.js.map +0 -1
  593. package/dist/multistream/multistreamMedia.js +0 -116
  594. package/dist/multistream/multistreamMedia.js.map +0 -1
  595. package/dist/peer-connection-manager/util.js +0 -124
  596. package/dist/peer-connection-manager/util.js.map +0 -1
  597. package/src/common/logs/logger-proxy.js +0 -33
  598. package/src/index.js +0 -15
  599. package/src/locus-info/controlsUtils.js +0 -102
  600. package/src/media/index.js +0 -459
  601. package/src/media/internal-media-core-wrapper.ts +0 -9
  602. package/src/media/properties.js +0 -289
  603. package/src/mediaQualityMetrics/config.js +0 -382
  604. package/src/meeting/effectsState.js +0 -205
  605. package/src/meeting/index.js +0 -6284
  606. package/src/meeting/muteState.js +0 -318
  607. package/src/meeting/request.js +0 -684
  608. package/src/meeting/util.js +0 -506
  609. package/src/meeting-info/index.js +0 -131
  610. package/src/meeting-info/meeting-info-v2.js +0 -255
  611. package/src/meetings/collection.js +0 -40
  612. package/src/meetings/index.js +0 -1015
  613. package/src/member/util.js +0 -254
  614. package/src/members/request.js +0 -131
  615. package/src/members/util.js +0 -258
  616. package/src/metrics/config.js +0 -324
  617. package/src/metrics/index.js +0 -530
  618. package/src/multistream/multistreamMedia.ts +0 -92
  619. package/src/peer-connection-manager/util.ts +0 -117
  620. package/src/reachability/index.js +0 -464
  621. package/src/reconnection-manager/index.js +0 -519
  622. package/src/roap/index.js +0 -220
  623. package/src/roap/request.js +0 -127
  624. package/src/statsAnalyzer/global.js +0 -133
  625. package/src/statsAnalyzer/index.js +0 -1006
  626. package/src/statsAnalyzer/mqaUtil.js +0 -173
  627. package/test/unit/spec/meeting/effectsState.js +0 -291
  628. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  629. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -1,47 +1,44 @@
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
-
9
+ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
13
10
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
14
-
15
11
  var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
16
-
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
17
13
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
18
-
19
14
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
20
-
21
15
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
22
-
23
16
  var _common = require("@webex/common");
24
-
25
17
  var _metrics = _interopRequireDefault(require("../metrics"));
26
-
27
18
  var _constants = _interopRequireDefault(require("../metrics/constants"));
28
-
29
19
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
30
-
31
20
  var _constants2 = require("../constants");
21
+ var _util = _interopRequireDefault(require("../meeting/util"));
22
+ // @ts-ignore - Types not available for @webex/common
32
23
 
33
24
  var TURN_DISCOVERY_TIMEOUT = 10; // in seconds
25
+
34
26
  // Roap spec says that seq should start from 1, but TURN discovery works fine with seq=0
35
27
  // and this is handy for us, because TURN discovery is always done before the first SDP exchange,
36
28
  // so we can do it with seq=0 or not do it at all and then we create the RoapMediaConnection
37
29
  // and do the SDP offer with seq=1
38
-
39
30
  var TURN_DISCOVERY_SEQ = 0;
31
+ var TurnDiscoverySkipReason = {
32
+ missingHttpResponse: 'missing http response',
33
+ // when we asked for the TURN discovery response to be in the http response, but it wasn't there
34
+ reachability: 'reachability',
35
+ // when udp reachability to public clusters is ok, so we don't need TURN (this doens't apply when joinWithMedia() is used)
36
+ alreadyInProgress: 'already in progress' // when we try to start TURN discovery while it's already in progress
37
+ };
40
38
  /**
41
39
  * Handles the process of finding out TURN server information from Linus.
42
40
  * This is achieved by sending a TURN_DISCOVERY_REQUEST.
43
41
  */
44
-
45
42
  var TurnDiscovery = /*#__PURE__*/function () {
46
43
  // used for waiting for the response
47
44
 
@@ -63,6 +60,7 @@ var TurnDiscovery = /*#__PURE__*/function () {
63
60
  password: ''
64
61
  };
65
62
  }
63
+
66
64
  /**
67
65
  * waits for TURN_DISCOVERY_RESPONSE message to arrive
68
66
  *
@@ -70,50 +68,44 @@ var TurnDiscovery = /*#__PURE__*/function () {
70
68
  * @private
71
69
  * @memberof Roap
72
70
  */
73
-
74
-
75
71
  (0, _createClass2.default)(TurnDiscovery, [{
76
72
  key: "waitForTurnDiscoveryResponse",
77
73
  value: function waitForTurnDiscoveryResponse() {
78
74
  if (!this.defer) {
79
75
  _loggerProxy.default.logger.warn('Roap:turnDiscovery#waitForTurnDiscoveryResponse --> TURN discovery is not in progress');
80
-
81
76
  return _promise.default.reject(new Error('waitForTurnDiscoveryResponse() called before sendRoapTurnDiscoveryRequest()'));
82
77
  }
83
-
84
78
  var defer = this.defer;
85
79
  this.responseTimer = setTimeout(function () {
86
80
  _loggerProxy.default.logger.warn("Roap:turnDiscovery#waitForTurnDiscoveryResponse --> timeout! no response arrived within ".concat(TURN_DISCOVERY_TIMEOUT, " seconds"));
87
-
88
81
  defer.reject(new Error('Timed out waiting for TURN_DISCOVERY_RESPONSE'));
89
82
  }, TURN_DISCOVERY_TIMEOUT * 1000);
90
-
91
83
  _loggerProxy.default.logger.info('Roap:turnDiscovery#waitForTurnDiscoveryResponse --> waiting for TURN_DISCOVERY_RESPONSE...');
92
-
93
84
  return defer.promise;
94
85
  }
86
+
95
87
  /**
96
- * handles TURN_DISCOVERY_RESPONSE roap message
88
+ * Handles TURN_DISCOVERY_RESPONSE roap message. Use it if the roap message comes over the websocket,
89
+ * otherwise use handleTurnDiscoveryHttpResponse() if it comes in the http response.
97
90
  *
98
91
  * @param {Object} roapMessage
92
+ * @param {string} from string to indicate how we got the response (used just for logging)
99
93
  * @returns {void}
100
94
  * @public
101
95
  * @memberof Roap
102
96
  */
103
-
104
97
  }, {
105
98
  key: "handleTurnDiscoveryResponse",
106
- value: function handleTurnDiscoveryResponse(roapMessage) {
99
+ value: function handleTurnDiscoveryResponse(roapMessage, from) {
107
100
  var _this = this;
108
-
109
101
  var headers = roapMessage.headers;
110
-
111
102
  if (!this.defer) {
112
- _loggerProxy.default.logger.warn('Roap:turnDiscovery#handleTurnDiscoveryResponse --> unexpected TURN discovery response');
113
-
103
+ _loggerProxy.default.logger.warn("Roap:turnDiscovery#handleTurnDiscoveryResponse --> unexpected TURN discovery response ".concat(from));
114
104
  return;
115
105
  }
116
-
106
+ if (roapMessage.messageType !== _constants2.ROAP.ROAP_TYPES.TURN_DISCOVERY_RESPONSE) {
107
+ this.defer.reject(new Error("TURN_DISCOVERY_RESPONSE ".concat(from, " has unexpected messageType: ").concat((0, _stringify.default)(roapMessage))));
108
+ }
117
109
  var expectedHeaders = [{
118
110
  headerName: 'x-cisco-turn-url',
119
111
  field: 'url'
@@ -136,17 +128,245 @@ var TurnDiscovery = /*#__PURE__*/function () {
136
128
  });
137
129
  clearTimeout(this.responseTimer);
138
130
  this.responseTimer = undefined;
139
-
140
131
  if (foundHeaders !== expectedHeaders.length) {
141
- _loggerProxy.default.logger.warn("Roap:turnDiscovery#handleTurnDiscoveryResponse --> missing some headers, received: ".concat((0, _stringify.default)(headers)));
142
-
143
- this.defer.reject(new Error("TURN_DISCOVERY_RESPONSE missing some headers: ".concat((0, _stringify.default)(headers))));
132
+ _loggerProxy.default.logger.warn("Roap:turnDiscovery#handleTurnDiscoveryResponse --> missing some headers, received ".concat(from, ": ").concat((0, _stringify.default)(headers)));
133
+ this.defer.reject(new Error("TURN_DISCOVERY_RESPONSE ".concat(from, " missing some headers: ").concat((0, _stringify.default)(headers))));
144
134
  } else {
145
- _loggerProxy.default.logger.info("Roap:turnDiscovery#handleTurnDiscoveryResponse --> received a valid response, url=".concat(this.turnInfo.url));
135
+ _loggerProxy.default.logger.info("Roap:turnDiscovery#handleTurnDiscoveryResponse --> received a valid response ".concat(from, ", url=").concat(this.turnInfo.url));
136
+ this.defer.resolve({
137
+ isOkRequired: !(headers !== null && headers !== void 0 && headers.includes('noOkInTransaction'))
138
+ });
139
+ }
140
+ }
141
+
142
+ /**
143
+ * Generates TURN_DISCOVERY_REQUEST roap message. When this method returns a roapMessage, it means that a TURN discovery process has started.
144
+ * It needs be ended by calling handleTurnDiscoveryHttpResponse() once you get a response from the backend. If you don't get any response
145
+ * or want to abort, you need to call abort().
146
+ *
147
+ * @param {Meeting} meeting
148
+ * @param {boolean} isForced
149
+ * @returns {Object}
150
+ */
151
+ }, {
152
+ key: "generateTurnDiscoveryRequestMessage",
153
+ value: function () {
154
+ var _generateTurnDiscoveryRequestMessage = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(meeting, isForced) {
155
+ var turnDiscoverySkippedReason, roapMessage;
156
+ return _regenerator.default.wrap(function _callee$(_context) {
157
+ while (1) switch (_context.prev = _context.next) {
158
+ case 0:
159
+ if (!this.defer) {
160
+ _context.next = 3;
161
+ break;
162
+ }
163
+ _loggerProxy.default.logger.warn('Roap:turnDiscovery#generateTurnDiscoveryRequestMessage --> TURN discovery already in progress');
164
+ return _context.abrupt("return", {
165
+ roapMessage: undefined,
166
+ turnDiscoverySkippedReason: TurnDiscoverySkipReason.alreadyInProgress
167
+ });
168
+ case 3:
169
+ if (isForced) {
170
+ _context.next = 7;
171
+ break;
172
+ }
173
+ _context.next = 6;
174
+ return this.getSkipReason(meeting);
175
+ case 6:
176
+ turnDiscoverySkippedReason = _context.sent;
177
+ case 7:
178
+ if (!turnDiscoverySkippedReason) {
179
+ _context.next = 9;
180
+ break;
181
+ }
182
+ return _context.abrupt("return", {
183
+ roapMessage: undefined,
184
+ turnDiscoverySkippedReason: turnDiscoverySkippedReason
185
+ });
186
+ case 9:
187
+ this.defer = new _common.Defer();
188
+ roapMessage = {
189
+ messageType: _constants2.ROAP.ROAP_TYPES.TURN_DISCOVERY_REQUEST,
190
+ version: _constants2.ROAP.ROAP_VERSION,
191
+ seq: TURN_DISCOVERY_SEQ,
192
+ headers: ['includeAnswerInHttpResponse', 'noOkInTransaction']
193
+ };
194
+ _loggerProxy.default.logger.info('Roap:turnDiscovery#generateTurnDiscoveryRequestMessage --> generated TURN_DISCOVERY_REQUEST message');
195
+ return _context.abrupt("return", {
196
+ roapMessage: roapMessage,
197
+ turnDiscoverySkippedReason: undefined
198
+ });
199
+ case 13:
200
+ case "end":
201
+ return _context.stop();
202
+ }
203
+ }, _callee, this);
204
+ }));
205
+ function generateTurnDiscoveryRequestMessage(_x, _x2) {
206
+ return _generateTurnDiscoveryRequestMessage.apply(this, arguments);
207
+ }
208
+ return generateTurnDiscoveryRequestMessage;
209
+ }()
210
+ /**
211
+ * Handles any errors that occur during TURN discovery without re-throwing them.
212
+ *
213
+ * @param {Meeting} meeting
214
+ * @param {Error} error
215
+ * @returns {TurnDiscoveryResult}
216
+ */
217
+ }, {
218
+ key: "handleTurnDiscoveryFailure",
219
+ value: function handleTurnDiscoveryFailure(meeting, error) {
220
+ // we catch any errors and resolve with no turn information so that the normal call join flow can continue without TURN
221
+ _loggerProxy.default.logger.info("Roap:turnDiscovery#doTurnDiscovery --> TURN discovery failed, continuing without TURN: ".concat(error));
222
+ _metrics.default.sendBehavioralMetric(_constants.default.TURN_DISCOVERY_FAILURE, {
223
+ correlation_id: meeting.correlationId,
224
+ locus_id: meeting.locusUrl.split('/').pop(),
225
+ reason: error.message,
226
+ stack: error.stack
227
+ });
228
+ return {
229
+ turnServerInfo: undefined,
230
+ turnDiscoverySkippedReason: "failure: ".concat(error.message)
231
+ };
232
+ }
146
233
 
147
- this.defer.resolve();
234
+ /**
235
+ * Handles TURN_DISCOVERY_RESPONSE roap message that came in http response. If the response is not valid,
236
+ * it returns an object with turnServerInfo set to undefined. In that case you need to call abort()
237
+ * to end the TURN discovery process.
238
+ *
239
+ * @param {Meeting} meeting
240
+ * @param {Object|undefined} httpResponse can be undefined to indicate that we didn't get the response
241
+ * @returns {Promise<TurnDiscoveryResult>}
242
+ * @memberof Roap
243
+ */
244
+ }, {
245
+ key: "handleTurnDiscoveryHttpResponse",
246
+ value: function () {
247
+ var _handleTurnDiscoveryHttpResponse = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(meeting, httpResponse) {
248
+ var roapMessage, _yield$this$defer$pro, isOkRequired;
249
+ return _regenerator.default.wrap(function _callee2$(_context2) {
250
+ while (1) switch (_context2.prev = _context2.next) {
251
+ case 0:
252
+ if (this.defer) {
253
+ _context2.next = 3;
254
+ break;
255
+ }
256
+ _loggerProxy.default.logger.warn('Roap:turnDiscovery#handleTurnDiscoveryHttpResponse --> unexpected http response, TURN discovery is not in progress');
257
+ throw new Error('handleTurnDiscoveryHttpResponse() called before generateTurnDiscoveryRequestMessage()');
258
+ case 3:
259
+ if (!(httpResponse === undefined)) {
260
+ _context2.next = 5;
261
+ break;
262
+ }
263
+ return _context2.abrupt("return", {
264
+ turnServerInfo: undefined,
265
+ turnDiscoverySkippedReason: TurnDiscoverySkipReason.missingHttpResponse
266
+ });
267
+ case 5:
268
+ _context2.prev = 5;
269
+ roapMessage = this.parseHttpTurnDiscoveryResponse(meeting, httpResponse);
270
+ if (roapMessage) {
271
+ _context2.next = 9;
272
+ break;
273
+ }
274
+ return _context2.abrupt("return", {
275
+ turnServerInfo: undefined,
276
+ turnDiscoverySkippedReason: TurnDiscoverySkipReason.missingHttpResponse
277
+ });
278
+ case 9:
279
+ this.handleTurnDiscoveryResponse(roapMessage, 'in http response');
280
+ _context2.next = 12;
281
+ return this.defer.promise;
282
+ case 12:
283
+ _yield$this$defer$pro = _context2.sent;
284
+ isOkRequired = _yield$this$defer$pro.isOkRequired;
285
+ if (!isOkRequired) {
286
+ _context2.next = 17;
287
+ break;
288
+ }
289
+ _context2.next = 17;
290
+ return this.sendRoapOK(meeting);
291
+ case 17:
292
+ this.defer = undefined;
293
+ _loggerProxy.default.logger.info('Roap:turnDiscovery#doTurnDiscovery --> TURN discovery completed');
294
+ return _context2.abrupt("return", {
295
+ turnServerInfo: this.turnInfo,
296
+ turnDiscoverySkippedReason: undefined
297
+ });
298
+ case 22:
299
+ _context2.prev = 22;
300
+ _context2.t0 = _context2["catch"](5);
301
+ this.abort();
302
+ return _context2.abrupt("return", this.handleTurnDiscoveryFailure(meeting, _context2.t0));
303
+ case 26:
304
+ case "end":
305
+ return _context2.stop();
306
+ }
307
+ }, _callee2, this, [[5, 22]]);
308
+ }));
309
+ function handleTurnDiscoveryHttpResponse(_x3, _x4) {
310
+ return _handleTurnDiscoveryHttpResponse.apply(this, arguments);
311
+ }
312
+ return handleTurnDiscoveryHttpResponse;
313
+ }()
314
+ /**
315
+ * Aborts current TURN discovery. This method needs to be called if you called generateTurnDiscoveryRequestMessage(),
316
+ * but then never got any response from the server.
317
+ * @returns {void}
318
+ */
319
+ }, {
320
+ key: "abort",
321
+ value: function abort() {
322
+ if (this.defer) {
323
+ this.defer.reject(new Error('TURN discovery aborted'));
324
+ this.defer = undefined;
148
325
  }
149
326
  }
327
+
328
+ /**
329
+ * Parses the TURN_DISCOVERY_RESPONSE roap message out of the http response
330
+ * and returns it.
331
+ *
332
+ * @param {Meeting} meeting
333
+ * @param {any} httpResponse
334
+ * @returns {any}
335
+ */
336
+ }, {
337
+ key: "parseHttpTurnDiscoveryResponse",
338
+ value: function parseHttpTurnDiscoveryResponse(meeting, httpResponse) {
339
+ var _httpResponse$mediaCo, _httpResponse$mediaCo2;
340
+ var turnDiscoveryResponse;
341
+ if ((_httpResponse$mediaCo = httpResponse.mediaConnections) !== null && _httpResponse$mediaCo !== void 0 && (_httpResponse$mediaCo2 = _httpResponse$mediaCo[0]) !== null && _httpResponse$mediaCo2 !== void 0 && _httpResponse$mediaCo2.remoteSdp) {
342
+ var remoteSdp = JSON.parse(httpResponse.mediaConnections[0].remoteSdp);
343
+ if (remoteSdp.roapMessage) {
344
+ // yes, it's misleading that remoteSdp actually contains a TURN discovery response, but that's how the backend works...
345
+ var _remoteSdp$roapMessag = remoteSdp.roapMessage,
346
+ seq = _remoteSdp$roapMessag.seq,
347
+ messageType = _remoteSdp$roapMessag.messageType,
348
+ errorType = _remoteSdp$roapMessag.errorType,
349
+ errorCause = _remoteSdp$roapMessag.errorCause,
350
+ headers = _remoteSdp$roapMessag.headers;
351
+ turnDiscoveryResponse = {
352
+ seq: seq,
353
+ messageType: messageType,
354
+ errorType: errorType,
355
+ errorCause: errorCause,
356
+ headers: headers
357
+ };
358
+ }
359
+ }
360
+ if (!turnDiscoveryResponse) {
361
+ _metrics.default.sendBehavioralMetric(_constants.default.ROAP_HTTP_RESPONSE_MISSING, {
362
+ correlationId: meeting.correlationId,
363
+ messageType: 'TURN_DISCOVERY_RESPONSE',
364
+ isMultistream: meeting.isMultistream
365
+ });
366
+ }
367
+ return turnDiscoveryResponse;
368
+ }
369
+
150
370
  /**
151
371
  * sends the TURN_DISCOVERY_REQUEST roap request
152
372
  *
@@ -156,41 +376,58 @@ var TurnDiscovery = /*#__PURE__*/function () {
156
376
  * @private
157
377
  * @memberof Roap
158
378
  */
159
-
160
379
  }, {
161
380
  key: "sendRoapTurnDiscoveryRequest",
162
381
  value: function sendRoapTurnDiscoveryRequest(meeting, isReconnecting) {
382
+ var _this2 = this;
163
383
  if (this.defer) {
164
384
  _loggerProxy.default.logger.warn('Roap:turnDiscovery#sendRoapTurnDiscoveryRequest --> already in progress');
165
-
166
- return _promise.default.resolve();
385
+ return _promise.default.resolve({
386
+ turnServerInfo: undefined,
387
+ turnDiscoverySkippedReason: TurnDiscoverySkipReason.alreadyInProgress
388
+ });
167
389
  }
168
-
169
390
  this.defer = new _common.Defer();
170
391
  var roapMessage = {
171
392
  messageType: _constants2.ROAP.ROAP_TYPES.TURN_DISCOVERY_REQUEST,
172
393
  version: _constants2.ROAP.ROAP_VERSION,
173
- seq: TURN_DISCOVERY_SEQ
394
+ seq: TURN_DISCOVERY_SEQ,
395
+ headers: ['includeAnswerInHttpResponse', 'noOkInTransaction']
174
396
  };
175
-
176
397
  _loggerProxy.default.logger.info('Roap:turnDiscovery#sendRoapTurnDiscoveryRequest --> sending TURN_DISCOVERY_REQUEST');
177
-
178
398
  return this.roapRequest.sendRoap({
179
399
  roapMessage: roapMessage,
180
- correlationId: meeting.correlationId,
400
+ // @ts-ignore - Fix missing type
181
401
  locusSelfUrl: meeting.selfUrl,
402
+ // @ts-ignore - Fix missing type
182
403
  mediaId: isReconnecting ? '' : meeting.mediaId,
183
- audioMuted: meeting.isAudioMuted(),
184
- videoMuted: meeting.isVideoMuted(),
185
- meetingId: meeting.id
186
- }).then(function (_ref) {
187
- var mediaConnections = _ref.mediaConnections;
188
-
189
- if (mediaConnections) {
190
- meeting.updateMediaConnections(mediaConnections);
191
- }
192
- });
404
+ meetingId: meeting.id,
405
+ locusMediaRequest: meeting.locusMediaRequest,
406
+ // @ts-ignore - because of meeting.webex
407
+ ipVersion: _util.default.getIpVersion(meeting.webex)
408
+ }).then( /*#__PURE__*/function () {
409
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(response) {
410
+ var mediaConnections;
411
+ return _regenerator.default.wrap(function _callee3$(_context3) {
412
+ while (1) switch (_context3.prev = _context3.next) {
413
+ case 0:
414
+ mediaConnections = response.mediaConnections;
415
+ if (mediaConnections) {
416
+ meeting.updateMediaConnections(mediaConnections);
417
+ }
418
+ return _context3.abrupt("return", _this2.handleTurnDiscoveryHttpResponse(meeting, response));
419
+ case 3:
420
+ case "end":
421
+ return _context3.stop();
422
+ }
423
+ }, _callee3);
424
+ }));
425
+ return function (_x5) {
426
+ return _ref.apply(this, arguments);
427
+ };
428
+ }());
193
429
  }
430
+
194
431
  /**
195
432
  * Sends the OK message that server expects to receive
196
433
  * after it sends us TURN_DISCOVERY_RESPONSE
@@ -198,26 +435,96 @@ var TurnDiscovery = /*#__PURE__*/function () {
198
435
  * @param {Meeting} meeting
199
436
  * @returns {Promise}
200
437
  */
201
-
202
438
  }, {
203
439
  key: "sendRoapOK",
204
440
  value: function sendRoapOK(meeting) {
205
- _loggerProxy.default.logger.info('Roap:turnDiscovery#sendRoapOK --> sending OK');
206
-
441
+ _loggerProxy.default.logger.info('Roap:turnDiscovery#sendRoapOK --> TURN discovery response requires OK, sending it...');
442
+ _metrics.default.sendBehavioralMetric(_constants.default.TURN_DISCOVERY_REQUIRES_OK, {
443
+ correlation_id: meeting.correlationId,
444
+ locus_id: meeting.locusUrl.split('/').pop()
445
+ });
207
446
  return this.roapRequest.sendRoap({
208
447
  roapMessage: {
209
448
  messageType: _constants2.ROAP.ROAP_TYPES.OK,
210
449
  version: _constants2.ROAP.ROAP_VERSION,
211
450
  seq: TURN_DISCOVERY_SEQ
212
451
  },
452
+ // @ts-ignore - fix type
213
453
  locusSelfUrl: meeting.selfUrl,
454
+ // @ts-ignore - fix type
214
455
  mediaId: meeting.mediaId,
215
- correlationId: meeting.correlationId,
216
- audioMuted: meeting.isAudioMuted(),
217
- videoMuted: meeting.isVideoMuted(),
218
- meetingId: meeting.id
456
+ meetingId: meeting.id,
457
+ locusMediaRequest: meeting.locusMediaRequest
219
458
  });
220
459
  }
460
+
461
+ /**
462
+ * Gets the reason why reachability is skipped.
463
+ *
464
+ * @param {Meeting} meeting
465
+ * @returns {Promise<string>} Promise with empty string if reachability is not skipped or a reason if it is skipped
466
+ */
467
+ }, {
468
+ key: "getSkipReason",
469
+ value: function () {
470
+ var _getSkipReason = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(meeting) {
471
+ var isAnyPublicClusterReachable;
472
+ return _regenerator.default.wrap(function _callee4$(_context4) {
473
+ while (1) switch (_context4.prev = _context4.next) {
474
+ case 0:
475
+ _context4.next = 2;
476
+ return meeting.webex.meetings.reachability.isAnyPublicClusterReachable();
477
+ case 2:
478
+ isAnyPublicClusterReachable = _context4.sent;
479
+ if (!isAnyPublicClusterReachable) {
480
+ _context4.next = 6;
481
+ break;
482
+ }
483
+ _loggerProxy.default.logger.info('Roap:turnDiscovery#getSkipReason --> reachability has not failed, skipping TURN discovery');
484
+ return _context4.abrupt("return", TurnDiscoverySkipReason.reachability);
485
+ case 6:
486
+ return _context4.abrupt("return", undefined);
487
+ case 7:
488
+ case "end":
489
+ return _context4.stop();
490
+ }
491
+ }, _callee4);
492
+ }));
493
+ function getSkipReason(_x6) {
494
+ return _getSkipReason.apply(this, arguments);
495
+ }
496
+ return getSkipReason;
497
+ }()
498
+ /**
499
+ * Checks if TURN discovery is skipped.
500
+ *
501
+ * @param {Meeting} meeting
502
+ * @returns {Boolean} true if TURN discovery is being skipped, false if it is being done
503
+ */
504
+ }, {
505
+ key: "isSkipped",
506
+ value: function () {
507
+ var _isSkipped = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(meeting) {
508
+ var skipReason;
509
+ return _regenerator.default.wrap(function _callee5$(_context5) {
510
+ while (1) switch (_context5.prev = _context5.next) {
511
+ case 0:
512
+ _context5.next = 2;
513
+ return this.getSkipReason(meeting);
514
+ case 2:
515
+ skipReason = _context5.sent;
516
+ return _context5.abrupt("return", !!skipReason);
517
+ case 4:
518
+ case "end":
519
+ return _context5.stop();
520
+ }
521
+ }, _callee5, this);
522
+ }));
523
+ function isSkipped(_x7) {
524
+ return _isSkipped.apply(this, arguments);
525
+ }
526
+ return isSkipped;
527
+ }()
221
528
  /**
222
529
  * Retrieves TURN server information from the backend by doing
223
530
  * a roap message exchange:
@@ -231,69 +538,83 @@ var TurnDiscovery = /*#__PURE__*/function () {
231
538
  * so it works fine no matter if TURN discovery is done or not.
232
539
  *
233
540
  * @param {Meeting} meeting
234
- * @param {Boolean} isReconnecting should be set to true if this is a new
541
+ * @param {Boolean} [isReconnecting] should be set to true if this is a new
235
542
  * media connection just after a reconnection
543
+ * @param {Boolean} [isForced]
236
544
  * @returns {Promise}
237
545
  */
238
-
239
546
  }, {
240
547
  key: "doTurnDiscovery",
241
- value: function doTurnDiscovery(meeting, isReconnecting) {
242
- var _this2 = this;
243
-
244
- var isAnyClusterReachable = meeting.webex.meetings.reachability.isAnyClusterReachable();
245
-
246
- if (isAnyClusterReachable) {
247
- _loggerProxy.default.logger.info('Roap:turnDiscovery#doTurnDiscovery --> reachability has not failed, skipping TURN discovery');
248
-
249
- return _promise.default.resolve({
250
- turnServerInfo: undefined,
251
- turnDiscoverySkippedReason: 'reachability'
252
- });
253
- }
254
-
255
- if (!meeting.config.experimental.enableTurnDiscovery) {
256
- _loggerProxy.default.logger.info('Roap:turnDiscovery#doTurnDiscovery --> TURN discovery disabled in config, skipping it');
257
-
258
- return _promise.default.resolve({
259
- turnServerInfo: undefined,
260
- turnDiscoverySkippedReason: 'config'
261
- });
548
+ value: function () {
549
+ var _doTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(meeting, isReconnecting, isForced) {
550
+ var turnDiscoverySkippedReason, turnDiscoveryResult, _yield$this$waitForTu, isOkRequired;
551
+ return _regenerator.default.wrap(function _callee6$(_context6) {
552
+ while (1) switch (_context6.prev = _context6.next) {
553
+ case 0:
554
+ if (isForced) {
555
+ _context6.next = 4;
556
+ break;
557
+ }
558
+ _context6.next = 3;
559
+ return this.getSkipReason(meeting);
560
+ case 3:
561
+ turnDiscoverySkippedReason = _context6.sent;
562
+ case 4:
563
+ if (!turnDiscoverySkippedReason) {
564
+ _context6.next = 6;
565
+ break;
566
+ }
567
+ return _context6.abrupt("return", {
568
+ turnServerInfo: undefined,
569
+ turnDiscoverySkippedReason: turnDiscoverySkippedReason
570
+ });
571
+ case 6:
572
+ _context6.prev = 6;
573
+ _context6.next = 9;
574
+ return this.sendRoapTurnDiscoveryRequest(meeting, isReconnecting);
575
+ case 9:
576
+ turnDiscoveryResult = _context6.sent;
577
+ if (!(turnDiscoveryResult.turnDiscoverySkippedReason !== TurnDiscoverySkipReason.missingHttpResponse)) {
578
+ _context6.next = 12;
579
+ break;
580
+ }
581
+ return _context6.abrupt("return", turnDiscoveryResult);
582
+ case 12:
583
+ _context6.next = 14;
584
+ return this.waitForTurnDiscoveryResponse();
585
+ case 14:
586
+ _yield$this$waitForTu = _context6.sent;
587
+ isOkRequired = _yield$this$waitForTu.isOkRequired;
588
+ if (!isOkRequired) {
589
+ _context6.next = 19;
590
+ break;
591
+ }
592
+ _context6.next = 19;
593
+ return this.sendRoapOK(meeting);
594
+ case 19:
595
+ this.defer = undefined;
596
+ _loggerProxy.default.logger.info('Roap:turnDiscovery#doTurnDiscovery --> TURN discovery completed');
597
+ return _context6.abrupt("return", {
598
+ turnServerInfo: this.turnInfo,
599
+ turnDiscoverySkippedReason: undefined
600
+ });
601
+ case 24:
602
+ _context6.prev = 24;
603
+ _context6.t0 = _context6["catch"](6);
604
+ return _context6.abrupt("return", this.handleTurnDiscoveryFailure(meeting, _context6.t0));
605
+ case 27:
606
+ case "end":
607
+ return _context6.stop();
608
+ }
609
+ }, _callee6, this, [[6, 24]]);
610
+ }));
611
+ function doTurnDiscovery(_x8, _x9, _x10) {
612
+ return _doTurnDiscovery.apply(this, arguments);
262
613
  }
263
-
264
- return this.sendRoapTurnDiscoveryRequest(meeting, isReconnecting).then(function () {
265
- return _this2.waitForTurnDiscoveryResponse();
266
- }).then(function () {
267
- return _this2.sendRoapOK(meeting);
268
- }).then(function () {
269
- _this2.defer = undefined;
270
-
271
- _loggerProxy.default.logger.info('Roap:turnDiscovery#doTurnDiscovery --> TURN discovery completed');
272
-
273
- return {
274
- turnServerInfo: _this2.turnInfo,
275
- turnDiscoverySkippedReason: undefined
276
- };
277
- }).catch(function (e) {
278
- // we catch any errors and resolve with no turn information so that the normal call join flow can continue without TURN
279
- _loggerProxy.default.logger.info("Roap:turnDiscovery#doTurnDiscovery --> TURN discovery failed, continuing without TURN: ".concat(e));
280
-
281
- _metrics.default.sendBehavioralMetric(_constants.default.TURN_DISCOVERY_FAILURE, {
282
- correlation_id: meeting.correlationId,
283
- locus_id: meeting.locusUrl.split('/').pop(),
284
- reason: e.message,
285
- stack: e.stack
286
- });
287
-
288
- return _promise.default.resolve({
289
- turnServerInfo: undefined,
290
- turnDiscoverySkippedReason: undefined
291
- });
292
- });
293
- }
614
+ return doTurnDiscovery;
615
+ }()
294
616
  }]);
295
617
  return TurnDiscovery;
296
618
  }();
297
-
298
619
  exports.default = TurnDiscovery;
299
620
  //# sourceMappingURL=turnDiscovery.js.map