@webex/plugin-meetings 3.0.0-beta.40 → 3.0.0-beta.401

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 (398) hide show
  1. package/README.md +58 -8
  2. package/dist/annotation/annotation.types.js +7 -0
  3. package/dist/annotation/annotation.types.js.map +1 -0
  4. package/dist/annotation/constants.js +49 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +342 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +94 -15
  9. package/dist/breakouts/breakout.js.map +1 -1
  10. package/dist/breakouts/events.js +45 -0
  11. package/dist/breakouts/events.js.map +1 -0
  12. package/dist/breakouts/index.js +625 -123
  13. package/dist/breakouts/index.js.map +1 -1
  14. package/dist/breakouts/utils.js +27 -8
  15. package/dist/breakouts/utils.js.map +1 -1
  16. package/dist/common/errors/no-meeting-info.js +51 -0
  17. package/dist/common/errors/no-meeting-info.js.map +1 -0
  18. package/dist/common/errors/reclaim-host-role-errors.js +158 -0
  19. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  20. package/dist/common/errors/webex-errors.js +48 -7
  21. package/dist/common/errors/webex-errors.js.map +1 -1
  22. package/dist/common/logs/logger-proxy.js +1 -1
  23. package/dist/common/logs/logger-proxy.js.map +1 -1
  24. package/dist/common/logs/request.js +5 -1
  25. package/dist/common/logs/request.js.map +1 -1
  26. package/dist/common/queue.js +24 -9
  27. package/dist/common/queue.js.map +1 -1
  28. package/dist/config.js +6 -10
  29. package/dist/config.js.map +1 -1
  30. package/dist/constants.js +247 -34
  31. package/dist/constants.js.map +1 -1
  32. package/dist/controls-options-manager/enums.js +14 -2
  33. package/dist/controls-options-manager/enums.js.map +1 -1
  34. package/dist/controls-options-manager/index.js +109 -15
  35. package/dist/controls-options-manager/index.js.map +1 -1
  36. package/dist/controls-options-manager/types.js +7 -0
  37. package/dist/controls-options-manager/types.js.map +1 -0
  38. package/dist/controls-options-manager/util.js +309 -18
  39. package/dist/controls-options-manager/util.js.map +1 -1
  40. package/dist/index.js +116 -2
  41. package/dist/index.js.map +1 -1
  42. package/dist/interceptors/index.js +15 -0
  43. package/dist/interceptors/index.js.map +1 -0
  44. package/dist/interceptors/locusRetry.js +93 -0
  45. package/dist/interceptors/locusRetry.js.map +1 -0
  46. package/dist/interpretation/collection.js +23 -0
  47. package/dist/interpretation/collection.js.map +1 -0
  48. package/dist/interpretation/index.js +380 -0
  49. package/dist/interpretation/index.js.map +1 -0
  50. package/dist/interpretation/siLanguage.js +25 -0
  51. package/dist/interpretation/siLanguage.js.map +1 -0
  52. package/dist/locus-info/controlsUtils.js +91 -2
  53. package/dist/locus-info/controlsUtils.js.map +1 -1
  54. package/dist/locus-info/index.js +386 -62
  55. package/dist/locus-info/index.js.map +1 -1
  56. package/dist/locus-info/infoUtils.js +7 -1
  57. package/dist/locus-info/infoUtils.js.map +1 -1
  58. package/dist/locus-info/mediaSharesUtils.js +71 -1
  59. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  60. package/dist/locus-info/parser.js +249 -72
  61. package/dist/locus-info/parser.js.map +1 -1
  62. package/dist/locus-info/selfUtils.js +89 -14
  63. package/dist/locus-info/selfUtils.js.map +1 -1
  64. package/dist/media/index.js +65 -102
  65. package/dist/media/index.js.map +1 -1
  66. package/dist/media/properties.js +73 -124
  67. package/dist/media/properties.js.map +1 -1
  68. package/dist/mediaQualityMetrics/config.js +135 -330
  69. package/dist/mediaQualityMetrics/config.js.map +1 -1
  70. package/dist/meeting/in-meeting-actions.js +86 -2
  71. package/dist/meeting/in-meeting-actions.js.map +1 -1
  72. package/dist/meeting/index.js +4509 -3000
  73. package/dist/meeting/index.js.map +1 -1
  74. package/dist/meeting/locusMediaRequest.js +292 -0
  75. package/dist/meeting/locusMediaRequest.js.map +1 -0
  76. package/dist/meeting/muteState.js +236 -136
  77. package/dist/meeting/muteState.js.map +1 -1
  78. package/dist/meeting/request.js +185 -155
  79. package/dist/meeting/request.js.map +1 -1
  80. package/dist/meeting/util.js +676 -417
  81. package/dist/meeting/util.js.map +1 -1
  82. package/dist/meeting/voicea-meeting.js +172 -0
  83. package/dist/meeting/voicea-meeting.js.map +1 -0
  84. package/dist/meeting-info/index.js +73 -7
  85. package/dist/meeting-info/index.js.map +1 -1
  86. package/dist/meeting-info/meeting-info-v2.js +201 -57
  87. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  88. package/dist/meeting-info/util.js +8 -7
  89. package/dist/meeting-info/util.js.map +1 -1
  90. package/dist/meeting-info/utilv2.js +44 -40
  91. package/dist/meeting-info/utilv2.js.map +1 -1
  92. package/dist/meetings/collection.js +39 -0
  93. package/dist/meetings/collection.js.map +1 -1
  94. package/dist/meetings/index.js +484 -119
  95. package/dist/meetings/index.js.map +1 -1
  96. package/dist/meetings/meetings.types.js +7 -0
  97. package/dist/meetings/meetings.types.js.map +1 -0
  98. package/dist/meetings/request.js +2 -0
  99. package/dist/meetings/request.js.map +1 -1
  100. package/dist/meetings/util.js +73 -7
  101. package/dist/meetings/util.js.map +1 -1
  102. package/dist/member/index.js +57 -0
  103. package/dist/member/index.js.map +1 -1
  104. package/dist/member/types.js +25 -0
  105. package/dist/member/types.js.map +1 -0
  106. package/dist/member/util.js +132 -25
  107. package/dist/member/util.js.map +1 -1
  108. package/dist/members/collection.js +10 -0
  109. package/dist/members/collection.js.map +1 -1
  110. package/dist/members/index.js +100 -5
  111. package/dist/members/index.js.map +1 -1
  112. package/dist/members/request.js +106 -38
  113. package/dist/members/request.js.map +1 -1
  114. package/dist/members/types.js +15 -0
  115. package/dist/members/types.js.map +1 -0
  116. package/dist/members/util.js +326 -232
  117. package/dist/members/util.js.map +1 -1
  118. package/dist/metrics/constants.js +18 -1
  119. package/dist/metrics/constants.js.map +1 -1
  120. package/dist/metrics/index.js +1 -446
  121. package/dist/metrics/index.js.map +1 -1
  122. package/dist/multistream/mediaRequestManager.js +223 -32
  123. package/dist/multistream/mediaRequestManager.js.map +1 -1
  124. package/dist/multistream/receiveSlot.js +10 -0
  125. package/dist/multistream/receiveSlot.js.map +1 -1
  126. package/dist/multistream/receiveSlotManager.js +39 -36
  127. package/dist/multistream/receiveSlotManager.js.map +1 -1
  128. package/dist/multistream/remoteMedia.js +3 -1
  129. package/dist/multistream/remoteMedia.js.map +1 -1
  130. package/dist/multistream/remoteMediaGroup.js +76 -5
  131. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  132. package/dist/multistream/remoteMediaManager.js +366 -104
  133. package/dist/multistream/remoteMediaManager.js.map +1 -1
  134. package/dist/multistream/sendSlotManager.js +255 -0
  135. package/dist/multistream/sendSlotManager.js.map +1 -0
  136. package/dist/reachability/clusterReachability.js +356 -0
  137. package/dist/reachability/clusterReachability.js.map +1 -0
  138. package/dist/reachability/index.js +263 -390
  139. package/dist/reachability/index.js.map +1 -1
  140. package/dist/reachability/request.js +6 -4
  141. package/dist/reachability/request.js.map +1 -1
  142. package/dist/reachability/util.js +29 -0
  143. package/dist/reachability/util.js.map +1 -0
  144. package/dist/reconnection-manager/index.js +266 -202
  145. package/dist/reconnection-manager/index.js.map +1 -1
  146. package/dist/recording-controller/index.js +21 -2
  147. package/dist/recording-controller/index.js.map +1 -1
  148. package/dist/recording-controller/util.js +9 -8
  149. package/dist/recording-controller/util.js.map +1 -1
  150. package/dist/roap/index.js +66 -28
  151. package/dist/roap/index.js.map +1 -1
  152. package/dist/roap/request.js +48 -64
  153. package/dist/roap/request.js.map +1 -1
  154. package/dist/roap/turnDiscovery.js +407 -79
  155. package/dist/roap/turnDiscovery.js.map +1 -1
  156. package/dist/rtcMetrics/constants.js +12 -0
  157. package/dist/rtcMetrics/constants.js.map +1 -0
  158. package/dist/rtcMetrics/index.js +179 -0
  159. package/dist/rtcMetrics/index.js.map +1 -0
  160. package/dist/statsAnalyzer/index.js +357 -295
  161. package/dist/statsAnalyzer/index.js.map +1 -1
  162. package/dist/statsAnalyzer/mqaUtil.js +296 -156
  163. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  164. package/dist/types/annotation/annotation.types.d.ts +42 -0
  165. package/dist/types/annotation/constants.d.ts +31 -0
  166. package/dist/types/annotation/index.d.ts +117 -0
  167. package/dist/types/breakouts/events.d.ts +8 -0
  168. package/dist/types/breakouts/utils.d.ts +9 -2
  169. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  170. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  171. package/dist/types/common/errors/webex-errors.d.ts +25 -1
  172. package/dist/types/common/logs/request.d.ts +2 -0
  173. package/dist/types/common/queue.d.ts +9 -7
  174. package/dist/types/config.d.ts +2 -7
  175. package/dist/types/constants.d.ts +204 -32
  176. package/dist/types/controls-options-manager/enums.d.ts +11 -1
  177. package/dist/types/controls-options-manager/index.d.ts +17 -1
  178. package/dist/types/controls-options-manager/types.d.ts +43 -0
  179. package/dist/types/controls-options-manager/util.d.ts +1 -7
  180. package/dist/types/index.d.ts +6 -5
  181. package/dist/types/interceptors/index.d.ts +2 -0
  182. package/dist/types/interceptors/locusRetry.d.ts +27 -0
  183. package/dist/types/interpretation/collection.d.ts +5 -0
  184. package/dist/types/interpretation/index.d.ts +5 -0
  185. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  186. package/dist/types/locus-info/index.d.ts +57 -4
  187. package/dist/types/locus-info/parser.d.ts +66 -6
  188. package/dist/types/media/index.d.ts +2 -0
  189. package/dist/types/media/properties.d.ts +34 -49
  190. package/dist/types/mediaQualityMetrics/config.d.ts +99 -223
  191. package/dist/types/meeting/in-meeting-actions.d.ts +86 -2
  192. package/dist/types/meeting/index.d.ts +630 -505
  193. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  194. package/dist/types/meeting/muteState.d.ts +88 -26
  195. package/dist/types/meeting/request.d.ts +65 -43
  196. package/dist/types/meeting/util.d.ts +117 -1
  197. package/dist/types/meeting/voicea-meeting.d.ts +16 -0
  198. package/dist/types/meeting-info/index.d.ts +13 -1
  199. package/dist/types/meeting-info/meeting-info-v2.d.ts +31 -1
  200. package/dist/types/meetings/collection.d.ts +17 -0
  201. package/dist/types/meetings/index.d.ts +113 -21
  202. package/dist/types/meetings/meetings.types.d.ts +4 -0
  203. package/dist/types/member/index.d.ts +14 -0
  204. package/dist/types/member/types.d.ts +32 -0
  205. package/dist/types/members/collection.d.ts +5 -0
  206. package/dist/types/members/index.d.ts +35 -2
  207. package/dist/types/members/request.d.ts +73 -9
  208. package/dist/types/members/types.d.ts +25 -0
  209. package/dist/types/members/util.d.ts +214 -1
  210. package/dist/types/metrics/constants.d.ts +17 -0
  211. package/dist/types/metrics/index.d.ts +4 -111
  212. package/dist/types/multistream/mediaRequestManager.d.ts +72 -3
  213. package/dist/types/multistream/receiveSlot.d.ts +7 -3
  214. package/dist/types/multistream/receiveSlotManager.d.ts +14 -4
  215. package/dist/types/multistream/remoteMedia.d.ts +3 -31
  216. package/dist/types/multistream/remoteMediaGroup.d.ts +2 -9
  217. package/dist/types/multistream/remoteMediaManager.d.ts +62 -2
  218. package/dist/types/multistream/sendSlotManager.d.ts +70 -0
  219. package/dist/types/reachability/clusterReachability.d.ts +109 -0
  220. package/dist/types/reachability/index.d.ts +60 -95
  221. package/dist/types/reachability/request.d.ts +3 -1
  222. package/dist/types/reachability/util.d.ts +8 -0
  223. package/dist/types/reconnection-manager/index.d.ts +19 -0
  224. package/dist/types/recording-controller/index.d.ts +15 -1
  225. package/dist/types/recording-controller/util.d.ts +5 -4
  226. package/dist/types/roap/index.d.ts +11 -2
  227. package/dist/types/roap/request.d.ts +9 -8
  228. package/dist/types/roap/turnDiscovery.d.ts +90 -9
  229. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  230. package/dist/types/rtcMetrics/index.d.ts +61 -0
  231. package/dist/types/statsAnalyzer/index.d.ts +34 -12
  232. package/dist/types/statsAnalyzer/mqaUtil.d.ts +28 -4
  233. package/dist/types/webinar/collection.d.ts +16 -0
  234. package/dist/types/webinar/index.d.ts +5 -0
  235. package/dist/webinar/collection.js +44 -0
  236. package/dist/webinar/collection.js.map +1 -0
  237. package/dist/webinar/index.js +69 -0
  238. package/dist/webinar/index.js.map +1 -0
  239. package/package.json +22 -19
  240. package/src/annotation/annotation.types.ts +50 -0
  241. package/src/annotation/constants.ts +36 -0
  242. package/src/annotation/index.ts +328 -0
  243. package/src/breakouts/README.md +27 -6
  244. package/src/breakouts/breakout.ts +67 -9
  245. package/src/breakouts/events.ts +56 -0
  246. package/src/breakouts/index.ts +494 -73
  247. package/src/breakouts/utils.ts +26 -8
  248. package/src/common/errors/no-meeting-info.ts +24 -0
  249. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  250. package/src/common/errors/webex-errors.ts +44 -2
  251. package/src/common/logs/logger-proxy.ts +1 -1
  252. package/src/common/logs/request.ts +5 -1
  253. package/src/common/queue.ts +22 -8
  254. package/src/config.ts +6 -13
  255. package/src/constants.ts +234 -22
  256. package/src/controls-options-manager/enums.ts +12 -0
  257. package/src/controls-options-manager/index.ts +116 -21
  258. package/src/controls-options-manager/types.ts +59 -0
  259. package/src/controls-options-manager/util.ts +294 -14
  260. package/src/index.ts +45 -0
  261. package/src/interceptors/index.ts +3 -0
  262. package/src/interceptors/locusRetry.ts +67 -0
  263. package/src/interpretation/README.md +60 -0
  264. package/src/interpretation/collection.ts +19 -0
  265. package/src/interpretation/index.ts +349 -0
  266. package/src/interpretation/siLanguage.ts +18 -0
  267. package/src/locus-info/controlsUtils.ts +108 -0
  268. package/src/locus-info/index.ts +417 -59
  269. package/src/locus-info/infoUtils.ts +10 -2
  270. package/src/locus-info/mediaSharesUtils.ts +80 -0
  271. package/src/locus-info/parser.ts +258 -47
  272. package/src/locus-info/selfUtils.ts +81 -5
  273. package/src/media/index.ts +100 -108
  274. package/src/media/properties.ts +88 -117
  275. package/src/mediaQualityMetrics/config.ts +103 -238
  276. package/src/meeting/in-meeting-actions.ts +171 -3
  277. package/src/meeting/index.ts +3899 -2622
  278. package/src/meeting/locusMediaRequest.ts +313 -0
  279. package/src/meeting/muteState.ts +237 -136
  280. package/src/meeting/request.ts +166 -122
  281. package/src/meeting/util.ts +690 -395
  282. package/src/meeting/voicea-meeting.ts +122 -0
  283. package/src/meeting-info/index.ts +81 -8
  284. package/src/meeting-info/meeting-info-v2.ts +166 -16
  285. package/src/meeting-info/util.ts +13 -10
  286. package/src/meeting-info/utilv2.ts +47 -37
  287. package/src/meetings/collection.ts +33 -0
  288. package/src/meetings/index.ts +507 -127
  289. package/src/meetings/meetings.types.ts +12 -0
  290. package/src/meetings/request.ts +2 -0
  291. package/src/meetings/util.ts +81 -12
  292. package/src/member/index.ts +57 -0
  293. package/src/member/types.ts +38 -0
  294. package/src/member/util.ts +141 -25
  295. package/src/members/collection.ts +8 -0
  296. package/src/members/index.ts +133 -7
  297. package/src/members/request.ts +97 -17
  298. package/src/members/types.ts +29 -0
  299. package/src/members/util.ts +333 -240
  300. package/src/metrics/constants.ts +17 -0
  301. package/src/metrics/index.ts +1 -469
  302. package/src/multistream/mediaRequestManager.ts +271 -56
  303. package/src/multistream/receiveSlot.ts +11 -4
  304. package/src/multistream/receiveSlotManager.ts +34 -24
  305. package/src/multistream/remoteMedia.ts +5 -3
  306. package/src/multistream/remoteMediaGroup.ts +78 -0
  307. package/src/multistream/remoteMediaManager.ts +248 -44
  308. package/src/multistream/sendSlotManager.ts +199 -0
  309. package/src/reachability/clusterReachability.ts +320 -0
  310. package/src/reachability/index.ts +229 -346
  311. package/src/reachability/request.ts +8 -4
  312. package/src/reachability/util.ts +24 -0
  313. package/src/reconnection-manager/index.ts +128 -97
  314. package/src/recording-controller/index.ts +20 -3
  315. package/src/recording-controller/util.ts +26 -9
  316. package/src/roap/index.ts +76 -25
  317. package/src/roap/request.ts +48 -67
  318. package/src/roap/turnDiscovery.ts +331 -67
  319. package/src/rtcMetrics/constants.ts +3 -0
  320. package/src/rtcMetrics/index.ts +166 -0
  321. package/src/statsAnalyzer/index.ts +457 -416
  322. package/src/statsAnalyzer/mqaUtil.ts +317 -170
  323. package/src/webinar/collection.ts +31 -0
  324. package/src/webinar/index.ts +62 -0
  325. package/test/integration/spec/converged-space-meetings.js +60 -3
  326. package/test/integration/spec/journey.js +321 -262
  327. package/test/integration/spec/space-meeting.js +76 -3
  328. package/test/unit/spec/annotation/index.ts +418 -0
  329. package/test/unit/spec/breakouts/breakout.ts +119 -28
  330. package/test/unit/spec/breakouts/events.ts +89 -0
  331. package/test/unit/spec/breakouts/index.ts +1204 -118
  332. package/test/unit/spec/breakouts/utils.js +27 -2
  333. package/test/unit/spec/common/queue.js +31 -2
  334. package/test/unit/spec/controls-options-manager/index.js +163 -0
  335. package/test/unit/spec/controls-options-manager/util.js +576 -60
  336. package/test/unit/spec/fixture/locus.js +1 -0
  337. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  338. package/test/unit/spec/interpretation/collection.ts +15 -0
  339. package/test/unit/spec/interpretation/index.ts +625 -0
  340. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  341. package/test/unit/spec/locus-info/controlsUtils.js +316 -43
  342. package/test/unit/spec/locus-info/index.js +1372 -37
  343. package/test/unit/spec/locus-info/infoUtils.js +37 -15
  344. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  345. package/test/unit/spec/locus-info/mediaSharesUtils.ts +41 -0
  346. package/test/unit/spec/locus-info/parser.js +116 -35
  347. package/test/unit/spec/locus-info/selfConstant.js +27 -4
  348. package/test/unit/spec/locus-info/selfUtils.js +203 -17
  349. package/test/unit/spec/media/index.ts +178 -81
  350. package/test/unit/spec/media/properties.ts +2 -2
  351. package/test/unit/spec/meeting/in-meeting-actions.ts +85 -3
  352. package/test/unit/spec/meeting/index.js +7520 -2267
  353. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  354. package/test/unit/spec/meeting/muteState.js +549 -207
  355. package/test/unit/spec/meeting/request.js +476 -54
  356. package/test/unit/spec/meeting/utils.js +827 -74
  357. package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
  358. package/test/unit/spec/meeting-info/index.js +300 -0
  359. package/test/unit/spec/meeting-info/meetinginfov2.js +535 -9
  360. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  361. package/test/unit/spec/meetings/collection.js +26 -0
  362. package/test/unit/spec/meetings/index.js +1489 -219
  363. package/test/unit/spec/meetings/utils.js +229 -2
  364. package/test/unit/spec/member/index.js +61 -6
  365. package/test/unit/spec/member/util.js +510 -34
  366. package/test/unit/spec/members/index.js +432 -1
  367. package/test/unit/spec/members/request.js +206 -27
  368. package/test/unit/spec/members/utils.js +210 -0
  369. package/test/unit/spec/metrics/index.js +2 -52
  370. package/test/unit/spec/multistream/mediaRequestManager.ts +782 -114
  371. package/test/unit/spec/multistream/receiveSlot.ts +9 -1
  372. package/test/unit/spec/multistream/receiveSlotManager.ts +32 -30
  373. package/test/unit/spec/multistream/remoteMedia.ts +2 -0
  374. package/test/unit/spec/multistream/remoteMediaGroup.ts +345 -0
  375. package/test/unit/spec/multistream/remoteMediaManager.ts +525 -0
  376. package/test/unit/spec/multistream/sendSlotManager.ts +274 -0
  377. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  378. package/test/unit/spec/reachability/index.ts +551 -14
  379. package/test/unit/spec/reachability/request.js +3 -1
  380. package/test/unit/spec/reachability/util.ts +40 -0
  381. package/test/unit/spec/reconnection-manager/index.js +171 -11
  382. package/test/unit/spec/recording-controller/index.js +293 -218
  383. package/test/unit/spec/recording-controller/util.js +223 -96
  384. package/test/unit/spec/roap/index.ts +233 -81
  385. package/test/unit/spec/roap/request.ts +100 -62
  386. package/test/unit/spec/roap/turnDiscovery.ts +682 -108
  387. package/test/unit/spec/rtcMetrics/index.ts +122 -0
  388. package/test/unit/spec/stats-analyzer/index.js +1252 -12
  389. package/test/unit/spec/webinar/collection.ts +13 -0
  390. package/test/unit/spec/webinar/index.ts +60 -0
  391. package/test/utils/integrationTestUtils.js +46 -0
  392. package/test/utils/testUtils.js +0 -57
  393. package/test/utils/webex-test-users.js +12 -4
  394. package/dist/metrics/config.js +0 -289
  395. package/dist/metrics/config.js.map +0 -1
  396. package/dist/types/metrics/config.d.ts +0 -169
  397. package/src/index.js +0 -18
  398. package/src/metrics/config.ts +0 -485
