@webex/plugin-meetings 2.60.0 → 2.60.1-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (535) hide show
  1. package/README.md +46 -8
  2. package/dist/annotation/annotation.types.d.ts +42 -0
  3. package/dist/annotation/annotation.types.js +7 -0
  4. package/dist/annotation/annotation.types.js.map +1 -0
  5. package/dist/annotation/constants.d.ts +31 -0
  6. package/dist/annotation/constants.js +41 -0
  7. package/dist/annotation/constants.js.map +1 -0
  8. package/dist/annotation/index.d.ts +117 -0
  9. package/dist/annotation/index.js +357 -0
  10. package/dist/annotation/index.js.map +1 -0
  11. package/dist/breakouts/breakout.d.ts +8 -0
  12. package/dist/breakouts/breakout.js +215 -0
  13. package/dist/breakouts/breakout.js.map +1 -0
  14. package/dist/breakouts/collection.d.ts +5 -0
  15. package/dist/breakouts/collection.js +22 -0
  16. package/dist/breakouts/collection.js.map +1 -0
  17. package/dist/breakouts/edit-lock-error.d.ts +15 -0
  18. package/dist/breakouts/edit-lock-error.js +51 -0
  19. package/dist/breakouts/edit-lock-error.js.map +1 -0
  20. package/dist/breakouts/events.d.ts +8 -0
  21. package/dist/breakouts/events.js +44 -0
  22. package/dist/breakouts/events.js.map +1 -0
  23. package/dist/breakouts/index.d.ts +5 -0
  24. package/dist/breakouts/index.js +1047 -0
  25. package/dist/breakouts/index.js.map +1 -0
  26. package/dist/breakouts/request.d.ts +22 -0
  27. package/dist/breakouts/request.js +77 -0
  28. package/dist/breakouts/request.js.map +1 -0
  29. package/dist/breakouts/utils.d.ts +15 -0
  30. package/dist/breakouts/utils.js +64 -0
  31. package/dist/breakouts/utils.js.map +1 -0
  32. package/dist/common/browser-detection.js +2 -3
  33. package/dist/common/browser-detection.js.map +1 -1
  34. package/dist/common/collection.js +3 -4
  35. package/dist/common/collection.js.map +1 -1
  36. package/dist/common/config.js +1 -2
  37. package/dist/common/config.js.map +1 -1
  38. package/dist/common/errors/captcha-error.js +1 -2
  39. package/dist/common/errors/captcha-error.js.map +1 -1
  40. package/dist/common/errors/intent-to-join.js +1 -2
  41. package/dist/common/errors/intent-to-join.js.map +1 -1
  42. package/dist/common/errors/join-meeting.js +1 -2
  43. package/dist/common/errors/join-meeting.js.map +1 -1
  44. package/dist/common/errors/media.js +1 -2
  45. package/dist/common/errors/media.js.map +1 -1
  46. package/dist/common/errors/no-meeting-info.d.ts +14 -0
  47. package/dist/common/errors/no-meeting-info.js +50 -0
  48. package/dist/common/errors/no-meeting-info.js.map +1 -0
  49. package/dist/common/errors/parameter.js +3 -4
  50. package/dist/common/errors/parameter.js.map +1 -1
  51. package/dist/common/errors/password-error.js +1 -2
  52. package/dist/common/errors/password-error.js.map +1 -1
  53. package/dist/common/errors/permission.js +1 -2
  54. package/dist/common/errors/permission.js.map +1 -1
  55. package/dist/common/errors/{reclaim-host-role-error.js → reclaim-host-role-errors.js} +7 -11
  56. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  57. package/dist/common/errors/reconnection-in-progress.js +1 -2
  58. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  59. package/dist/common/errors/reconnection.js +1 -2
  60. package/dist/common/errors/reconnection.js.map +1 -1
  61. package/dist/common/errors/stats.js +1 -2
  62. package/dist/common/errors/stats.js.map +1 -1
  63. package/dist/common/errors/webex-errors.d.ts +20 -8
  64. package/dist/common/errors/webex-errors.js +48 -28
  65. package/dist/common/errors/webex-errors.js.map +1 -1
  66. package/dist/common/errors/webex-meetings-error.js +1 -2
  67. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  68. package/dist/common/events/events-scope.js +1 -2
  69. package/dist/common/events/events-scope.js.map +1 -1
  70. package/dist/common/events/events.js +1 -2
  71. package/dist/common/events/events.js.map +1 -1
  72. package/dist/common/events/trigger-proxy.js +1 -2
  73. package/dist/common/events/trigger-proxy.js.map +1 -1
  74. package/dist/common/events/util.js +1 -2
  75. package/dist/common/events/util.js.map +1 -1
  76. package/dist/common/logs/logger-config.js +1 -2
  77. package/dist/common/logs/logger-config.js.map +1 -1
  78. package/dist/common/logs/logger-proxy.js +2 -3
  79. package/dist/common/logs/logger-proxy.js.map +1 -1
  80. package/dist/common/logs/request.d.ts +3 -1
  81. package/dist/common/logs/request.js +8 -5
  82. package/dist/common/logs/request.js.map +1 -1
  83. package/dist/common/queue.d.ts +9 -7
  84. package/dist/common/queue.js +22 -9
  85. package/dist/common/queue.js.map +1 -1
  86. package/dist/config.d.ts +6 -7
  87. package/dist/config.js +8 -10
  88. package/dist/config.js.map +1 -1
  89. package/dist/constants.d.ts +217 -97
  90. package/dist/constants.js +416 -441
  91. package/dist/constants.js.map +1 -1
  92. package/dist/controls-options-manager/constants.js +3 -6
  93. package/dist/controls-options-manager/constants.js.map +1 -1
  94. package/dist/controls-options-manager/enums.d.ts +11 -1
  95. package/dist/controls-options-manager/enums.js +15 -6
  96. package/dist/controls-options-manager/enums.js.map +1 -1
  97. package/dist/controls-options-manager/index.d.ts +17 -1
  98. package/dist/controls-options-manager/index.js +127 -38
  99. package/dist/controls-options-manager/index.js.map +1 -1
  100. package/dist/controls-options-manager/types.d.ts +43 -0
  101. package/dist/controls-options-manager/types.js +7 -0
  102. package/dist/controls-options-manager/types.js.map +1 -0
  103. package/dist/controls-options-manager/util.d.ts +1 -7
  104. package/dist/controls-options-manager/util.js +309 -19
  105. package/dist/controls-options-manager/util.js.map +1 -1
  106. package/dist/index.d.ts +6 -3
  107. package/dist/index.js +121 -5
  108. package/dist/index.js.map +1 -1
  109. package/dist/interceptors/index.d.ts +2 -0
  110. package/dist/interceptors/index.js +15 -0
  111. package/dist/interceptors/index.js.map +1 -0
  112. package/dist/interceptors/locusRetry.d.ts +27 -0
  113. package/dist/interceptors/locusRetry.js +94 -0
  114. package/dist/interceptors/locusRetry.js.map +1 -0
  115. package/dist/interpretation/collection.d.ts +5 -0
  116. package/dist/interpretation/collection.js +22 -0
  117. package/dist/interpretation/collection.js.map +1 -0
  118. package/dist/interpretation/index.d.ts +5 -0
  119. package/dist/interpretation/index.js +365 -0
  120. package/dist/interpretation/index.js.map +1 -0
  121. package/dist/interpretation/siLanguage.d.ts +5 -0
  122. package/dist/interpretation/siLanguage.js +24 -0
  123. package/dist/interpretation/siLanguage.js.map +1 -0
  124. package/dist/locus-info/controlsUtils.js +100 -11
  125. package/dist/locus-info/controlsUtils.js.map +1 -1
  126. package/dist/locus-info/embeddedAppsUtils.js +3 -4
  127. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  128. package/dist/locus-info/fullState.js +1 -2
  129. package/dist/locus-info/fullState.js.map +1 -1
  130. package/dist/locus-info/hostUtils.js +1 -2
  131. package/dist/locus-info/hostUtils.js.map +1 -1
  132. package/dist/locus-info/index.d.ts +57 -4
  133. package/dist/locus-info/index.js +425 -84
  134. package/dist/locus-info/index.js.map +1 -1
  135. package/dist/locus-info/infoUtils.js +13 -5
  136. package/dist/locus-info/infoUtils.js.map +1 -1
  137. package/dist/locus-info/mediaSharesUtils.js +58 -3
  138. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  139. package/dist/locus-info/parser.d.ts +66 -6
  140. package/dist/locus-info/parser.js +253 -80
  141. package/dist/locus-info/parser.js.map +1 -1
  142. package/dist/locus-info/selfUtils.js +97 -13
  143. package/dist/locus-info/selfUtils.js.map +1 -1
  144. package/dist/media/index.d.ts +2 -0
  145. package/dist/media/index.js +107 -319
  146. package/dist/media/index.js.map +1 -1
  147. package/dist/media/properties.d.ts +38 -53
  148. package/dist/media/properties.js +96 -153
  149. package/dist/media/properties.js.map +1 -1
  150. package/dist/media/util.js +1 -22
  151. package/dist/media/util.js.map +1 -1
  152. package/dist/mediaQualityMetrics/config.d.ts +234 -230
  153. package/dist/mediaQualityMetrics/config.js +302 -498
  154. package/dist/mediaQualityMetrics/config.js.map +1 -1
  155. package/dist/meeting/in-meeting-actions.d.ts +88 -0
  156. package/dist/meeting/in-meeting-actions.js +94 -3
  157. package/dist/meeting/in-meeting-actions.js.map +1 -1
  158. package/dist/meeting/index.d.ts +591 -494
  159. package/dist/meeting/index.js +4732 -2990
  160. package/dist/meeting/index.js.map +1 -1
  161. package/dist/meeting/locusMediaRequest.d.ts +74 -0
  162. package/dist/meeting/locusMediaRequest.js +291 -0
  163. package/dist/meeting/locusMediaRequest.js.map +1 -0
  164. package/dist/meeting/muteState.d.ts +93 -25
  165. package/dist/meeting/muteState.js +224 -133
  166. package/dist/meeting/muteState.js.map +1 -1
  167. package/dist/meeting/request.d.ts +82 -47
  168. package/dist/meeting/request.js +297 -199
  169. package/dist/meeting/request.js.map +1 -1
  170. package/dist/meeting/request.type.d.ts +11 -0
  171. package/dist/meeting/request.type.js +7 -0
  172. package/dist/meeting/request.type.js.map +1 -0
  173. package/dist/meeting/state.js +1 -2
  174. package/dist/meeting/state.js.map +1 -1
  175. package/dist/meeting/util.d.ts +102 -1
  176. package/dist/meeting/util.js +605 -435
  177. package/dist/meeting/util.js.map +1 -1
  178. package/dist/meeting-info/collection.js +3 -4
  179. package/dist/meeting-info/collection.js.map +1 -1
  180. package/dist/meeting-info/index.d.ts +13 -1
  181. package/dist/meeting-info/index.js +74 -7
  182. package/dist/meeting-info/index.js.map +1 -1
  183. package/dist/meeting-info/meeting-info-v2.d.ts +31 -1
  184. package/dist/meeting-info/meeting-info-v2.js +200 -63
  185. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  186. package/dist/meeting-info/request.js +1 -2
  187. package/dist/meeting-info/request.js.map +1 -1
  188. package/dist/meeting-info/util.js +2 -3
  189. package/dist/meeting-info/util.js.map +1 -1
  190. package/dist/meeting-info/utilv2.js +39 -41
  191. package/dist/meeting-info/utilv2.js.map +1 -1
  192. package/dist/meetings/collection.d.ts +17 -0
  193. package/dist/meetings/collection.js +42 -4
  194. package/dist/meetings/collection.js.map +1 -1
  195. package/dist/meetings/index.d.ts +93 -21
  196. package/dist/meetings/index.js +490 -127
  197. package/dist/meetings/index.js.map +1 -1
  198. package/dist/meetings/meetings.types.d.ts +4 -0
  199. package/dist/meetings/meetings.types.js +7 -0
  200. package/dist/meetings/meetings.types.js.map +1 -0
  201. package/dist/meetings/request.js +4 -3
  202. package/dist/meetings/request.js.map +1 -1
  203. package/dist/meetings/util.js +107 -6
  204. package/dist/meetings/util.js.map +1 -1
  205. package/dist/member/index.d.ts +13 -1
  206. package/dist/member/index.js +45 -2
  207. package/dist/member/index.js.map +1 -1
  208. package/dist/member/member.types.js +3 -4
  209. package/dist/member/member.types.js.map +1 -1
  210. package/dist/member/types.d.ts +32 -0
  211. package/dist/member/types.js +23 -0
  212. package/dist/member/types.js.map +1 -0
  213. package/dist/member/util.js +120 -29
  214. package/dist/member/util.js.map +1 -1
  215. package/dist/members/collection.d.ts +5 -0
  216. package/dist/members/collection.js +11 -2
  217. package/dist/members/collection.js.map +1 -1
  218. package/dist/members/index.d.ts +56 -11
  219. package/dist/members/index.js +174 -47
  220. package/dist/members/index.js.map +1 -1
  221. package/dist/members/request.d.ts +67 -11
  222. package/dist/members/request.js +102 -54
  223. package/dist/members/request.js.map +1 -1
  224. package/dist/members/types.js +3 -4
  225. package/dist/members/types.js.map +1 -1
  226. package/dist/members/util.d.ts +214 -1
  227. package/dist/members/util.js +327 -284
  228. package/dist/members/util.js.map +1 -1
  229. package/dist/metrics/constants.d.ts +15 -6
  230. package/dist/metrics/constants.js +17 -9
  231. package/dist/metrics/constants.js.map +1 -1
  232. package/dist/metrics/index.d.ts +4 -111
  233. package/dist/metrics/index.js +4 -452
  234. package/dist/metrics/index.js.map +1 -1
  235. package/dist/multistream/mediaRequestManager.d.ts +118 -0
  236. package/dist/multistream/mediaRequestManager.js +344 -0
  237. package/dist/multistream/mediaRequestManager.js.map +1 -0
  238. package/dist/multistream/receiveSlot.d.ts +68 -0
  239. package/dist/multistream/receiveSlot.js +200 -0
  240. package/dist/multistream/receiveSlot.js.map +1 -0
  241. package/dist/multistream/receiveSlotManager.d.ts +56 -0
  242. package/dist/multistream/receiveSlotManager.js +174 -0
  243. package/dist/multistream/receiveSlotManager.js.map +1 -0
  244. package/dist/multistream/remoteMedia.d.ts +72 -0
  245. package/dist/multistream/remoteMedia.js +268 -0
  246. package/dist/multistream/remoteMedia.js.map +1 -0
  247. package/dist/multistream/remoteMediaGroup.d.ts +47 -0
  248. package/dist/multistream/remoteMediaGroup.js +267 -0
  249. package/dist/multistream/remoteMediaGroup.js.map +1 -0
  250. package/dist/multistream/remoteMediaManager.d.ts +285 -0
  251. package/dist/multistream/remoteMediaManager.js +1211 -0
  252. package/dist/multistream/remoteMediaManager.js.map +1 -0
  253. package/dist/multistream/sendSlotManager.d.ts +61 -0
  254. package/dist/multistream/sendSlotManager.js +236 -0
  255. package/dist/multistream/sendSlotManager.js.map +1 -0
  256. package/dist/networkQualityMonitor/index.js +5 -4
  257. package/dist/networkQualityMonitor/index.js.map +1 -1
  258. package/dist/personal-meeting-room/index.js +2 -3
  259. package/dist/personal-meeting-room/index.js.map +1 -1
  260. package/dist/personal-meeting-room/request.js +2 -3
  261. package/dist/personal-meeting-room/request.js.map +1 -1
  262. package/dist/personal-meeting-room/util.js +1 -2
  263. package/dist/personal-meeting-room/util.js.map +1 -1
  264. package/dist/reachability/clusterReachability.d.ts +109 -0
  265. package/dist/reachability/clusterReachability.js +357 -0
  266. package/dist/reachability/clusterReachability.js.map +1 -0
  267. package/dist/reachability/index.d.ts +61 -95
  268. package/dist/reachability/index.js +300 -393
  269. package/dist/reachability/index.js.map +1 -1
  270. package/dist/reachability/request.d.ts +7 -3
  271. package/dist/reachability/request.js +18 -10
  272. package/dist/reachability/request.js.map +1 -1
  273. package/dist/reachability/util.d.ts +8 -0
  274. package/dist/reachability/util.js +29 -0
  275. package/dist/reachability/util.js.map +1 -0
  276. package/dist/reactions/constants.d.ts +3 -0
  277. package/dist/reactions/constants.js +12 -0
  278. package/dist/reactions/constants.js.map +1 -0
  279. package/dist/reactions/reactions.d.ts +2 -2
  280. package/dist/reactions/reactions.js +4 -6
  281. package/dist/reactions/reactions.js.map +1 -1
  282. package/dist/reactions/reactions.type.d.ts +23 -3
  283. package/dist/reactions/reactions.type.js +21 -23
  284. package/dist/reactions/reactions.type.js.map +1 -1
  285. package/dist/reconnection-manager/index.d.ts +32 -8
  286. package/dist/reconnection-manager/index.js +282 -231
  287. package/dist/reconnection-manager/index.js.map +1 -1
  288. package/dist/recording-controller/enums.js +4 -5
  289. package/dist/recording-controller/enums.js.map +1 -1
  290. package/dist/recording-controller/index.d.ts +15 -1
  291. package/dist/recording-controller/index.js +57 -46
  292. package/dist/recording-controller/index.js.map +1 -1
  293. package/dist/recording-controller/util.d.ts +5 -4
  294. package/dist/recording-controller/util.js +10 -10
  295. package/dist/recording-controller/util.js.map +1 -1
  296. package/dist/roap/index.d.ts +9 -47
  297. package/dist/roap/index.js +101 -235
  298. package/dist/roap/index.js.map +1 -1
  299. package/dist/roap/request.d.ts +18 -12
  300. package/dist/roap/request.js +126 -180
  301. package/dist/roap/request.js.map +1 -1
  302. package/dist/roap/turnDiscovery.d.ts +27 -16
  303. package/dist/roap/turnDiscovery.js +115 -105
  304. package/dist/roap/turnDiscovery.js.map +1 -1
  305. package/dist/rtcMetrics/constants.d.ts +4 -0
  306. package/dist/rtcMetrics/constants.js +11 -0
  307. package/dist/rtcMetrics/constants.js.map +1 -0
  308. package/dist/rtcMetrics/index.d.ts +54 -0
  309. package/dist/rtcMetrics/index.js +140 -0
  310. package/dist/rtcMetrics/index.js.map +1 -0
  311. package/dist/statsAnalyzer/global.d.ts +1 -83
  312. package/dist/statsAnalyzer/global.js +2 -85
  313. package/dist/statsAnalyzer/global.js.map +1 -1
  314. package/dist/statsAnalyzer/index.d.ts +50 -30
  315. package/dist/statsAnalyzer/index.js +435 -510
  316. package/dist/statsAnalyzer/index.js.map +1 -1
  317. package/dist/statsAnalyzer/mqaUtil.d.ts +8 -6
  318. package/dist/statsAnalyzer/mqaUtil.js +120 -83
  319. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  320. package/dist/transcription/index.js +1 -2
  321. package/dist/transcription/index.js.map +1 -1
  322. package/dist/webinar/collection.d.ts +16 -0
  323. package/dist/webinar/collection.js +43 -0
  324. package/dist/webinar/collection.js.map +1 -0
  325. package/dist/webinar/index.d.ts +5 -0
  326. package/dist/webinar/index.js +68 -0
  327. package/dist/webinar/index.js.map +1 -0
  328. package/package.json +38 -26
  329. package/src/annotation/annotation.types.ts +50 -0
  330. package/src/annotation/constants.ts +36 -0
  331. package/src/annotation/index.ts +328 -0
  332. package/src/breakouts/README.md +220 -0
  333. package/src/breakouts/breakout.ts +188 -0
  334. package/src/breakouts/collection.ts +19 -0
  335. package/src/breakouts/edit-lock-error.ts +25 -0
  336. package/src/breakouts/events.ts +56 -0
  337. package/src/breakouts/index.ts +925 -0
  338. package/src/breakouts/request.ts +55 -0
  339. package/src/breakouts/utils.ts +57 -0
  340. package/src/common/errors/no-meeting-info.ts +24 -0
  341. package/src/common/errors/webex-errors.ts +36 -12
  342. package/src/common/logs/logger-proxy.ts +1 -1
  343. package/src/common/logs/request.ts +5 -1
  344. package/src/common/queue.ts +22 -8
  345. package/src/config.ts +6 -7
  346. package/src/constants.ts +244 -97
  347. package/src/controls-options-manager/enums.ts +12 -0
  348. package/src/controls-options-manager/index.ts +116 -21
  349. package/src/controls-options-manager/types.ts +59 -0
  350. package/src/controls-options-manager/util.ts +294 -14
  351. package/src/index.ts +44 -0
  352. package/src/interceptors/index.ts +3 -0
  353. package/src/interceptors/locusRetry.ts +67 -0
  354. package/src/interpretation/README.md +60 -0
  355. package/src/interpretation/collection.ts +19 -0
  356. package/src/interpretation/index.ts +332 -0
  357. package/src/interpretation/siLanguage.ts +18 -0
  358. package/src/locus-info/controlsUtils.ts +110 -0
  359. package/src/locus-info/index.ts +449 -61
  360. package/src/locus-info/infoUtils.ts +14 -2
  361. package/src/locus-info/mediaSharesUtils.ts +64 -0
  362. package/src/locus-info/parser.ts +258 -47
  363. package/src/locus-info/selfUtils.ts +85 -2
  364. package/src/media/index.ts +153 -370
  365. package/src/media/properties.ts +106 -136
  366. package/src/media/util.ts +0 -21
  367. package/src/mediaQualityMetrics/config.ts +244 -377
  368. package/src/meeting/in-meeting-actions.ts +176 -0
  369. package/src/meeting/index.ts +3944 -2489
  370. package/src/meeting/locusMediaRequest.ts +313 -0
  371. package/src/meeting/muteState.ts +224 -138
  372. package/src/meeting/request.ts +207 -127
  373. package/src/meeting/request.type.ts +13 -0
  374. package/src/meeting/util.ts +590 -423
  375. package/src/meeting-info/index.ts +81 -8
  376. package/src/meeting-info/meeting-info-v2.ts +163 -13
  377. package/src/meeting-info/util.ts +1 -1
  378. package/src/meeting-info/utilv2.ts +28 -28
  379. package/src/meetings/collection.ts +33 -0
  380. package/src/meetings/index.ts +487 -126
  381. package/src/meetings/meetings.types.ts +12 -0
  382. package/src/meetings/request.ts +2 -0
  383. package/src/meetings/util.ts +116 -5
  384. package/src/member/index.ts +43 -1
  385. package/src/member/types.ts +38 -0
  386. package/src/member/util.ts +125 -28
  387. package/src/members/collection.ts +8 -0
  388. package/src/members/index.ts +187 -52
  389. package/src/members/request.ts +87 -27
  390. package/src/members/util.ts +332 -291
  391. package/src/metrics/constants.ts +15 -6
  392. package/src/metrics/index.ts +1 -471
  393. package/src/multistream/mediaRequestManager.ts +440 -0
  394. package/src/multistream/receiveSlot.ts +184 -0
  395. package/src/multistream/receiveSlotManager.ts +166 -0
  396. package/src/multistream/remoteMedia.ts +254 -0
  397. package/src/multistream/remoteMediaGroup.ts +284 -0
  398. package/src/multistream/remoteMediaManager.ts +1145 -0
  399. package/src/multistream/sendSlotManager.ts +170 -0
  400. package/src/networkQualityMonitor/index.ts +6 -6
  401. package/src/reachability/clusterReachability.ts +320 -0
  402. package/src/reachability/index.ts +243 -347
  403. package/src/reachability/request.ts +17 -8
  404. package/src/reachability/util.ts +24 -0
  405. package/src/reactions/constants.ts +4 -0
  406. package/src/reactions/reactions.ts +4 -4
  407. package/src/reactions/reactions.type.ts +30 -4
  408. package/src/reconnection-manager/index.ts +168 -156
  409. package/src/recording-controller/index.ts +20 -3
  410. package/src/recording-controller/util.ts +26 -9
  411. package/src/roap/index.ts +98 -241
  412. package/src/roap/request.ts +74 -148
  413. package/src/roap/turnDiscovery.ts +62 -56
  414. package/src/rtcMetrics/constants.ts +3 -0
  415. package/src/rtcMetrics/index.ts +124 -0
  416. package/src/statsAnalyzer/global.ts +1 -84
  417. package/src/statsAnalyzer/index.ts +477 -643
  418. package/src/statsAnalyzer/mqaUtil.ts +115 -114
  419. package/src/webinar/collection.ts +31 -0
  420. package/src/webinar/index.ts +62 -0
  421. package/test/integration/spec/converged-space-meetings.js +233 -0
  422. package/test/integration/spec/journey.js +320 -264
  423. package/test/integration/spec/space-meeting.js +77 -4
  424. package/test/unit/spec/annotation/index.ts +418 -0
  425. package/test/unit/spec/breakouts/breakout.ts +237 -0
  426. package/test/unit/spec/breakouts/collection.ts +15 -0
  427. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  428. package/test/unit/spec/breakouts/events.ts +89 -0
  429. package/test/unit/spec/breakouts/index.ts +1790 -0
  430. package/test/unit/spec/breakouts/request.ts +104 -0
  431. package/test/unit/spec/breakouts/utils.js +72 -0
  432. package/test/unit/spec/common/queue.js +31 -2
  433. package/test/unit/spec/controls-options-manager/index.js +163 -0
  434. package/test/unit/spec/controls-options-manager/util.js +576 -60
  435. package/test/unit/spec/fixture/locus.js +1 -0
  436. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  437. package/test/unit/spec/interpretation/collection.ts +15 -0
  438. package/test/unit/spec/interpretation/index.ts +589 -0
  439. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  440. package/test/unit/spec/locus-info/controlsUtils.js +323 -30
  441. package/test/unit/spec/locus-info/index.js +1390 -16
  442. package/test/unit/spec/locus-info/infoUtils.js +54 -16
  443. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  444. package/test/unit/spec/locus-info/lib/selfConstant.js +48 -0
  445. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  446. package/test/unit/spec/locus-info/parser.js +116 -35
  447. package/test/unit/spec/locus-info/selfUtils.js +275 -0
  448. package/test/unit/spec/media/index.ts +290 -0
  449. package/test/unit/spec/media/properties.ts +75 -84
  450. package/test/unit/spec/meeting/in-meeting-actions.ts +86 -0
  451. package/test/unit/spec/meeting/index.js +8187 -2769
  452. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  453. package/test/unit/spec/meeting/muteState.js +409 -213
  454. package/test/unit/spec/meeting/request.js +512 -42
  455. package/test/unit/spec/meeting/utils.js +741 -24
  456. package/test/unit/spec/meeting-info/index.js +300 -0
  457. package/test/unit/spec/meeting-info/meetinginfov2.js +527 -5
  458. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  459. package/test/unit/spec/meetings/collection.js +26 -0
  460. package/test/unit/spec/meetings/index.js +1313 -243
  461. package/test/unit/spec/meetings/utils.js +202 -2
  462. package/test/unit/spec/member/index.js +32 -9
  463. package/test/unit/spec/member/util.js +499 -61
  464. package/test/unit/spec/members/index.js +394 -5
  465. package/test/unit/spec/members/request.js +206 -27
  466. package/test/unit/spec/members/utils.js +173 -38
  467. package/test/unit/spec/metrics/index.js +1 -50
  468. package/test/unit/spec/multistream/mediaRequestManager.ts +1418 -0
  469. package/test/unit/spec/multistream/receiveSlot.ts +163 -0
  470. package/test/unit/spec/multistream/receiveSlotManager.ts +203 -0
  471. package/test/unit/spec/multistream/remoteMedia.ts +255 -0
  472. package/test/unit/spec/multistream/remoteMediaGroup.ts +662 -0
  473. package/test/unit/spec/multistream/remoteMediaManager.ts +1924 -0
  474. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  475. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  476. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  477. package/test/unit/spec/reachability/index.ts +531 -24
  478. package/test/unit/spec/reachability/request.js +68 -0
  479. package/test/unit/spec/reachability/util.ts +40 -0
  480. package/test/unit/spec/reconnection-manager/index.js +162 -24
  481. package/test/unit/spec/recording-controller/index.js +293 -218
  482. package/test/unit/spec/recording-controller/util.js +223 -96
  483. package/test/unit/spec/roap/index.ts +200 -76
  484. package/test/unit/spec/roap/request.ts +255 -0
  485. package/test/unit/spec/roap/turnDiscovery.ts +86 -48
  486. package/test/unit/spec/rtcMetrics/index.ts +93 -0
  487. package/test/unit/spec/stats-analyzer/index.js +261 -167
  488. package/test/unit/spec/webinar/collection.ts +13 -0
  489. package/test/unit/spec/webinar/index.ts +60 -0
  490. package/test/utils/constants.js +9 -0
  491. package/test/utils/integrationTestUtils.js +46 -0
  492. package/test/utils/testUtils.js +0 -45
  493. package/test/utils/webex-config.js +4 -0
  494. package/test/utils/webex-test-users.js +7 -3
  495. package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
  496. package/dist/meeting/effectsState.d.ts +0 -42
  497. package/dist/meeting/effectsState.js +0 -260
  498. package/dist/meeting/effectsState.js.map +0 -1
  499. package/dist/metrics/config.d.ts +0 -169
  500. package/dist/metrics/config.js +0 -289
  501. package/dist/metrics/config.js.map +0 -1
  502. package/dist/peer-connection-manager/index.d.ts +0 -6
  503. package/dist/peer-connection-manager/index.js +0 -671
  504. package/dist/peer-connection-manager/index.js.map +0 -1
  505. package/dist/peer-connection-manager/util.d.ts +0 -6
  506. package/dist/peer-connection-manager/util.js +0 -110
  507. package/dist/peer-connection-manager/util.js.map +0 -1
  508. package/dist/roap/collection.d.ts +0 -10
  509. package/dist/roap/collection.js +0 -63
  510. package/dist/roap/collection.js.map +0 -1
  511. package/dist/roap/handler.d.ts +0 -47
  512. package/dist/roap/handler.js +0 -279
  513. package/dist/roap/handler.js.map +0 -1
  514. package/dist/roap/state.d.ts +0 -9
  515. package/dist/roap/state.js +0 -127
  516. package/dist/roap/state.js.map +0 -1
  517. package/dist/roap/util.d.ts +0 -2
  518. package/dist/roap/util.js +0 -76
  519. package/dist/roap/util.js.map +0 -1
  520. package/src/index.js +0 -15
  521. package/src/meeting/effectsState.ts +0 -209
  522. package/src/metrics/config.ts +0 -485
  523. package/src/peer-connection-manager/index.ts +0 -847
  524. package/src/peer-connection-manager/util.ts +0 -119
  525. package/src/roap/collection.ts +0 -62
  526. package/src/roap/handler.ts +0 -294
  527. package/src/roap/state.ts +0 -156
  528. package/src/roap/util.ts +0 -100
  529. package/test/unit/spec/meeting/effectsState.js +0 -281
  530. package/test/unit/spec/peerconnection-manager/index.js +0 -218
  531. package/test/unit/spec/peerconnection-manager/utils.js +0 -49
  532. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -388
  533. package/test/unit/spec/roap/util.js +0 -30
  534. /package/dist/common/errors/{reclaim-host-role-error.d.ts → reclaim-host-role-errors.d.ts} +0 -0
  535. /package/src/common/errors/{reclaim-host-role-error.ts → reclaim-host-role-errors.ts} +0 -0
