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

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 (528) hide show
  1. package/README.md +46 -8
  2. package/dist/annotation/annotation.types.js +7 -0
  3. package/dist/annotation/annotation.types.js.map +1 -0
  4. package/dist/annotation/constants.js +41 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +357 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +215 -0
  9. package/dist/breakouts/breakout.js.map +1 -0
  10. package/dist/breakouts/collection.js +22 -0
  11. package/dist/breakouts/collection.js.map +1 -0
  12. package/dist/breakouts/edit-lock-error.js +51 -0
  13. package/dist/breakouts/edit-lock-error.js.map +1 -0
  14. package/dist/breakouts/events.js +44 -0
  15. package/dist/breakouts/events.js.map +1 -0
  16. package/dist/breakouts/index.js +1047 -0
  17. package/dist/breakouts/index.js.map +1 -0
  18. package/dist/breakouts/request.js +77 -0
  19. package/dist/breakouts/request.js.map +1 -0
  20. package/dist/breakouts/utils.js +64 -0
  21. package/dist/breakouts/utils.js.map +1 -0
  22. package/dist/common/browser-detection.js +2 -3
  23. package/dist/common/browser-detection.js.map +1 -1
  24. package/dist/common/collection.js +3 -4
  25. package/dist/common/collection.js.map +1 -1
  26. package/dist/common/config.js +1 -2
  27. package/dist/common/config.js.map +1 -1
  28. package/dist/common/errors/captcha-error.js +1 -2
  29. package/dist/common/errors/captcha-error.js.map +1 -1
  30. package/dist/common/errors/intent-to-join.js +1 -2
  31. package/dist/common/errors/intent-to-join.js.map +1 -1
  32. package/dist/common/errors/join-meeting.js +1 -2
  33. package/dist/common/errors/join-meeting.js.map +1 -1
  34. package/dist/common/errors/media.js +1 -2
  35. package/dist/common/errors/media.js.map +1 -1
  36. package/dist/common/errors/no-meeting-info.js +50 -0
  37. package/dist/common/errors/no-meeting-info.js.map +1 -0
  38. package/dist/common/errors/parameter.js +3 -4
  39. package/dist/common/errors/parameter.js.map +1 -1
  40. package/dist/common/errors/password-error.js +1 -2
  41. package/dist/common/errors/password-error.js.map +1 -1
  42. package/dist/common/errors/permission.js +1 -2
  43. package/dist/common/errors/permission.js.map +1 -1
  44. package/dist/common/errors/reclaim-host-role-errors.js +154 -0
  45. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  46. package/dist/common/errors/reconnection-in-progress.js +1 -2
  47. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  48. package/dist/common/errors/reconnection.js +1 -2
  49. package/dist/common/errors/reconnection.js.map +1 -1
  50. package/dist/common/errors/stats.js +1 -2
  51. package/dist/common/errors/stats.js.map +1 -1
  52. package/dist/common/errors/webex-errors.js +48 -28
  53. package/dist/common/errors/webex-errors.js.map +1 -1
  54. package/dist/common/errors/webex-meetings-error.js +1 -2
  55. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  56. package/dist/common/events/events-scope.js +1 -2
  57. package/dist/common/events/events-scope.js.map +1 -1
  58. package/dist/common/events/events.js +1 -2
  59. package/dist/common/events/events.js.map +1 -1
  60. package/dist/common/events/trigger-proxy.js +1 -2
  61. package/dist/common/events/trigger-proxy.js.map +1 -1
  62. package/dist/common/events/util.js +1 -2
  63. package/dist/common/events/util.js.map +1 -1
  64. package/dist/common/logs/logger-config.js +1 -2
  65. package/dist/common/logs/logger-config.js.map +1 -1
  66. package/dist/common/logs/logger-proxy.js +2 -3
  67. package/dist/common/logs/logger-proxy.js.map +1 -1
  68. package/dist/common/logs/request.js +8 -5
  69. package/dist/common/logs/request.js.map +1 -1
  70. package/dist/common/queue.js +22 -9
  71. package/dist/common/queue.js.map +1 -1
  72. package/dist/config.js +8 -11
  73. package/dist/config.js.map +1 -1
  74. package/dist/constants.js +437 -435
  75. package/dist/constants.js.map +1 -1
  76. package/dist/controls-options-manager/constants.js +3 -6
  77. package/dist/controls-options-manager/constants.js.map +1 -1
  78. package/dist/controls-options-manager/enums.js +15 -6
  79. package/dist/controls-options-manager/enums.js.map +1 -1
  80. package/dist/controls-options-manager/index.js +127 -38
  81. package/dist/controls-options-manager/index.js.map +1 -1
  82. package/dist/controls-options-manager/types.js +7 -0
  83. package/dist/controls-options-manager/types.js.map +1 -0
  84. package/dist/controls-options-manager/util.js +309 -19
  85. package/dist/controls-options-manager/util.js.map +1 -1
  86. package/dist/index.js +116 -4
  87. package/dist/index.js.map +1 -1
  88. package/dist/interpretation/collection.js +22 -0
  89. package/dist/interpretation/collection.js.map +1 -0
  90. package/dist/interpretation/index.js +365 -0
  91. package/dist/interpretation/index.js.map +1 -0
  92. package/dist/interpretation/siLanguage.js +24 -0
  93. package/dist/interpretation/siLanguage.js.map +1 -0
  94. package/dist/locus-info/controlsUtils.js +100 -11
  95. package/dist/locus-info/controlsUtils.js.map +1 -1
  96. package/dist/locus-info/embeddedAppsUtils.js +3 -4
  97. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  98. package/dist/locus-info/fullState.js +1 -2
  99. package/dist/locus-info/fullState.js.map +1 -1
  100. package/dist/locus-info/hostUtils.js +1 -2
  101. package/dist/locus-info/hostUtils.js.map +1 -1
  102. package/dist/locus-info/index.js +425 -84
  103. package/dist/locus-info/index.js.map +1 -1
  104. package/dist/locus-info/infoUtils.js +13 -5
  105. package/dist/locus-info/infoUtils.js.map +1 -1
  106. package/dist/locus-info/mediaSharesUtils.js +58 -3
  107. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  108. package/dist/locus-info/parser.js +253 -80
  109. package/dist/locus-info/parser.js.map +1 -1
  110. package/dist/locus-info/selfUtils.js +97 -13
  111. package/dist/locus-info/selfUtils.js.map +1 -1
  112. package/dist/media/index.js +106 -319
  113. package/dist/media/index.js.map +1 -1
  114. package/dist/media/properties.js +96 -153
  115. package/dist/media/properties.js.map +1 -1
  116. package/dist/media/util.js +1 -22
  117. package/dist/media/util.js.map +1 -1
  118. package/dist/mediaQualityMetrics/config.js +498 -493
  119. package/dist/mediaQualityMetrics/config.js.map +1 -1
  120. package/dist/meeting/in-meeting-actions.js +92 -3
  121. package/dist/meeting/in-meeting-actions.js.map +1 -1
  122. package/dist/meeting/index.js +4628 -2971
  123. package/dist/meeting/index.js.map +1 -1
  124. package/dist/meeting/locusMediaRequest.js +291 -0
  125. package/dist/meeting/locusMediaRequest.js.map +1 -0
  126. package/dist/meeting/muteState.js +224 -133
  127. package/dist/meeting/muteState.js.map +1 -1
  128. package/dist/meeting/request.js +297 -199
  129. package/dist/meeting/request.js.map +1 -1
  130. package/dist/meeting/request.type.js +7 -0
  131. package/dist/meeting/request.type.js.map +1 -0
  132. package/dist/meeting/state.js +1 -2
  133. package/dist/meeting/state.js.map +1 -1
  134. package/dist/meeting/util.js +605 -435
  135. package/dist/meeting/util.js.map +1 -1
  136. package/dist/meeting-info/collection.js +3 -4
  137. package/dist/meeting-info/collection.js.map +1 -1
  138. package/dist/meeting-info/index.js +74 -7
  139. package/dist/meeting-info/index.js.map +1 -1
  140. package/dist/meeting-info/meeting-info-v2.js +200 -63
  141. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  142. package/dist/meeting-info/request.js +1 -2
  143. package/dist/meeting-info/request.js.map +1 -1
  144. package/dist/meeting-info/util.js +2 -3
  145. package/dist/meeting-info/util.js.map +1 -1
  146. package/dist/meeting-info/utilv2.js +39 -41
  147. package/dist/meeting-info/utilv2.js.map +1 -1
  148. package/dist/meetings/collection.js +42 -4
  149. package/dist/meetings/collection.js.map +1 -1
  150. package/dist/meetings/index.js +477 -123
  151. package/dist/meetings/index.js.map +1 -1
  152. package/dist/meetings/meetings.types.js +7 -0
  153. package/dist/meetings/meetings.types.js.map +1 -0
  154. package/dist/meetings/request.js +4 -3
  155. package/dist/meetings/request.js.map +1 -1
  156. package/dist/meetings/util.js +107 -6
  157. package/dist/meetings/util.js.map +1 -1
  158. package/dist/member/index.js +54 -2
  159. package/dist/member/index.js.map +1 -1
  160. package/dist/member/member.types.js +3 -4
  161. package/dist/member/member.types.js.map +1 -1
  162. package/dist/member/types.js +23 -0
  163. package/dist/member/types.js.map +1 -0
  164. package/dist/member/util.js +131 -29
  165. package/dist/member/util.js.map +1 -1
  166. package/dist/members/collection.js +11 -2
  167. package/dist/members/collection.js.map +1 -1
  168. package/dist/members/index.js +174 -10
  169. package/dist/members/index.js.map +1 -1
  170. package/dist/members/request.js +108 -41
  171. package/dist/members/request.js.map +1 -1
  172. package/dist/members/types.js +14 -0
  173. package/dist/members/types.js.map +1 -0
  174. package/dist/members/util.js +327 -234
  175. package/dist/members/util.js.map +1 -1
  176. package/dist/metrics/constants.js +15 -9
  177. package/dist/metrics/constants.js.map +1 -1
  178. package/dist/metrics/index.js +4 -452
  179. package/dist/metrics/index.js.map +1 -1
  180. package/dist/multistream/mediaRequestManager.js +344 -0
  181. package/dist/multistream/mediaRequestManager.js.map +1 -0
  182. package/dist/multistream/receiveSlot.js +200 -0
  183. package/dist/multistream/receiveSlot.js.map +1 -0
  184. package/dist/multistream/receiveSlotManager.js +174 -0
  185. package/dist/multistream/receiveSlotManager.js.map +1 -0
  186. package/dist/multistream/remoteMedia.js +268 -0
  187. package/dist/multistream/remoteMedia.js.map +1 -0
  188. package/dist/multistream/remoteMediaGroup.js +267 -0
  189. package/dist/multistream/remoteMediaGroup.js.map +1 -0
  190. package/dist/multistream/remoteMediaManager.js +1211 -0
  191. package/dist/multistream/remoteMediaManager.js.map +1 -0
  192. package/dist/multistream/sendSlotManager.js +236 -0
  193. package/dist/multistream/sendSlotManager.js.map +1 -0
  194. package/dist/networkQualityMonitor/index.js +5 -4
  195. package/dist/networkQualityMonitor/index.js.map +1 -1
  196. package/dist/personal-meeting-room/index.js +2 -3
  197. package/dist/personal-meeting-room/index.js.map +1 -1
  198. package/dist/personal-meeting-room/request.js +2 -3
  199. package/dist/personal-meeting-room/request.js.map +1 -1
  200. package/dist/personal-meeting-room/util.js +1 -2
  201. package/dist/personal-meeting-room/util.js.map +1 -1
  202. package/dist/reachability/index.js +265 -72
  203. package/dist/reachability/index.js.map +1 -1
  204. package/dist/reachability/request.js +18 -10
  205. package/dist/reachability/request.js.map +1 -1
  206. package/dist/reactions/constants.js +12 -0
  207. package/dist/reactions/constants.js.map +1 -0
  208. package/dist/reactions/reactions.js +4 -6
  209. package/dist/reactions/reactions.js.map +1 -1
  210. package/dist/reactions/reactions.type.js +21 -23
  211. package/dist/reactions/reactions.type.js.map +1 -1
  212. package/dist/reconnection-manager/index.js +281 -229
  213. package/dist/reconnection-manager/index.js.map +1 -1
  214. package/dist/recording-controller/enums.js +4 -5
  215. package/dist/recording-controller/enums.js.map +1 -1
  216. package/dist/recording-controller/index.js +57 -46
  217. package/dist/recording-controller/index.js.map +1 -1
  218. package/dist/recording-controller/util.js +10 -10
  219. package/dist/recording-controller/util.js.map +1 -1
  220. package/dist/roap/index.js +101 -235
  221. package/dist/roap/index.js.map +1 -1
  222. package/dist/roap/request.js +126 -180
  223. package/dist/roap/request.js.map +1 -1
  224. package/dist/roap/turnDiscovery.js +115 -105
  225. package/dist/roap/turnDiscovery.js.map +1 -1
  226. package/dist/rtcMetrics/constants.js +11 -0
  227. package/dist/rtcMetrics/constants.js.map +1 -0
  228. package/dist/rtcMetrics/index.js +140 -0
  229. package/dist/rtcMetrics/index.js.map +1 -0
  230. package/dist/statsAnalyzer/global.js +2 -85
  231. package/dist/statsAnalyzer/global.js.map +1 -1
  232. package/dist/statsAnalyzer/index.js +402 -424
  233. package/dist/statsAnalyzer/index.js.map +1 -1
  234. package/dist/statsAnalyzer/mqaUtil.js +117 -83
  235. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  236. package/dist/transcription/index.js +1 -2
  237. package/dist/transcription/index.js.map +1 -1
  238. package/dist/webinar/collection.js +43 -0
  239. package/dist/webinar/collection.js.map +1 -0
  240. package/dist/webinar/index.js +68 -0
  241. package/dist/webinar/index.js.map +1 -0
  242. package/package.json +34 -25
  243. package/src/annotation/annotation.types.ts +50 -0
  244. package/src/annotation/constants.ts +36 -0
  245. package/src/annotation/index.ts +328 -0
  246. package/src/breakouts/README.md +220 -0
  247. package/src/breakouts/breakout.ts +188 -0
  248. package/src/breakouts/collection.ts +19 -0
  249. package/src/breakouts/edit-lock-error.ts +25 -0
  250. package/src/breakouts/events.ts +56 -0
  251. package/src/breakouts/index.ts +925 -0
  252. package/src/breakouts/request.ts +55 -0
  253. package/src/breakouts/utils.ts +57 -0
  254. package/src/common/errors/no-meeting-info.ts +24 -0
  255. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  256. package/src/common/errors/webex-errors.ts +36 -12
  257. package/src/common/logs/logger-proxy.ts +1 -1
  258. package/src/common/logs/request.ts +5 -1
  259. package/src/common/queue.ts +22 -8
  260. package/src/config.ts +5 -7
  261. package/src/constants.ts +271 -93
  262. package/src/controls-options-manager/enums.ts +12 -0
  263. package/src/controls-options-manager/index.ts +116 -21
  264. package/src/controls-options-manager/types.ts +59 -0
  265. package/src/controls-options-manager/util.ts +294 -14
  266. package/src/index.ts +40 -0
  267. package/src/interpretation/README.md +60 -0
  268. package/src/interpretation/collection.ts +19 -0
  269. package/src/interpretation/index.ts +332 -0
  270. package/src/interpretation/siLanguage.ts +18 -0
  271. package/src/locus-info/controlsUtils.ts +110 -0
  272. package/src/locus-info/index.ts +449 -61
  273. package/src/locus-info/infoUtils.ts +14 -2
  274. package/src/locus-info/mediaSharesUtils.ts +64 -0
  275. package/src/locus-info/parser.ts +258 -47
  276. package/src/locus-info/selfUtils.ts +85 -2
  277. package/src/media/index.ts +153 -370
  278. package/src/media/properties.ts +106 -136
  279. package/src/media/util.ts +0 -21
  280. package/src/mediaQualityMetrics/config.ts +379 -377
  281. package/src/meeting/in-meeting-actions.ts +172 -0
  282. package/src/meeting/index.ts +3861 -2504
  283. package/src/meeting/locusMediaRequest.ts +313 -0
  284. package/src/meeting/muteState.ts +224 -138
  285. package/src/meeting/request.ts +207 -127
  286. package/src/meeting/request.type.ts +13 -0
  287. package/src/meeting/util.ts +590 -423
  288. package/src/meeting-info/index.ts +81 -8
  289. package/src/meeting-info/meeting-info-v2.ts +163 -13
  290. package/src/meeting-info/util.ts +1 -1
  291. package/src/meeting-info/utilv2.ts +28 -28
  292. package/src/meetings/collection.ts +33 -0
  293. package/src/meetings/index.ts +477 -124
  294. package/src/meetings/meetings.types.ts +12 -0
  295. package/src/meetings/request.ts +2 -0
  296. package/src/meetings/util.ts +116 -5
  297. package/src/member/index.ts +52 -1
  298. package/src/member/types.ts +38 -0
  299. package/src/member/util.ts +139 -28
  300. package/src/members/collection.ts +8 -0
  301. package/src/members/index.ts +196 -7
  302. package/src/members/request.ts +97 -17
  303. package/src/members/types.ts +29 -0
  304. package/src/members/util.ts +333 -240
  305. package/src/metrics/constants.ts +13 -6
  306. package/src/metrics/index.ts +1 -471
  307. package/src/multistream/mediaRequestManager.ts +440 -0
  308. package/src/multistream/receiveSlot.ts +184 -0
  309. package/src/multistream/receiveSlotManager.ts +166 -0
  310. package/src/multistream/remoteMedia.ts +254 -0
  311. package/src/multistream/remoteMediaGroup.ts +284 -0
  312. package/src/multistream/remoteMediaManager.ts +1145 -0
  313. package/src/multistream/sendSlotManager.ts +170 -0
  314. package/src/networkQualityMonitor/index.ts +6 -6
  315. package/src/reachability/index.ts +238 -45
  316. package/src/reachability/request.ts +17 -8
  317. package/src/reactions/constants.ts +4 -0
  318. package/src/reactions/reactions.ts +4 -4
  319. package/src/reactions/reactions.type.ts +30 -4
  320. package/src/reconnection-manager/index.ts +167 -154
  321. package/src/recording-controller/index.ts +20 -3
  322. package/src/recording-controller/util.ts +26 -9
  323. package/src/roap/index.ts +98 -241
  324. package/src/roap/request.ts +74 -148
  325. package/src/roap/turnDiscovery.ts +62 -56
  326. package/src/rtcMetrics/constants.ts +3 -0
  327. package/src/rtcMetrics/index.ts +124 -0
  328. package/src/statsAnalyzer/global.ts +1 -84
  329. package/src/statsAnalyzer/index.ts +470 -522
  330. package/src/statsAnalyzer/mqaUtil.ts +117 -112
  331. package/src/webinar/collection.ts +31 -0
  332. package/src/webinar/index.ts +62 -0
  333. package/test/integration/spec/converged-space-meetings.js +233 -0
  334. package/test/integration/spec/journey.js +320 -264
  335. package/test/integration/spec/space-meeting.js +77 -4
  336. package/test/unit/spec/annotation/index.ts +418 -0
  337. package/test/unit/spec/breakouts/breakout.ts +237 -0
  338. package/test/unit/spec/breakouts/collection.ts +15 -0
  339. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  340. package/test/unit/spec/breakouts/events.ts +89 -0
  341. package/test/unit/spec/breakouts/index.ts +1790 -0
  342. package/test/unit/spec/breakouts/request.ts +104 -0
  343. package/test/unit/spec/breakouts/utils.js +72 -0
  344. package/test/unit/spec/common/queue.js +31 -2
  345. package/test/unit/spec/controls-options-manager/index.js +163 -0
  346. package/test/unit/spec/controls-options-manager/util.js +576 -60
  347. package/test/unit/spec/fixture/locus.js +1 -0
  348. package/test/unit/spec/interpretation/collection.ts +15 -0
  349. package/test/unit/spec/interpretation/index.ts +589 -0
  350. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  351. package/test/unit/spec/locus-info/controlsUtils.js +323 -30
  352. package/test/unit/spec/locus-info/index.js +1390 -16
  353. package/test/unit/spec/locus-info/infoUtils.js +54 -16
  354. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  355. package/test/unit/spec/locus-info/lib/selfConstant.js +48 -0
  356. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  357. package/test/unit/spec/locus-info/parser.js +116 -35
  358. package/test/unit/spec/locus-info/selfUtils.js +275 -0
  359. package/test/unit/spec/media/index.ts +274 -0
  360. package/test/unit/spec/media/properties.ts +75 -84
  361. package/test/unit/spec/meeting/in-meeting-actions.ts +84 -0
  362. package/test/unit/spec/meeting/index.js +8269 -3145
  363. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  364. package/test/unit/spec/meeting/muteState.js +409 -213
  365. package/test/unit/spec/meeting/request.js +512 -42
  366. package/test/unit/spec/meeting/utils.js +741 -24
  367. package/test/unit/spec/meeting-info/index.js +300 -0
  368. package/test/unit/spec/meeting-info/meetinginfov2.js +527 -5
  369. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  370. package/test/unit/spec/meetings/collection.js +26 -0
  371. package/test/unit/spec/meetings/index.js +1201 -210
  372. package/test/unit/spec/meetings/utils.js +202 -2
  373. package/test/unit/spec/member/index.js +38 -8
  374. package/test/unit/spec/member/util.js +499 -29
  375. package/test/unit/spec/members/index.js +597 -3
  376. package/test/unit/spec/members/request.js +206 -27
  377. package/test/unit/spec/members/utils.js +210 -0
  378. package/test/unit/spec/metrics/index.js +1 -50
  379. package/test/unit/spec/multistream/mediaRequestManager.ts +1418 -0
  380. package/test/unit/spec/multistream/receiveSlot.ts +163 -0
  381. package/test/unit/spec/multistream/receiveSlotManager.ts +203 -0
  382. package/test/unit/spec/multistream/remoteMedia.ts +255 -0
  383. package/test/unit/spec/multistream/remoteMediaGroup.ts +662 -0
  384. package/test/unit/spec/multistream/remoteMediaManager.ts +1924 -0
  385. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  386. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  387. package/test/unit/spec/reachability/index.ts +598 -24
  388. package/test/unit/spec/reachability/request.js +68 -0
  389. package/test/unit/spec/reconnection-manager/index.js +145 -22
  390. package/test/unit/spec/recording-controller/index.js +293 -218
  391. package/test/unit/spec/recording-controller/util.js +223 -96
  392. package/test/unit/spec/roap/index.ts +200 -76
  393. package/test/unit/spec/roap/request.ts +232 -0
  394. package/test/unit/spec/roap/turnDiscovery.ts +86 -48
  395. package/test/unit/spec/rtcMetrics/index.ts +93 -0
  396. package/test/unit/spec/stats-analyzer/index.js +188 -174
  397. package/test/unit/spec/webinar/collection.ts +13 -0
  398. package/test/unit/spec/webinar/index.ts +60 -0
  399. package/test/utils/constants.js +9 -0
  400. package/test/utils/integrationTestUtils.js +46 -0
  401. package/test/utils/testUtils.js +0 -45
  402. package/test/utils/webex-config.js +4 -0
  403. package/test/utils/webex-test-users.js +7 -3
  404. package/dist/common/browser-detection.d.ts +0 -9
  405. package/dist/common/collection.d.ts +0 -48
  406. package/dist/common/config.d.ts +0 -2
  407. package/dist/common/errors/captcha-error.d.ts +0 -15
  408. package/dist/common/errors/intent-to-join.d.ts +0 -16
  409. package/dist/common/errors/join-meeting.d.ts +0 -17
  410. package/dist/common/errors/media.d.ts +0 -15
  411. package/dist/common/errors/parameter.d.ts +0 -15
  412. package/dist/common/errors/password-error.d.ts +0 -15
  413. package/dist/common/errors/permission.d.ts +0 -14
  414. package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
  415. package/dist/common/errors/reconnection.d.ts +0 -15
  416. package/dist/common/errors/stats.d.ts +0 -15
  417. package/dist/common/errors/webex-errors.d.ts +0 -81
  418. package/dist/common/errors/webex-meetings-error.d.ts +0 -20
  419. package/dist/common/events/events-scope.d.ts +0 -17
  420. package/dist/common/events/events.d.ts +0 -12
  421. package/dist/common/events/trigger-proxy.d.ts +0 -2
  422. package/dist/common/events/util.d.ts +0 -2
  423. package/dist/common/logs/logger-config.d.ts +0 -2
  424. package/dist/common/logs/logger-proxy.d.ts +0 -2
  425. package/dist/common/logs/request.d.ts +0 -34
  426. package/dist/common/queue.d.ts +0 -32
  427. package/dist/config.d.ts +0 -73
  428. package/dist/constants.d.ts +0 -926
  429. package/dist/controls-options-manager/constants.d.ts +0 -4
  430. package/dist/controls-options-manager/enums.d.ts +0 -5
  431. package/dist/controls-options-manager/index.d.ts +0 -120
  432. package/dist/controls-options-manager/util.d.ts +0 -7
  433. package/dist/index.d.ts +0 -4
  434. package/dist/locus-info/controlsUtils.d.ts +0 -2
  435. package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
  436. package/dist/locus-info/fullState.d.ts +0 -2
  437. package/dist/locus-info/hostUtils.d.ts +0 -2
  438. package/dist/locus-info/index.d.ts +0 -269
  439. package/dist/locus-info/infoUtils.d.ts +0 -2
  440. package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
  441. package/dist/locus-info/parser.d.ts +0 -212
  442. package/dist/locus-info/selfUtils.d.ts +0 -2
  443. package/dist/media/index.d.ts +0 -32
  444. package/dist/media/properties.d.ts +0 -108
  445. package/dist/media/util.d.ts +0 -2
  446. package/dist/mediaQualityMetrics/config.d.ts +0 -233
  447. package/dist/meeting/effectsState.d.ts +0 -42
  448. package/dist/meeting/effectsState.js +0 -260
  449. package/dist/meeting/effectsState.js.map +0 -1
  450. package/dist/meeting/in-meeting-actions.d.ts +0 -79
  451. package/dist/meeting/index.d.ts +0 -1622
  452. package/dist/meeting/muteState.d.ts +0 -116
  453. package/dist/meeting/request.d.ts +0 -255
  454. package/dist/meeting/state.d.ts +0 -9
  455. package/dist/meeting/util.d.ts +0 -2
  456. package/dist/meeting-info/collection.d.ts +0 -20
  457. package/dist/meeting-info/index.d.ts +0 -57
  458. package/dist/meeting-info/meeting-info-v2.d.ts +0 -93
  459. package/dist/meeting-info/request.d.ts +0 -22
  460. package/dist/meeting-info/util.d.ts +0 -2
  461. package/dist/meeting-info/utilv2.d.ts +0 -2
  462. package/dist/meetings/collection.d.ts +0 -23
  463. package/dist/meetings/index.d.ts +0 -296
  464. package/dist/meetings/request.d.ts +0 -27
  465. package/dist/meetings/util.d.ts +0 -18
  466. package/dist/member/index.d.ts +0 -147
  467. package/dist/member/member.types.d.ts +0 -11
  468. package/dist/member/util.d.ts +0 -2
  469. package/dist/members/collection.d.ts +0 -24
  470. package/dist/members/index.d.ts +0 -298
  471. package/dist/members/request.d.ts +0 -50
  472. package/dist/members/util.d.ts +0 -2
  473. package/dist/metrics/config.d.ts +0 -169
  474. package/dist/metrics/config.js +0 -289
  475. package/dist/metrics/config.js.map +0 -1
  476. package/dist/metrics/constants.d.ts +0 -59
  477. package/dist/metrics/index.d.ts +0 -152
  478. package/dist/networkQualityMonitor/index.d.ts +0 -70
  479. package/dist/peer-connection-manager/index.d.ts +0 -6
  480. package/dist/peer-connection-manager/index.js +0 -671
  481. package/dist/peer-connection-manager/index.js.map +0 -1
  482. package/dist/peer-connection-manager/util.d.ts +0 -6
  483. package/dist/peer-connection-manager/util.js +0 -110
  484. package/dist/peer-connection-manager/util.js.map +0 -1
  485. package/dist/personal-meeting-room/index.d.ts +0 -47
  486. package/dist/personal-meeting-room/request.d.ts +0 -14
  487. package/dist/personal-meeting-room/util.d.ts +0 -2
  488. package/dist/reachability/index.d.ts +0 -139
  489. package/dist/reachability/request.d.ts +0 -35
  490. package/dist/reactions/reactions.d.ts +0 -4
  491. package/dist/reactions/reactions.type.d.ts +0 -32
  492. package/dist/reconnection-manager/index.d.ts +0 -112
  493. package/dist/recording-controller/enums.d.ts +0 -7
  494. package/dist/recording-controller/index.d.ts +0 -193
  495. package/dist/recording-controller/util.d.ts +0 -13
  496. package/dist/roap/collection.d.ts +0 -10
  497. package/dist/roap/collection.js +0 -63
  498. package/dist/roap/collection.js.map +0 -1
  499. package/dist/roap/handler.d.ts +0 -47
  500. package/dist/roap/handler.js +0 -279
  501. package/dist/roap/handler.js.map +0 -1
  502. package/dist/roap/index.d.ts +0 -116
  503. package/dist/roap/request.d.ts +0 -35
  504. package/dist/roap/state.d.ts +0 -9
  505. package/dist/roap/state.js +0 -127
  506. package/dist/roap/state.js.map +0 -1
  507. package/dist/roap/turnDiscovery.d.ts +0 -81
  508. package/dist/roap/util.d.ts +0 -2
  509. package/dist/roap/util.js +0 -76
  510. package/dist/roap/util.js.map +0 -1
  511. package/dist/statsAnalyzer/global.d.ts +0 -118
  512. package/dist/statsAnalyzer/index.d.ts +0 -193
  513. package/dist/statsAnalyzer/mqaUtil.d.ts +0 -22
  514. package/dist/transcription/index.d.ts +0 -64
  515. package/src/index.js +0 -15
  516. package/src/meeting/effectsState.ts +0 -209
  517. package/src/metrics/config.ts +0 -485
  518. package/src/peer-connection-manager/index.ts +0 -847
  519. package/src/peer-connection-manager/util.ts +0 -119
  520. package/src/roap/collection.ts +0 -62
  521. package/src/roap/handler.ts +0 -294
  522. package/src/roap/state.ts +0 -156
  523. package/src/roap/util.ts +0 -100
  524. package/test/unit/spec/meeting/effectsState.js +0 -281
  525. package/test/unit/spec/peerconnection-manager/index.js +0 -218
  526. package/test/unit/spec/peerconnection-manager/utils.js +0 -49
  527. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -388
  528. package/test/unit/spec/roap/util.js +0 -30