@@ -18,6 +18,7 @@ var _metrics = _interopRequireDefault(require("../metrics"));
18
18
  var _constants = _interopRequireDefault(require("../metrics/constants"));
19
19
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
20
20
  var _constants2 = require("../constants");
21
+ var _util = _interopRequireDefault(require("../meeting/util"));
21
22
  // @ts-ignore - Types not available for @webex/common
22
23
 
23
24
  var TURN_DISCOVERY_TIMEOUT = 10; // in seconds
@@ -27,7 +28,13 @@ var TURN_DISCOVERY_TIMEOUT = 10; // in seconds
27
28
  // so we can do it with seq=0 or not do it at all and then we create the RoapMediaConnection
28
29
  // and do the SDP offer with seq=1
29
30
  var TURN_DISCOVERY_SEQ = 0;
30
-
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
+ };
31
38
  /**
32
39
  * Handles the process of finding out TURN server information from Linus.
33
40
  * This is achieved by sending a TURN_DISCOVERY_REQUEST.
@@ -78,23 +85,27 @@ var TurnDiscovery = /*#__PURE__*/function () {
78
85
  }
79
86
 
80
87
  /**
81
- * 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.
82
90
  *
83
91
  * @param {Object} roapMessage
92
+ * @param {string} from string to indicate how we got the response (used just for logging)
84
93
  * @returns {void}
85
94
  * @public
86
95
  * @memberof Roap
87
96
  */