@@ -5,8 +5,9 @@ import Meeting from '../meeting';
5
5
  * @typedef {Object} RoapOptions
6
6
  * @property {String} sdp
7
7
  * @property {Meeting} meeting
8
- * @property {Number} roapSeq
9
- * @property {Boolean} reconnect
8
+ * @property {Number} seq
9
+ * @property {Number} tieBreaker
10
+ * @property {Boolean} reconnect
10
11
  */
11
12
  /**
12
13
  * @typedef {Object} SeqOptions
@@ -32,76 +33,36 @@ export default class Roap extends StatelessWebexPlugin {
32
33
  * @param {Object} options
33
34
  */
34
35
  constructor(attrs: any, options: any);
35
- /**
36
- * Starts listening to mercury events for Roap messages
37
- * @param {object} data event object
38
- * @returns {Promise}
39
- * @private
40
- * @memberof Roap
41
- */
42
- private roapEvent;
43
- /**
44
- *
45
- * @param {String} correlationId correlation id of a meeting
46
- * @param {Number} seq ROAP sequence number
47
- * @returns {Promise}
48
- * @private
49
- * @memberof Roap
50
- */
51
- private stop;
52
36
  /**
53
37
  *
54
38
  * @param {SeqOptions} options
55
39
  * @returns {null}
56
- * @private
57
40
  * @memberof Roap
58
41
  */