@@ -1,6 +1,6 @@
1
- import {Reaction, ReactionType, SkinTone, SkinToneType} from './reactions.type';
1
+ import {Reaction, ReactionServerType, SkinTone, SkinToneType} from './reactions.type';
2
2
 
3
- const Reactions: Record<ReactionType, Reaction> = {
3
+ const Reactions: Record<ReactionServerType, Reaction> = {
4
4
  smile: {
5
5
  type: 'smile',
6
6
  codepoints: '1F642',
@@ -31,12 +31,12 @@ const Reactions: Record<ReactionType, Reaction> = {
31
31
  codepoints: '1F44F',
32
32
  shortcodes: ':clap:',
33
33
  },
34
- thumbs_up: {
34
+ thumb_up: {
35
35
  type: 'thumb_up',
36
36
  codepoints: '1F44D',
37
37
  shortcodes: ':thumbsup:',
38
38
  },
39
- thumbs_down: {
39
+ thumb_down: {
40
40
  type: 'thumb_down',
41
41
  codepoints: '1F44E',
42
42
  shortcodes: ':thumbsdown:',
@@ -1,3 +1,5 @@
1
+ import {REACTION_RELAY_TYPES} from './constants';
2
+
1
3
  export type EmoticonData = {
2
4
  type: string;
3
5
  codepoints?: string;
@@ -5,20 +7,21 @@ export type EmoticonData = {
5
7
  };
6
8
 
7
9
  export type SkinTone = EmoticonData;
8
- // @ts-ignore
10
+
9
11
  export type Reaction = EmoticonData & {
10
12
  tone?: SkinTone;
11
13
  };
12
14
 
13
- export enum ReactionType {
15
+ // eslint-disable-next-line no-shadow
16
+ export enum ReactionServerType {
14
17
  smile = 'smile',
15
18
  sad = 'sad',
16
19
  wow = 'wow',
17
20
  haha = 'haha',
18
21
  celebrate = 'celebrate',
19
22
  clap = 'clap',
20
- thumbs_up = 'thumbs_up',
21
- thumbs_down = 'thumbs_down',
23
+ thumb_up = 'thumb_up',
24
+ thumb_down = 'thumb_down',
22
25
  heart = 'heart',
23
26
  fire = 'fire',
24
27
  prayer = 'prayer',
@@ -26,6 +29,7 @@ export enum ReactionType {
26
29
  slow_down = 'slow_down',
27
30
  }
28
31
 
32
+ // eslint-disable-next-line no-shadow
29
33
  export enum SkinToneType {
30
34
  normal = 'normal',
31
35
  light = 'light',
@@ -34,3 +38,25 @@ export enum SkinToneType {
34
38
  medium_dark = 'medium_dark',
35
39
  dark = 'dark',
36
40
  }
41
+
42
+ export type Sender = {
43
+ participantId: string;
44
+ };
45
+
46
+ export type ProcessedReaction = {
47
+ reaction: Reaction;
48
+ sender: {
49
+ id: Sender['participantId'];
50
+ name: string;
51
+ };
52
+ };
53
+
54
+ type RelayEventData = {
55
+ relayType: (typeof REACTION_RELAY_TYPES)['REACTION'];
56
+ reaction: Reaction;
57
+ sender: Sender;
58
+ };
59
+
60
+ export type RelayEvent = {
61
+ data: RelayEventData;
62
+ };
@@ -14,16 +14,14 @@ import {
14
14
  _CALL_,
15
15
  _LEFT_,
16
16
  _ID_,
17
+ RECONNECTION_STATE,
17
18
  } from '../constants';
18
19
  import BEHAVIORAL_METRICS from '../metrics/constants';
19
20
  import ReconnectionError from '../common/errors/reconnection';
20
21
  import ReconnectInProgress from '../common/errors/reconnection-in-progress';
21
- import PeerConnectionManager from '../peer-connection-manager';
22
- import {eventType, reconnection, errorObjects} from '../metrics/config';
23
- import Media from '../media';
24
22
  import Metrics from '../metrics';
25
- import RoapCollection from '../roap/collection';
26
23
  import Meeting from '../meeting';
24
+ import {MediaRequestManager} from '../multistream/mediaRequestManager';
27
25
 
28
26
  /**
29
27
  * Used to indicate that the reconnect logic needs to be retried.
@@ -99,7 +97,7 @@ export default class ReconnectionManager {
99
97
 
100
98
  /**
101
99
  * @instance
102
- * @type {String}
100
+ * @type {RECONNECTION_STATE}
103
101
  * @private
104
102
  * @memberof ReconnectionManager
105
103
  */
@@ -141,6 +139,21 @@ export default class ReconnectionManager {
141
139
  this.reset();
142
140
  }
143
141
 
142
+ /**
143
+ * @public
144
+ * @memberof ReconnectionManager
145
+ * @returns {void}
146
+ */
147
+ resetReconnectionTimer() {
148
+ this.iceState.resolve();
149
+ this.iceState.resolve = () => {};
150
+
151
+ if (this.iceState.timer) {
152
+ clearTimeout(this.iceState.timer);
153
+ delete this.iceState.timer;
154
+ }
155
+ }
156
+
144
157
  /**
145
158
  * Sets the iceState to connected and clears any disconnect timeouts and
146
159
  * related timeout data within the iceState.
@@ -153,13 +166,7 @@ export default class ReconnectionManager {
153
166
  if (this.iceState.disconnected) {
154
167
  LoggerProxy.logger.log('ReconnectionManager:index#iceReconnected --> ice has reconnected');
155
168
 
156
- this.iceState.resolve();
157
- this.iceState.resolve = () => {};
158
-
159
- if (this.iceState.timer) {
160
- clearTimeout(this.iceState.timer);
161
- delete this.iceState.timer;
162
- }
169
+ this.resetReconnectionTimer();
163
170
 
164
171
  this.iceState.disconnected = false;
165
172
  }
@@ -224,6 +231,53 @@ export default class ReconnectionManager {
224
231
  this.meeting = null;
225
232
  }
226
233
 
234
+ /**
235
+ * Stop the local share stream.
236
+ *
237
+ * @param {string} reason a {@link SHARE_STOPPED_REASON}
238
+ * @returns {undefined}
239
+ * @private
240
+ * @memberof ReconnectionManager
241
+ */
242
+ private async stopLocalShareStream(reason: string) {
243
+ await this.meeting.unpublishStreams([
244
+ this.meeting.mediaProperties.shareVideoStream,
245
+ this.meeting.mediaProperties.shareAudioStream,
246
+ ]);
247
+ Trigger.trigger(
248
+ this.meeting,
249
+ {
250
+ file: 'reconnection-manager/index',
251
+ function: 'stopLocalShareStream',
252
+ },
253
+ EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL,
254
+ {
255
+ reason,
256
+ }
257
+ );
258
+ }
259
+
260
+ /**
261
+ * @public
262
+ * @memberof ReconnectionManager
263
+ * @returns {Boolean} true if reconnection operation is in progress
264
+ */
265
+ isReconnectInProgress() {
266
+ return this.status === RECONNECTION.STATE.IN_PROGRESS;
267
+ }
268
+
269
+ /**
270
+ * Sets the reconnection status
271
+ *
272
+ * @public
273
+ * @param {RECONNECTION_STATE} status
274
+ * @memberof ReconnectionManager
275
+ * @returns {undefined}
276
+ */
277
+ public setStatus(status: RECONNECTION_STATE) {
278
+ this.status = status;
279
+ }
280
+
227
281
  /**
228
282
  * @returns {Boolean}
229
283
  * @throws {ReconnectionError}
@@ -286,72 +340,65 @@ export default class ReconnectionManager {
286
340
  LoggerProxy.logger.info(
287
341
  'ReconnectionManager:index#reconnect --> Sending reconnect start metric.'
288
342
  );
289
- Metrics.postEvent({
290
- event: eventType.MEDIA_RECONNECTING,
291
- meeting: this.meeting,
343
+
344
+ // @ts-ignore
345
+ this.webex.internal.newMetrics.submitClientEvent({
346
+ name: 'client.media.reconnecting',
347
+ options: {
348
+ meetingId: this.meeting.id,
349
+ },
292
350
  });
293
351
  }
294
352
 
295
- return this.executeReconnection({networkDisconnect})
296
- .then(() => {
297
- LoggerProxy.logger.info('ReconnectionManager:index#reconnect --> Reconnection successful.');
353
+ return this.executeReconnection({networkDisconnect}).catch((reconnectError) => {
354
+ if (reconnectError instanceof NeedsRetryError) {
298
355
  LoggerProxy.logger.info(
299
- 'ReconnectionManager:index#reconnect --> Sending reconnect success metric.'
356
+ 'ReconnectionManager:index#reconnect --> Reconnection not successful, retrying.'
300
357
  );
301
- Metrics.postEvent({
302
- event: eventType.MEDIA_RECOVERED,
303
- meeting: this.meeting,
304
- data: {recoveredBy: reconnection.RECOVERED_BY_NEW},
305
- });
306
- })
307
- .catch((reconnectError) => {
308
- if (reconnectError instanceof NeedsRetryError) {
309
- LoggerProxy.logger.info(
310
- 'ReconnectionManager:index#reconnect --> Reconnection not successful, retrying.'
311
- );
312
- // Reset our reconnect status since we are looping back to the beginning
313
- this.status = RECONNECTION.STATE.DEFAULT_STATUS;
314
-
315
- // This is a network retry, so we should not log START metrics again
316
- return this.reconnect({networkDisconnect: true, networkRetry: true});
317
- }
358
+ // Reset our reconnect status since we are looping back to the beginning
359
+ this.status = RECONNECTION.STATE.DEFAULT_STATUS;
318
360
 
319
- // Reconnect has failed
320
- LoggerProxy.logger.error(
321
- 'ReconnectionManager:index#reconnect --> Reconnection failed.',
322
- reconnectError.message
323
- );
324
- LoggerProxy.logger.info(
325
- 'ReconnectionManager:index#reconnect --> Sending reconnect abort metric.'
326
- );
361
+ // This is a network retry, so we should not log START metrics again
362
+ return this.reconnect({networkDisconnect: true, networkRetry: true});
363
+ }
327
364
 
328
- const reconnectMetric = {
329
- event: eventType.CALL_ABORTED,
330
- meeting: this.meeting,
331
- data: {
332
- errors: [
333
- {
334
- category: errorObjects.category.expected,
335
- errorCode: 2008,
336
- fatal: true,
337
- name: errorObjects.name.mediaEngine,
338
- shownToUser: false,
339
- },
340
- ],
341
- },
342
- };
343
-
344
- Metrics.postEvent(reconnectMetric);
345
- if (reconnectError instanceof NeedsRejoinError) {
346
- // send call aborded event with catogery as expected as we are trying to rejoin
347
-
348
- if (this.autoRejoinEnabled) {
349
- return this.rejoinMeeting(reconnectError.wasSharing);
350
- }
351
- }
365
+ // Reconnect has failed
366
+ LoggerProxy.logger.error(
367
+ 'ReconnectionManager:index#reconnect --> Reconnection failed.',
368
+ reconnectError.message
369
+ );
370
+ LoggerProxy.logger.info(
371
+ 'ReconnectionManager:index#reconnect --> Sending reconnect abort metric.'
372
+ );
352
373
 
353
- throw reconnectError;
374
+ // @ts-ignore
375
+ this.webex.internal.newMetrics.submitClientEvent({
376
+ name: 'client.call.aborted',
377
+ payload: {
378
+ errors: [
379
+ {
380
+ category: 'expected',
381
+ errorCode: 2008,
382
+ fatal: true,
383
+ name: 'media-engine',
384
+ shownToUser: false,
385
+ },
386
+ ],
387
+ },
388
+ options: {
389
+ meetingId: this.meeting.id,
390
+ },
354
391
  });
392
+ if (reconnectError instanceof NeedsRejoinError) {
393
+ // send call aborded event with catogery as expected as we are trying to rejoin
394
+
395
+ if (this.autoRejoinEnabled) {
396
+ return this.rejoinMeeting(reconnectError.wasSharing);
397
+ }
398
+ }
399
+
400
+ throw reconnectError;
401
+ });
355
402
  }
356
403
 
357
404
  /**
@@ -369,6 +416,12 @@ export default class ReconnectionManager {
369
416
  'ReconnectionManager:index#executeReconnection --> Attempting to reconnect to meeting.'
370
417
  );
371
418
 
419
+ const wasSharing = this.meeting.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE;
420
+
421
+ if (wasSharing) {
422
+ await this.stopLocalShareStream(SHARE_STOPPED_REASON.MEDIA_RECONNECTION);
423
+ }
424
+
372
425
  if (networkDisconnect) {
373
426
  try {
374
427
  await this.reconnectMercuryWebSocket();
@@ -385,29 +438,29 @@ export default class ReconnectionManager {
385
438
  }
386
439
  }
387
440
 
388
- const wasSharing = this.meeting.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE;
389
-
390
- try {
391
- LoggerProxy.logger.info(
392
- 'ReconnectionManager:index#executeReconnection --> Updating meeting data from server.'
393
- );
394
- await this.webex.meetings.syncMeetings();
395
- } catch (syncError) {
396
- LoggerProxy.logger.info(
397
- 'ReconnectionManager:index#executeReconnection --> Unable to sync meetings, reconnecting.',
398
- syncError
399
- );
400
- throw new NeedsRetryError(syncError);
441
+ if (!this.webex.credentials.isUnverifiedGuest) {
442
+ try {
443
+ LoggerProxy.logger.info(
444
+ 'ReconnectionManager:index#executeReconnection --> Updating meeting data from server.'
445
+ );
446
+ await this.webex.meetings.syncMeetings();
447
+ } catch (syncError) {
448
+ LoggerProxy.logger.info(
449
+ 'ReconnectionManager:index#executeReconnection --> Unable to sync meetings, reconnecting.',
450
+ syncError
451
+ );
452
+ throw new NeedsRetryError(syncError);
453
+ }
401
454
  }
402
455
 
403
456
  // TODO: try to improve this logic as the reconnection manager saves the instance of deleted meeting object
404
457
  // So that on rejoin it known what parametrs it was using
405
458
  if (!this.meeting || !this.webex.meetings.getMeetingByType(_ID_, this.meeting.id)) {
406
459
  LoggerProxy.logger.info(
407
- 'ReconnectionManager:index#executeReconnection --> Meeting got deleted due to inactivity or ended remotely '
460
+ 'ReconnectionManager:index#executeReconnection --> Meeting got deleted due to inactivity or ended remotely.'
408
461
  );
409
462
 
410
- throw new Error('Unable to rejoin a meeting already ended or inactive .');
463
+ throw new Error('Unable to rejoin a meeting already ended or inactive.');
411
464
  }
412
465
 
413
466
  LoggerProxy.logger.info(
@@ -427,14 +480,13 @@ export default class ReconnectionManager {
427
480
  const media = await this.reconnectMedia();
428
481
 
429
482
  LoggerProxy.logger.log(
430
- 'ReconnectionManager:index#executeReconnection --> Media reestablished'
483
+ 'ReconnectionManager:index#executeReconnection --> webRTC media connection renewed and local sdp offer sent'
431
484
  );
432
- this.status = RECONNECTION.STATE.COMPLETE;
433
485
 
434
486
  return media;
435
487
  } catch (error) {
436
488
  LoggerProxy.logger.error(
437
- 'ReconnectionManager:index#executeReconnection --> Media reestablishment failed'
489
+ 'ReconnectionManager:index#executeReconnection --> failed to renew webRTC media connection or initiate offer'
438
490
  );
439
491
  this.status = RECONNECTION.STATE.FAILURE;
440
492
 
@@ -454,32 +506,12 @@ export default class ReconnectionManager {
454
506
  LoggerProxy.logger.info(
455
507
  'ReconnectionManager:index#rejoinMeeting --> attemping meeting rejoin'
456
508
  );
457
- const previousCorrelationId = this.meeting.correlationId;
458
509
 
459
510
  await this.meeting.join({rejoin: true});
460
511
  LoggerProxy.logger.info('ReconnectionManager:index#rejoinMeeting --> meeting rejoined');
461
512
 
462
- RoapCollection.deleteSession(previousCorrelationId);
463
-
464
513
  if (wasSharing) {
465
- // Stop the share streams if user tried to rejoin
466
- Media.stopTracks(this.meeting.mediaProperties.shareTrack);
467
- this.meeting.isSharing = false;
468
- if (this.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE) {
469
- this.meeting.shareStatus = SHARE_STATUS.NO_SHARE;
470
- }
471
- this.meeting.mediaProperties.mediaDirection.sendShare = false;
472
- Trigger.trigger(
473
- this.meeting,
474
- {
475
- file: 'reconnection-manager/index',
476
- function: 'rejoinMeeting',
477
- },
478
- EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL,
479
- {
480
- reason: SHARE_STOPPED_REASON.MEETING_REJOIN,
481
- }
482
- );
514
+ await this.stopLocalShareStream(SHARE_STOPPED_REASON.MEETING_REJOIN);
483
515
  }
484
516
  } catch (joinError) {
485
517
  this.rejoinAttempts += 1;
@@ -520,33 +552,37 @@ export default class ReconnectionManager {
520
552
  * @private
521
553
  * @memberof ReconnectionManager
522
554
  */
523
- reconnectMedia() {
555
+ async reconnectMedia() {
556
+ LoggerProxy.logger.log('ReconnectionManager:index#reconnectMedia --> do turn discovery');
557
+
558
+ // do the TURN server discovery again and ignore reachability results since the TURN server might change
559
+ const turnServerResult = await this.meeting.roap.doTurnDiscovery(this.meeting, true, true);
560
+
561
+ const iceServers = [];
562
+
563
+ if (turnServerResult.turnServerInfo) {
564
+ iceServers.push({
565
+ urls: turnServerResult.turnServerInfo.url,
566
+ username: turnServerResult.turnServerInfo.username || '',
567
+ credential: turnServerResult.turnServerInfo.password || '',
568
+ });
569
+ }
570
+
524
571
  LoggerProxy.logger.log(
525
- 'ReconnectionManager:index#reconnectMedia --> Begin reestablishment of media'
572
+ 'ReconnectionManager:index#reconnectMedia --> renew webRTC media connection and send local sdp offer'
526
573
  );
527
574
 
528
- return ReconnectionManager.setupPeerConnection(this.meeting)
529
- .then(() =>
530
- Media.attachMedia(this.meeting.mediaProperties, {
531
- meetingId: this.meeting.id,
532
- remoteQualityLevel: this.meeting.mediaProperties.remoteQualityLevel,
533
- enableRtx: this.meeting.config.enableRtx,
534
- enableExtmap: this.meeting.config.enableExtmap,
535
- })
536
- )
537
- .then((peerConnection) => this.meeting.setRemoteStream(peerConnection))
538
- .then(() => {
539
- LoggerProxy.logger.log(
540
- 'ReconnectionManager:index#reconnectMedia --> Sending ROAP media request'
541
- );
575
+ await this.meeting.mediaProperties.webrtcMediaConnection.reconnect(iceServers);
542
576
 
543
- return this.meeting.roap.sendRoapMediaRequest({
544
- sdp: this.meeting.mediaProperties.peerConnection.sdp,
545
- roapSeq: this.meeting.roapSeq,
546
- meeting: this.meeting,
547
- reconnect: true,
548
- });
549
- });
577
+ // resend media requests
578
+ if (this.meeting.isMultistream) {
579
+ Object.values(this.meeting.mediaRequestManagers).forEach(
580
+ (mediaRequestManager: MediaRequestManager) => {
581
+ mediaRequestManager.clearPreviousRequests();
582
+ mediaRequestManager.commit();
583
+ }
584
+ );
585
+ }
550
586
  }
551
587
 
552
588
  /**
@@ -596,27 +632,4 @@ export default class ReconnectionManager {
596
632
  throw connectError;
597
633
  }
598
634
  }
599
-
600
- /**
601
- * @param {Meeting} meeting
602
- * @returns {undefined}
603
- * @private
604
- * @memberof ReconnectionManager
605
- */
606
- private static async setupPeerConnection(meeting: Meeting) {
607
- LoggerProxy.logger.log(
608
- 'ReconnectionManager:index#setupPeerConnection --> Begin resetting peer connection'
609
- );
610
- // close pcs, unset to null and create a new one with out closing any streams
611
- PeerConnectionManager.close(meeting.mediaProperties.peerConnection);
612
- meeting.mediaProperties.unsetPeerConnection();
613
-
614
- const turnServerResult = await meeting.roap.doTurnDiscovery(meeting, true);
615
-
616
- meeting.mediaProperties.reInitiatePeerconnection(turnServerResult.turnServerInfo);
617
- PeerConnectionManager.setPeerConnectionEvents(meeting);
618
-
619
- // update the peerconnection in the stats manager when ever we reconnect
620
- meeting.statsAnalyzer.updatePeerconnection(meeting.mediaProperties.peerConnection);
621
- }
622
635
  }
@@ -1,5 +1,5 @@
1
1
  import PermissionError from '../common/errors/permission';
2
- import {CONTROLS, HTTP_VERBS} from '../constants';
2
+ import {CONTROLS, HTTP_VERBS, SELF_POLICY} from '../constants';
3
3
  import MeetingRequest from '../meeting/request';
4
4
  import RecordingAction from './enums';
5
5
  import Util from './util';
@@ -28,6 +28,14 @@ export default class RecordingController {
28
28
  */
29
29
  private displayHints: Array<string> = [];
30
30
 
31
+ /**
32
+ * @instance
33
+ * @type {Object}
34
+ * @private
35
+ * @memberof RecordingInfo
36
+ */
37
+ private selfUserPolicies: Record<SELF_POLICY, boolean>;
38
+
31
39
  /**
32
40
  * @instance
33
41
  * @type {string}
@@ -81,7 +89,6 @@ export default class RecordingController {
81
89
 
82
90
  /**
83
91
  * @param {MeetingRequest} request
84
- * @param {LocusInfo} info
85
92
  * @returns {void}
86
93
  * @private
87
94
  * @memberof RecordingController
@@ -126,6 +133,16 @@ export default class RecordingController {
126
133
  this.displayHints = hints;
127
134
  }
128
135
 
136
+ /**
137
+ * @param {Object} selfUserPolicies
138
+ * @returns {void}
139
+ * @public
140
+ * @memberof RecordingController
141
+ */
142
+ public setUserPolicy(selfUserPolicies: Record<SELF_POLICY, boolean>) {
143
+ this.selfUserPolicies = selfUserPolicies;
144
+ }
145
+
129
146
  /**
130
147
  * @param {string} id
131
148
  * @returns {void}
@@ -264,7 +281,7 @@ export default class RecordingController {
264
281
  );
265
282
 
266
283
  // assumes action is proper cased (i.e., Example)
267
- if (Util?.[`canUser${action}`](this.displayHints)) {
284
+ if (Util?.[`canUser${action}`](this.displayHints, this.selfUserPolicies)) {
268
285
  if (this.serviceUrl) {
269
286
  return this.recordingService(action);
270
287
  }
@@ -1,17 +1,34 @@
1
- import {DISPLAY_HINTS} from '../constants';
1
+ import {DISPLAY_HINTS, SELF_POLICY} from '../constants';
2
2
  import RecordingAction from './enums';
3
+ import MeetingUtil from '../meeting/util';
3
4
 
4
- const canUserStart = (displayHints: Array<string>): boolean =>
5
- displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_START);
5
+ const canUserStart = (
6
+ displayHints: Array<string>,
7
+ userPolicies: Record<SELF_POLICY, boolean>
8
+ ): boolean =>
9
+ displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_START) &&
10
+ MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
6
11
 
7
- const canUserPause = (displayHints: Array<string>): boolean =>
8
- displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_PAUSE);
12
+ const canUserPause = (
13
+ displayHints: Array<string>,
14
+ userPolicies: Record<SELF_POLICY, boolean>
15
+ ): boolean =>
16
+ displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_PAUSE) &&
17
+ MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
9
18
 
10
- const canUserResume = (displayHints: Array<string>): boolean =>
11
- displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_RESUME);
19
+ const canUserResume = (
20
+ displayHints: Array<string>,
21
+ userPolicies: Record<SELF_POLICY, boolean>
22
+ ): boolean =>
23
+ displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_RESUME) &&
24
+ MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
12
25
 
13
- const canUserStop = (displayHints: Array<string>): boolean =>
14
- displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_STOP);
26
+ const canUserStop = (
27
+ displayHints: Array<string>,
28
+ userPolicies: Record<SELF_POLICY, boolean>
29
+ ): boolean =>
30
+ displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_STOP) &&
31
+ MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
15
32
 
16
33
  const extractLocusId = (url: string) => {
17
34
  return url?.split('/').pop();