88
97
  }, {
89
98
  key: "handleTurnDiscoveryResponse",
90
- value: function handleTurnDiscoveryResponse(roapMessage) {
99
+ value: function handleTurnDiscoveryResponse(roapMessage, from) {
91
100
  var _this = this;
92
- // @ts-ignore - Fix missing type
93
101
  var headers = roapMessage.headers;
94
102
  if (!this.defer) {
95
- _loggerProxy.default.logger.warn('Roap:turnDiscovery#handleTurnDiscoveryResponse --> unexpected TURN discovery response');
103
+ _loggerProxy.default.logger.warn("Roap:turnDiscovery#handleTurnDiscoveryResponse --> unexpected TURN discovery response ".concat(from));
96
104
  return;
97
105
  }
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
+ }
98
109
  var expectedHeaders = [{
99
110
  headerName: 'x-cisco-turn-url',
100
111
  field: 'url'
@@ -118,14 +129,244 @@ var TurnDiscovery = /*#__PURE__*/function () {
118
129
  clearTimeout(this.responseTimer);
119
130
  this.responseTimer = undefined;
120
131
  if (foundHeaders !== expectedHeaders.length) {
121
- _loggerProxy.default.logger.warn("Roap:turnDiscovery#handleTurnDiscoveryResponse --> missing some headers, received: ".concat((0, _stringify.default)(headers)));
122
- 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))));
123
134
  } else {
124
- _loggerProxy.default.logger.info("Roap:turnDiscovery#handleTurnDiscoveryResponse --> received a valid response, url=".concat(this.turnInfo.url));
125
- this.defer.resolve();
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
+ });
126
139
  }