59
- private sendRoapOK;
42
+ sendRoapOK(options: any): Promise<any>;
60
43
  /**
61
44
  * Sends a ROAP answer...
62
45
  * @param {SeqOptions} options
63
46
  * @param {Boolean} options.audioMuted
64
47
  * @param {Boolean} options.videoMuted
65
48
  * @returns {Promise}
66
- * @private
67
49
  * @memberof Roap
68
50
  */
69
- private sendRoapAnswer;
51
+ sendRoapAnswer(options: any): any;
70
52
  /**
71
53
  * Sends a ROAP error...
72
- * @param {Object} session
73
- * @param {Object} locus
74
- * @param {String} errorType
54
+ * @param {Object} options
75
55
  * @returns {Promise}
76
- * @private
77
56
  * @memberof Roap
78
57
  */
79
- private sendRoapError;
58
+ sendRoapError(options: any): any;
80
59
  /**
81
60
  * sends a roap media request
82
61
  * @param {RoapOptions} options
83
62
  * @returns {Promise}
84
- * @private
85
63
  * @memberof Roap
86
64
  */
87
65
  sendRoapMediaRequest(options: any): any;
88
- /**
89
- * sends a roap media request
90
- * @param {RoapOptions} options
91
- * @returns {Promise}
92
- * @private
93
- * @memberof Roap
94
- */
95
- sendRoapCallRequest: (options: any) => any;
96
- /**
97
- * Called when the roap sequence is finished (completed successfully or failed)
98
- * @param {String} correlationId id of the meeting affected
99
- * @param {String} sequenceId the id of the finished sequence
100
- * @returns {undefined}
101
- * @private
102
- * @memberof Roap
103
- */
104
- private roapFinished;
105
66
  /**
106
67
  * Performs a TURN server discovery procedure, which involves exchanging
107
68
  * some roap messages with the server. This exchange has to be done before
@@ -110,7 +71,8 @@ export default class Roap extends StatelessWebexPlugin {
110
71
  * @param {Meeting} meeting
111
72
  * @param {Boolean} isReconnecting should be set to true if this is a new
112
73
  * media connection just after a reconnection
74
+ * @param {Boolean} [isForced]
113
75
  * @returns {Promise}
114
76
  */