127
140
  }
128
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
+ }
233
+
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;
325
+ }
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
+
129
370
  /**
130
371
  * sends the TURN_DISCOVERY_REQUEST roap request
131
372
  *
@@ -138,35 +379,53 @@ var TurnDiscovery = /*#__PURE__*/function () {
138
379
  }, {
139
380
  key: "sendRoapTurnDiscoveryRequest",
140
381
  value: function sendRoapTurnDiscoveryRequest(meeting, isReconnecting) {
141
- var _meeting$audio, _meeting$video;
382
+ var _this2 = this;
142
383
  if (this.defer) {
143
384
  _loggerProxy.default.logger.warn('Roap:turnDiscovery#sendRoapTurnDiscoveryRequest --> already in progress');
144
- return _promise.default.resolve();
385
+ return _promise.default.resolve({
386
+ turnServerInfo: undefined,
387
+ turnDiscoverySkippedReason: TurnDiscoverySkipReason.alreadyInProgress
388
+ });
145
389
  }
146
390
  this.defer = new _common.Defer();
147
391
  var roapMessage = {
148
392
  messageType: _constants2.ROAP.ROAP_TYPES.TURN_DISCOVERY_REQUEST,
149
393
  version: _constants2.ROAP.ROAP_VERSION,
150
- seq: TURN_DISCOVERY_SEQ
394
+ seq: TURN_DISCOVERY_SEQ,
395
+ headers: ['includeAnswerInHttpResponse', 'noOkInTransaction']
151
396
  };
152
397
  _loggerProxy.default.logger.info('Roap:turnDiscovery#sendRoapTurnDiscoveryRequest --> sending TURN_DISCOVERY_REQUEST');
153
398
  return this.roapRequest.sendRoap({
154
399
  roapMessage: roapMessage,
155
- correlationId: meeting.correlationId,
156
400
  // @ts-ignore - Fix missing type
157
401
  locusSelfUrl: meeting.selfUrl,
158
402
  // @ts-ignore - Fix missing type
159
403
  mediaId: isReconnecting ? '' : meeting.mediaId,
160
- audioMuted: (_meeting$audio = meeting.audio) === null || _meeting$audio === void 0 ? void 0 : _meeting$audio.isLocallyMuted(),
161
- videoMuted: (_meeting$video = meeting.video) === null || _meeting$video === void 0 ? void 0 : _meeting$video.isLocallyMuted(),
162
404
  meetingId: meeting.id,
163
- preferTranscoding: !meeting.isMultistream
164
- }).then(function (_ref) {
165
- var mediaConnections = _ref.mediaConnections;
166
- if (mediaConnections) {
167
- meeting.updateMediaConnections(mediaConnections);
168
- }
169
- });
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
+ }());
170
429
  }