115
- doTurnDiscovery(meeting: Meeting, isReconnecting: boolean): any;
77
+ doTurnDiscovery(meeting: Meeting, isReconnecting: boolean, isForced?: boolean): any;
116
78
  }
@@ -7,9 +7,6 @@ _Object$defineProperty(exports, "__esModule", {
7
7
  value: true
8
8
  });
9
9
  exports.default = void 0;
10
- var _isNan = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/number/is-nan"));
11
- var _parseFloat2 = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/parse-float"));
12
- var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
13
10
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
14
11
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
15
12
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
@@ -21,20 +18,21 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/he
21
18
  var _webexCore = require("@webex/webex-core");
22
19
  var _constants = require("../constants");
23
20
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
24
- var _util = _interopRequireDefault(require("../meeting/util"));
25
- var _handler = _interopRequireDefault(require("./handler"));
26
21
  var _request = _interopRequireDefault(require("./request"));
27
- var _collection = _interopRequireDefault(require("./collection"));
28
22
  var _turnDiscovery = _interopRequireDefault(require("./turnDiscovery"));
23
+ var _util = _interopRequireDefault(require("../meeting/util"));
24
+ var _metrics = _interopRequireDefault(require("../metrics"));
25
+ var _constants2 = _interopRequireDefault(require("../metrics/constants"));
29
26
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
30
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
27
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } // @ts-ignore
31
28
  /**
32
29
  * Roap options
33
30
  * @typedef {Object} RoapOptions
34
31
  * @property {String} sdp
35
32
  * @property {Meeting} meeting
36
- * @property {Number} roapSeq
37
- * @property {Boolean} reconnect
33
+ * @property {Number} seq
34
+ * @property {Number} tieBreaker
35
+ * @property {Boolean} reconnect
38
36
  */
39
37
  /**
40
38
  * @typedef {Object} SeqOptions
@@ -47,7 +45,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_R
47
45
  * @export
48
46
  * @private
49
47
  */
50
- var Roap = /*#__PURE__*/function (_StatelessWebexPlugin) {
48
+ var Roap = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
51
49
  (0, _inherits2.default)(Roap, _StatelessWebexPlugin);
52
50
  var _super = _createSuper(Roap);
53
51
  /**
@@ -55,10 +53,10 @@ var Roap = /*#__PURE__*/function (_StatelessWebexPlugin) {
55
53
  * @param {Object} attrs
56
54
  * @param {Object} options
57
55
  */
58
- function Roap(attrs, _options) {
56
+ function Roap(attrs, options) {
59
57
  var _this;
60
58
  (0, _classCallCheck2.default)(this, Roap);
61
- _this = _super.call(this, {}, _options);
59
+ _this = _super.call(this, {}, options);
62
60
  /**
63
61
  * @instance
64
62
  * @type {Object}
@@ -71,59 +69,6 @@ var Roap = /*#__PURE__*/function (_StatelessWebexPlugin) {
71
69
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "roapHandler", void 0);
72
70
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "roapRequest", void 0);
73
71
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "turnDiscovery", void 0);
74
- /**
75
- * sends a roap media request
76
- * @param {RoapOptions} options
77
- * @returns {Promise}
78
- * @private
79
- * @memberof Roap
80
- */
81
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "sendRoapCallRequest", function (options) {
82
- var _meeting$audio, _meeting$video;
83
- var meeting = options.meeting;
84
- var roapMessage = {
85
- messageType: _constants.ROAP.ROAP_TYPES.OFFER,
86
- sdps: [options.sdp],
87
- version: _constants.ROAP.ROAP_VERSION,
88
- seq: typeof options.roapSeq !== 'number' && (0, _isNan.default)((0, _parseFloat2.default)(options.roapSeq)) ? 0 : options.roapSeq + 1,
89
- tieBreaker: 4294967294 // Math.floor(Math.random() * (2 ** 32) - 1) // TODO: Handle the roap conflict scenario
90
- };
91
-
92
- _this.roapHandler.submit({
93
- type: _constants.ROAP.SEND_ROAP_MSG,
94
- msg: roapMessage,
95
- correlationId: meeting.correlationId
96
- });
97
- var roapBody = {
98
- localMedias: [{
99
- localSdp: (0, _stringify.default)(_this.roapRequest.attachRechabilityData({
100
- roapMessage: roapMessage,
101
- // eslint-disable-next-line no-warning-comments
102
- // TODO: check whats the need for video and audiomute
103
- audioMuted: (_meeting$audio = meeting.audio) === null || _meeting$audio === void 0 ? void 0 : _meeting$audio.isLocallyMuted(),
104
- videoMuted: (_meeting$video = meeting.video) === null || _meeting$video === void 0 ? void 0 : _meeting$video.isLocallyMuted()
105
- }))
106
- // mediaId: meeting.mediaId
107
- }]
108
- };
109
-
110
- return _util.default.joinMeetingOptions(meeting, {
111
- roapMessage: roapBody
112
- }).then(function (locus) {
113
- _this.roapHandler.submit({
114
- type: _constants.ROAP.SEND_ROAP_MSG_SUCCESS,
115
- seq: roapMessage.seq,
116
- correlationId: meeting.correlationId
117
- });
118
- meeting.setRoapSeq(roapMessage.seq);
119
-
120
- // eslint-disable-next-line no-warning-comments
121
- // TODO: we need to attach peerconenction to locus not sure if we need to pass everything here
122
- return locus;
123
- // eslint-disable-next-line no-warning-comments
124
- // TODO: check where to update the sequence number
125
- });
126
- });
127
72
  _this.attrs = attrs;
128
73
  /**
129
74
  * @instance
@@ -131,15 +76,7 @@ var Roap = /*#__PURE__*/function (_StatelessWebexPlugin) {
131
76
  * @private
132
77
  * @memberof Roap
133
78
  */
134
- _this.options = _options;
135
- /**
136
- * The Roap Process State Handler
137
- * @instance
138
- * @type {RoapHandler}
139
- * @private
140
- * @memberof Roap
141
- */
142
- _this.roapHandler = new _handler.default(_this.attrs, _this.options, _this.sendRoapOK.bind((0, _assertThisInitialized2.default)(_this)), _this.sendRoapAnswer.bind((0, _assertThisInitialized2.default)(_this)), _this.roapFinished.bind((0, _assertThisInitialized2.default)(_this)));
79
+ _this.options = options;
143
80
  /**
144
81
  * The Roap Request Server Proxy Object
145
82
  * @instance
@@ -148,77 +85,23 @@ var Roap = /*#__PURE__*/function (_StatelessWebexPlugin) {
148
85
  * @memberof Roap
149
86
  */
150
87
  // @ts-ignore
151
- _this.roapRequest = new _request.default({}, _options);
152
- /**
153
- * The last roap offer sent to server and acked
154
- * @instance
155
- * @type {Object}
156
- * @private
157
- * @memberof Roap
158
- */
159
- _this.lastRoapOffer = {};
88
+ _this.roapRequest = new _request.default({}, options);
160
89
  _this.turnDiscovery = new _turnDiscovery.default(_this.roapRequest);
161
90
  return _this;
162
91
  }
163
92
 
164
93
  /**
165
- * Starts listening to mercury events for Roap messages
166
- * @param {object} data event object
167
- * @returns {Promise}
168
- * @private
94
+ *
95
+ * @param {SeqOptions} options
96
+ * @returns {null}
169
97
  * @memberof Roap
170
98
  */
171
99
  (0, _createClass2.default)(Roap, [{
172
- key: "roapEvent",
173
- value: function roapEvent(data) {
174
- var msg = data.message;
175
- var correlationId = data.correlationId;
176
- _loggerProxy.default.logger.log("Roap:index#roapEvent --> Received Roap Message [".concat((0, _stringify.default)(msg, null, 2), "]"));
177
- if (msg.messageType === _constants.ROAP.ROAP_TYPES.TURN_DISCOVERY_RESPONSE) {
178
- // turn discovery is not part of normal roap protocol and so we are not handling it
179
- // through the usual roap state machine
180
- this.turnDiscovery.handleTurnDiscoveryResponse(msg);
181
- } else {
182
- this.roapHandler.submit({
183
- type: _constants.ROAP.RECEIVE_ROAP_MSG,
184
- msg: msg,
185
- correlationId: correlationId
186
- });
187
- }
188
- }
189
-
190
- /**
191
- *
192
- * @param {String} correlationId correlation id of a meeting
193
- * @param {Number} seq ROAP sequence number
194
- * @returns {Promise}
195
- * @private
196
- * @memberof Roap
197
- */
198
- }, {
199
- key: "stop",
200
- value: function stop(correlationId, seq) {
201
- this.roapHandler.submit({
202
- type: _constants.ROAP.RECEIVE_CALL_LEAVE,
203
- seq: seq,
204
- correlationId: correlationId
205
- });
206
- return _promise.default.resolve();
207
- }
208
-
209
- /**
210
- *
211
- * @param {SeqOptions} options
212
- * @returns {null}
213
- * @private
214
- * @memberof Roap
215
- */
216
- }, {
217
100
  key: "sendRoapOK",
218
101
  value: function sendRoapOK(options) {
219
102
  var _this2 = this;
220
103
  return _promise.default.resolve().then(function () {
221
- var _meeting$audio2, _meeting$video2;
104
+ var _meeting$audio, _meeting$video;
222
105
  // @ts-ignore
223
106
  var meeting = _this2.webex.meetings.meetingCollection.getByKey('correlationId', options.correlationId);
224
107
  var roapMessage = {
@@ -231,174 +114,157 @@ var Roap = /*#__PURE__*/function (_StatelessWebexPlugin) {
231
114
  roapMessage: roapMessage,
232
115
  locusSelfUrl: meeting.selfUrl,
233
116
  mediaId: options.mediaId,
234
- correlationId: options.correlationId,
235
- audioMuted: (_meeting$audio2 = meeting.audio) === null || _meeting$audio2 === void 0 ? void 0 : _meeting$audio2.isLocallyMuted(),
236
- videoMuted: (_meeting$video2 = meeting.video) === null || _meeting$video2 === void 0 ? void 0 : _meeting$video2.isLocallyMuted(),
237
- meetingId: meeting.id
117
+ audioMuted: (_meeting$audio = meeting.audio) === null || _meeting$audio === void 0 ? void 0 : _meeting$audio.isLocallyMuted(),
118
+ videoMuted: (_meeting$video = meeting.video) === null || _meeting$video === void 0 ? void 0 : _meeting$video.isLocallyMuted(),
119
+ meetingId: meeting.id,
120
+ locusMediaRequest: meeting.locusMediaRequest
238
121
  }).then(function () {
239
- _this2.roapHandler.submit({
240
- type: _constants.ROAP.SEND_ROAP_MSG,
241
- msg: roapMessage,
242
- correlationId: options.correlationId
243
- });
244
122
  _loggerProxy.default.logger.log("Roap:index#sendRoapOK --> ROAP OK sent with seq ".concat(options.seq));
245
- meeting.setRoapSeq(options.seq);
246
123
  });
247
124
  });
248
125
  }
249
126
 
250
- // eslint-disable-next-line no-warning-comments
251
- // TODO: try to merge sendRoapOk and roapAnswer
252
127
  /**
253
128
  * Sends a ROAP answer...
254
129
  * @param {SeqOptions} options
255
130
  * @param {Boolean} options.audioMuted
256
131
  * @param {Boolean} options.videoMuted
257
132
  * @returns {Promise}
258
- * @private
259
133
  * @memberof Roap
260
134
  */
261
135
  }, {
262
136
  key: "sendRoapAnswer",
263
137
  value: function sendRoapAnswer(options) {
264
- var _meeting$audio3,
265
- _meeting$video3,
266
- _this3 = this;
138
+ var _meeting$audio2, _meeting$video2;
267
139
  // @ts-ignore
268
140
  var meeting = this.webex.meetings.meetingCollection.getByKey('correlationId', options.correlationId);
269
141
  var roapMessage = {
270
142
  messageType: _constants.ROAP.ROAP_TYPES.ANSWER,
271
- sdps: options.sdps,
143
+ sdps: [options.sdp],
272
144
  version: _constants.ROAP.ROAP_VERSION,
273
145
  seq: options.seq
274
146
  };
275
- this.roapHandler.submit({
276
- type: _constants.ROAP.SEND_ROAP_MSG,
277
- msg: roapMessage,
278
- correlationId: options.correlationId
279
- });
280
147
  return this.roapRequest.sendRoap({
281
148
  roapMessage: roapMessage,
282
149
  locusSelfUrl: meeting.selfUrl,
283
150
  mediaId: options.mediaId,
284
- correlationId: options.correlationId,
285
- audioMuted: (_meeting$audio3 = meeting.audio) === null || _meeting$audio3 === void 0 ? void 0 : _meeting$audio3.isLocallyMuted(),
286
- videoMuted: (_meeting$video3 = meeting.video) === null || _meeting$video3 === void 0 ? void 0 : _meeting$video3.isLocallyMuted(),
287
- meetingId: meeting.id
288
- }).then(function () {
289
- meeting.setRoapSeq(options.seq);
290
- _this3.roapHandler.submit({
291
- type: _constants.ROAP.SEND_ROAP_MSG_SUCCESS,
292
- seq: roapMessage.seq,
293
- correlationId: meeting.correlationId
294
- });
151
+ meetingId: meeting.id,
152
+ audioMuted: (_meeting$audio2 = meeting.audio) === null || _meeting$audio2 === void 0 ? void 0 : _meeting$audio2.isLocallyMuted(),
153
+ videoMuted: (_meeting$video2 = meeting.video) === null || _meeting$video2 === void 0 ? void 0 : _meeting$video2.isLocallyMuted(),
154
+ locusMediaRequest: meeting.locusMediaRequest
295
155
  });
296
156
  }
297
157
 
298
158
  /**
299
159
  * Sends a ROAP error...
300
- * @param {Object} session
301
- * @param {Object} locus
302
- * @param {String} errorType
160
+ * @param {Object} options
303
161
  * @returns {Promise}
304
- * @private
305
162
  * @memberof Roap
306
163
  */
307
164
  }, {
308
165
  key: "sendRoapError",
309
- value: function sendRoapError(session, locus, errorType) {
310
- var msg = {
166
+ value: function sendRoapError(options) {
167
+ var _meeting$audio3, _meeting$video3;
168
+ // @ts-ignore
169
+ var meeting = this.webex.meetings.meetingCollection.getByKey('correlationId', options.correlationId);
170
+ var roapMessage = {
311
171
  messageType: _constants.ROAP.ROAP_TYPES.ERROR,
312
172
  version: _constants.ROAP.ROAP_VERSION,
313
- errorType: errorType,
314
- seq: session.OFFER.seq
173
+ errorType: options.errorType,
174
+ seq: options.seq
315
175
  };
316
- return this.roapRequest.sendRoap(msg, locus);
176
+ return this.roapRequest.sendRoap({
177
+ roapMessage: roapMessage,
178
+ locusSelfUrl: meeting.selfUrl,
179
+ mediaId: options.mediaId,
180
+ audioMuted: (_meeting$audio3 = meeting.audio) === null || _meeting$audio3 === void 0 ? void 0 : _meeting$audio3.isLocallyMuted(),
181
+ videoMuted: (_meeting$video3 = meeting.video) === null || _meeting$video3 === void 0 ? void 0 : _meeting$video3.isLocallyMuted(),
182
+ meetingId: meeting.id,
183
+ locusMediaRequest: meeting.locusMediaRequest
184
+ }).then(function () {
185
+ _loggerProxy.default.logger.log("Roap:index#sendRoapError --> ROAP ERROR sent with seq ".concat(options.seq));
186
+ });
317
187
  }
318
188
 
319
189
  /**
320
190
  * sends a roap media request
321
191
  * @param {RoapOptions} options
322
192
  * @returns {Promise}
323
- * @private
324
193
  * @memberof Roap
325
194
  */
326
195
  }, {
327
196
  key: "sendRoapMediaRequest",
328
197
  value: function sendRoapMediaRequest(options) {
329
- var _this4 = this;
198
+ var _this3 = this;
330
199
  var meeting = options.meeting,
331
- reconnect = options.reconnect;
200
+ seq = options.seq,
201
+ sdp = options.sdp,
202
+ reconnect = options.reconnect,
203
+ tieBreaker = options.tieBreaker;
332
204
  var roapMessage = {
333
205
  messageType: _constants.ROAP.ROAP_TYPES.OFFER,
334
- sdps: [options.sdp],
335
- // sdps: [options.sdp],
206
+ sdps: [sdp],
336
207
  version: _constants.ROAP.ROAP_VERSION,
337
- seq: typeof options.roapSeq !== 'number' && (0, _isNan.default)((0, _parseFloat2.default)(options.roapSeq)) ? 0 : options.roapSeq + 1,
338
- tieBreaker: 4294967294 // Math.floor(Math.random() * (2 ** 32) - 1) // TODO: Handle the roap conflict scenario
208
+ seq: seq,
209
+ tieBreaker: tieBreaker,
210
+ headers: ['includeAnswerInHttpResponse', 'noOkInTransaction']
339
211
  };
340
212
 
341
- this.roapHandler.submit({
342
- type: _constants.ROAP.SEND_ROAP_MSG,
343
- msg: roapMessage,
344
- correlationId: meeting.correlationId
345
- });
346
-
347
213
  // When reconnecting, it's important that the first roap message being sent out has empty media id.
348
214
  // Normally this is the roap offer, but when TURN discovery is enabled,
349
215
  // then this is the TURN discovery request message
350
216
  return this.turnDiscovery.isSkipped(meeting).then(function (isTurnDiscoverySkipped) {
351
- var _meeting$audio4, _meeting$video4;
352
217
  var sendEmptyMediaId = reconnect && isTurnDiscoverySkipped;
353
- return _this4.roapRequest.sendRoap({
218
+ return _this3.roapRequest.sendRoap({
354
219
  roapMessage: roapMessage,
355
- correlationId: meeting.correlationId,
356
220
  locusSelfUrl: meeting.selfUrl,
357
221
  mediaId: sendEmptyMediaId ? '' : meeting.mediaId,
358
- audioMuted: (_meeting$audio4 = meeting.audio) === null || _meeting$audio4 === void 0 ? void 0 : _meeting$audio4.isLocallyMuted(),
359
- videoMuted: (_meeting$video4 = meeting.video) === null || _meeting$video4 === void 0 ? void 0 : _meeting$video4.isLocallyMuted(),
360
- meetingId: meeting.id
361
- });
362
- }).then(function (_ref) {
363
- var locus = _ref.locus,
364
- mediaConnections = _ref.mediaConnections;
365
- _this4.roapHandler.submit({
366
- type: _constants.ROAP.SEND_ROAP_MSG_SUCCESS,
367
- seq: roapMessage.seq,
368
- correlationId: meeting.correlationId
222
+ meetingId: meeting.id,
223
+ preferTranscoding: !meeting.isMultistream,
224
+ locusMediaRequest: meeting.locusMediaRequest,
225
+ ipVersion: _util.default.getIpVersion(meeting.webex)
226
+ }).then(function (_ref) {
227
+ var _mediaConnections$;
228
+ var locus = _ref.locus,
229
+ mediaConnections = _ref.mediaConnections;
230
+ if (mediaConnections) {
231
+ meeting.updateMediaConnections(mediaConnections);
232
+ }
233
+ var roapAnswer;
234
+ if (mediaConnections !== null && mediaConnections !== void 0 && (_mediaConnections$ = mediaConnections[0]) !== null && _mediaConnections$ !== void 0 && _mediaConnections$.remoteSdp) {
235
+ var remoteSdp = JSON.parse(mediaConnections[0].remoteSdp);
236
+ if (remoteSdp.roapMessage) {
237
+ var _remoteSdp$roapMessag = remoteSdp.roapMessage,
238
+ answerSeq = _remoteSdp$roapMessag.seq,
239
+ messageType = _remoteSdp$roapMessag.messageType,
240
+ sdps = _remoteSdp$roapMessag.sdps,
241
+ errorType = _remoteSdp$roapMessag.errorType,
242
+ errorCause = _remoteSdp$roapMessag.errorCause,
243
+ headers = _remoteSdp$roapMessag.headers;
244
+ roapAnswer = {
245
+ seq: answerSeq,
246
+ messageType: messageType,
247
+ sdp: sdps[0],
248
+ errorType: errorType,
249
+ errorCause: errorCause,
250
+ headers: headers
251
+ };
252
+ }
253
+ }
254
+ if (!roapAnswer) {
255
+ _metrics.default.sendBehavioralMetric(_constants2.default.ROAP_HTTP_RESPONSE_MISSING, {
256
+ correlationId: meeting.correlationId,
257
+ messageType: 'ANSWER',
258
+ isMultistream: meeting.isMultistream
259
+ });
260
+ }
261
+ return {
262
+ locus: locus,
263
+ roapAnswer: roapAnswer
264
+ };
369
265
  });
370
- meeting.setRoapSeq(roapMessage.seq);
371
- if (mediaConnections) {
372
- meeting.updateMediaConnections(mediaConnections);
373
- }
374
-
375
- // eslint-disable-next-line no-warning-comments
376
- // TODO: we need to attach peerconenction to locus not sure if we need to pass everything here
377
- return locus;
378
- // eslint-disable-next-line no-warning-comments
379
- // TODO: check where to update the sequence number
380
266
  });
381
267
  }
382
- }, {
383
- key: "roapFinished",
384
- value:
385
- /**
386
- * Called when the roap sequence is finished (completed successfully or failed)
387
- * @param {String} correlationId id of the meeting affected
388
- * @param {String} sequenceId the id of the finished sequence
389
- * @returns {undefined}
390
- * @private
391
- * @memberof Roap
392
- */
393
- function roapFinished(correlationId, sequenceId) {
394
- _collection.default.onSessionSequenceFinish(correlationId, sequenceId);
395
- // @ts-ignore
396
- var meeting = this.webex.meetings.meetingCollection.getByKey('correlationId', correlationId);
397
- meeting.mediaNegotiatedEvent();
398
- if (!_collection.default.isBusy(correlationId)) {
399
- meeting.processNextQueuedMediaUpdate();
400
- }
401
- }
402
268
 
403
269
  /**
404
270
  * Performs a TURN server discovery procedure, which involves exchanging
@@ -408,15 +274,15 @@ var Roap = /*#__PURE__*/function (_StatelessWebexPlugin) {
408
274
  * @param {Meeting} meeting
409
275
  * @param {Boolean} isReconnecting should be set to true if this is a new
410
276
  * media connection just after a reconnection
277
+ * @param {Boolean} [isForced]
411
278
  * @returns {Promise}
412
279
  */
413
280
  }, {
414
281
  key: "doTurnDiscovery",
415
- value: function doTurnDiscovery(meeting, isReconnecting) {
416
- return this.turnDiscovery.doTurnDiscovery(meeting, isReconnecting);
282
+ value: function doTurnDiscovery(meeting, isReconnecting, isForced) {
283
+ return this.turnDiscovery.doTurnDiscovery(meeting, isReconnecting, isForced);
417
284
  }
418
285
  }]);
419
286
  return Roap;
420
287
  }(_webexCore.StatelessWebexPlugin);
421
- exports.default = Roap;
422
288
  //# sourceMappingURL=index.js.map