171
430
 
172
431
  /**
@@ -179,8 +438,11 @@ var TurnDiscovery = /*#__PURE__*/function () {
179
438
  }, {
180
439
  key: "sendRoapOK",
181
440
  value: function sendRoapOK(meeting) {
182
- var _meeting$audio2, _meeting$video2;
183
- _loggerProxy.default.logger.info('Roap:turnDiscovery#sendRoapOK --> sending OK');
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
+ });
184
446
  return this.roapRequest.sendRoap({
185
447
  roapMessage: {
186
448
  messageType: _constants2.ROAP.ROAP_TYPES.OK,
@@ -191,14 +453,78 @@ var TurnDiscovery = /*#__PURE__*/function () {
191
453
  locusSelfUrl: meeting.selfUrl,
192
454
  // @ts-ignore - fix type
193
455
  mediaId: meeting.mediaId,
194
- correlationId: meeting.correlationId,
195
- audioMuted: (_meeting$audio2 = meeting.audio) === null || _meeting$audio2 === void 0 ? void 0 : _meeting$audio2.isLocallyMuted(),
196
- videoMuted: (_meeting$video2 = meeting.video) === null || _meeting$video2 === void 0 ? void 0 : _meeting$video2.isLocallyMuted(),
197
456
  meetingId: meeting.id,
198
- preferTranscoding: !meeting.isMultistream
457
+ locusMediaRequest: meeting.locusMediaRequest
199
458
  });
200
459
  }
201
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
+ }()
202
528
  /**
203
529
  * Retrieves TURN server information from the backend by doing
204
530
  * a roap message exchange:
@@ -212,75 +538,77 @@ var TurnDiscovery = /*#__PURE__*/function () {
212
538
  * so it works fine no matter if TURN discovery is done or not.
213
539
  *
214
540
  * @param {Meeting} meeting
215
- * @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
216
542
  * media connection just after a reconnection
543
+ * @param {Boolean} [isForced]
217
544
  * @returns {Promise}
218
545
  */
219
546
  }, {
220
547
  key: "doTurnDiscovery",
221
548
  value: function () {
222
- var _doTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(meeting, isReconnecting) {
223
- var _this2 = this;
224
- var isAnyClusterReachable;
225
- return _regenerator.default.wrap(function _callee$(_context) {
226
- while (1) switch (_context.prev = _context.next) {
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) {
227
553
  case 0:
228
- _context.next = 2;
229
- return meeting.webex.meetings.reachability.isAnyClusterReachable();
230
- case 2:
231
- isAnyClusterReachable = _context.sent;
232
- if (!isAnyClusterReachable) {
233
- _context.next = 6;
554
+ if (isForced) {
555
+ _context6.next = 4;
234
556
  break;
235
557
  }
236
- _loggerProxy.default.logger.info('Roap:turnDiscovery#doTurnDiscovery --> reachability has not failed, skipping TURN discovery');
237
- return _context.abrupt("return", {
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", {
238
568
  turnServerInfo: undefined,
239
- turnDiscoverySkippedReason: 'reachability'
569
+ turnDiscoverySkippedReason: turnDiscoverySkippedReason
240
570
  });
241
571
  case 6:
242
- if (meeting.config.experimental.enableTurnDiscovery) {
243
- _context.next = 9;
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;
244
579
  break;
245
580
  }
246
- _loggerProxy.default.logger.info('Roap:turnDiscovery#doTurnDiscovery --> TURN discovery disabled in config, skipping it');
247
- return _context.abrupt("return", {
248
- turnServerInfo: undefined,
249
- turnDiscoverySkippedReason: 'config'
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
250
600
  });
251
- case 9:
252
- return _context.abrupt("return", this.sendRoapTurnDiscoveryRequest(meeting, isReconnecting).then(function () {
253
- return _this2.waitForTurnDiscoveryResponse();
254
- }).then(function () {
255
- return _this2.sendRoapOK(meeting);
256
- }).then(function () {
257
- _this2.defer = undefined;
258
- _loggerProxy.default.logger.info('Roap:turnDiscovery#doTurnDiscovery --> TURN discovery completed');
259
- return {
260
- turnServerInfo: _this2.turnInfo,
261
- turnDiscoverySkippedReason: undefined
262
- };
263
- }).catch(function (e) {
264
- // we catch any errors and resolve with no turn information so that the normal call join flow can continue without TURN
265
- _loggerProxy.default.logger.info("Roap:turnDiscovery#doTurnDiscovery --> TURN discovery failed, continuing without TURN: ".concat(e));
266
- _metrics.default.sendBehavioralMetric(_constants.default.TURN_DISCOVERY_FAILURE, {
267
- correlation_id: meeting.correlationId,
268
- locus_id: meeting.locusUrl.split('/').pop(),
269
- reason: e.message,
270
- stack: e.stack
271
- });
272
- return {
273
- turnServerInfo: undefined,
274
- turnDiscoverySkippedReason: undefined
275
- };
276
- }));
277
- case 10:
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:
278
606
  case "end":
279
- return _context.stop();
607
+ return _context6.stop();
280
608
  }
281
- }, _callee, this);
609
+ }, _callee6, this, [[6, 24]]);
282
610
  }));
283
- function doTurnDiscovery(_x, _x2) {
611
+ function doTurnDiscovery(_x8, _x9, _x10) {
284
612
  return _doTurnDiscovery.apply(this, arguments);
285
613
  }
286
614
  return doTurnDiscovery;