@webex/plugin-meetings 3.0.0-beta.1 → 3.0.0-beta.104

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 (548) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/annotation/annotation.types.js +7 -0
  4. package/dist/annotation/annotation.types.js.map +1 -0
  5. package/dist/annotation/constants.js +48 -0
  6. package/dist/annotation/constants.js.map +1 -0
  7. package/dist/annotation/index.js +357 -0
  8. package/dist/annotation/index.js.map +1 -0
  9. package/dist/breakouts/breakout.js +176 -0
  10. package/dist/breakouts/breakout.js.map +1 -0
  11. package/dist/breakouts/collection.js +23 -0
  12. package/dist/breakouts/collection.js.map +1 -0
  13. package/dist/breakouts/edit-lock-error.js +52 -0
  14. package/dist/breakouts/edit-lock-error.js.map +1 -0
  15. package/dist/breakouts/events.js +43 -0
  16. package/dist/breakouts/events.js.map +1 -0
  17. package/dist/breakouts/index.js +919 -0
  18. package/dist/breakouts/index.js.map +1 -0
  19. package/dist/breakouts/request.js +78 -0
  20. package/dist/breakouts/request.js.map +1 -0
  21. package/dist/breakouts/utils.js +67 -0
  22. package/dist/breakouts/utils.js.map +1 -0
  23. package/dist/common/browser-detection.js +1 -20
  24. package/dist/common/browser-detection.js.map +1 -1
  25. package/dist/common/collection.js +5 -20
  26. package/dist/common/collection.js.map +1 -1
  27. package/dist/common/config.js +0 -7
  28. package/dist/common/config.js.map +1 -1
  29. package/dist/common/errors/captcha-error.js +10 -24
  30. package/dist/common/errors/captcha-error.js.map +1 -1
  31. package/dist/common/errors/intent-to-join.js +11 -24
  32. package/dist/common/errors/intent-to-join.js.map +1 -1
  33. package/dist/common/errors/join-meeting.js +12 -25
  34. package/dist/common/errors/join-meeting.js.map +1 -1
  35. package/dist/common/errors/media.js +10 -24
  36. package/dist/common/errors/media.js.map +1 -1
  37. package/dist/common/errors/parameter.js +5 -33
  38. package/dist/common/errors/parameter.js.map +1 -1
  39. package/dist/common/errors/password-error.js +10 -24
  40. package/dist/common/errors/password-error.js.map +1 -1
  41. package/dist/common/errors/permission.js +9 -23
  42. package/dist/common/errors/permission.js.map +1 -1
  43. package/dist/common/errors/reconnection-in-progress.js +0 -17
  44. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  45. package/dist/common/errors/reconnection.js +10 -24
  46. package/dist/common/errors/reconnection.js.map +1 -1
  47. package/dist/common/errors/stats.js +10 -24
  48. package/dist/common/errors/stats.js.map +1 -1
  49. package/dist/common/errors/webex-errors.js +10 -69
  50. package/dist/common/errors/webex-errors.js.map +1 -1
  51. package/dist/common/errors/webex-meetings-error.js +5 -25
  52. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  53. package/dist/common/events/events-scope.js +0 -22
  54. package/dist/common/events/events-scope.js.map +1 -1
  55. package/dist/common/events/events.js +0 -23
  56. package/dist/common/events/events.js.map +1 -1
  57. package/dist/common/events/trigger-proxy.js +0 -12
  58. package/dist/common/events/trigger-proxy.js.map +1 -1
  59. package/dist/common/events/util.js +0 -15
  60. package/dist/common/events/util.js.map +1 -1
  61. package/dist/common/logs/logger-config.js +0 -4
  62. package/dist/common/logs/logger-config.js.map +1 -1
  63. package/dist/common/logs/logger-proxy.js +1 -8
  64. package/dist/common/logs/logger-proxy.js.map +1 -1
  65. package/dist/common/logs/request.js +37 -60
  66. package/dist/common/logs/request.js.map +1 -1
  67. package/dist/common/queue.js +4 -14
  68. package/dist/common/queue.js.map +1 -1
  69. package/dist/config.js +7 -6
  70. package/dist/config.js.map +1 -1
  71. package/dist/constants.js +184 -122
  72. package/dist/constants.js.map +1 -1
  73. package/dist/controls-options-manager/constants.js +14 -0
  74. package/dist/controls-options-manager/constants.js.map +1 -0
  75. package/dist/controls-options-manager/enums.js +25 -0
  76. package/dist/controls-options-manager/enums.js.map +1 -0
  77. package/dist/controls-options-manager/index.js +297 -0
  78. package/dist/controls-options-manager/index.js.map +1 -0
  79. package/dist/controls-options-manager/types.js +7 -0
  80. package/dist/controls-options-manager/types.js.map +1 -0
  81. package/dist/controls-options-manager/util.js +250 -0
  82. package/dist/controls-options-manager/util.js.map +1 -0
  83. package/dist/index.js +72 -17
  84. package/dist/index.js.map +1 -1
  85. package/dist/locus-info/controlsUtils.js +56 -29
  86. package/dist/locus-info/controlsUtils.js.map +1 -1
  87. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  88. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  89. package/dist/locus-info/fullState.js +0 -15
  90. package/dist/locus-info/fullState.js.map +1 -1
  91. package/dist/locus-info/hostUtils.js +4 -12
  92. package/dist/locus-info/hostUtils.js.map +1 -1
  93. package/dist/locus-info/index.js +362 -208
  94. package/dist/locus-info/index.js.map +1 -1
  95. package/dist/locus-info/infoUtils.js +3 -37
  96. package/dist/locus-info/infoUtils.js.map +1 -1
  97. package/dist/locus-info/mediaSharesUtils.js +12 -38
  98. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  99. package/dist/locus-info/parser.js +92 -118
  100. package/dist/locus-info/parser.js.map +1 -1
  101. package/dist/locus-info/selfUtils.js +99 -91
  102. package/dist/locus-info/selfUtils.js.map +1 -1
  103. package/dist/media/index.js +113 -337
  104. package/dist/media/index.js.map +1 -1
  105. package/dist/media/properties.js +96 -135
  106. package/dist/media/properties.js.map +1 -1
  107. package/dist/media/util.js +1 -35
  108. package/dist/media/util.js.map +1 -1
  109. package/dist/mediaQualityMetrics/config.js +505 -495
  110. package/dist/mediaQualityMetrics/config.js.map +1 -1
  111. package/dist/meeting/in-meeting-actions.js +59 -14
  112. package/dist/meeting/in-meeting-actions.js.map +1 -1
  113. package/dist/meeting/index.js +2909 -2398
  114. package/dist/meeting/index.js.map +1 -1
  115. package/dist/meeting/muteState.js +257 -112
  116. package/dist/meeting/muteState.js.map +1 -1
  117. package/dist/meeting/request.js +330 -264
  118. package/dist/meeting/request.js.map +1 -1
  119. package/dist/meeting/request.type.js +7 -0
  120. package/dist/meeting/request.type.js.map +1 -0
  121. package/dist/meeting/state.js +21 -31
  122. package/dist/meeting/state.js.map +1 -1
  123. package/dist/meeting/util.js +63 -261
  124. package/dist/meeting/util.js.map +1 -1
  125. package/dist/meeting-info/collection.js +6 -25
  126. package/dist/meeting-info/collection.js.map +1 -1
  127. package/dist/meeting-info/index.js +14 -32
  128. package/dist/meeting-info/index.js.map +1 -1
  129. package/dist/meeting-info/meeting-info-v2.js +273 -280
  130. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  131. package/dist/meeting-info/request.js +3 -15
  132. package/dist/meeting-info/request.js.map +1 -1
  133. package/dist/meeting-info/util.js +98 -183
  134. package/dist/meeting-info/util.js.map +1 -1
  135. package/dist/meeting-info/utilv2.js +155 -232
  136. package/dist/meeting-info/utilv2.js.map +1 -1
  137. package/dist/meetings/collection.js +26 -19
  138. package/dist/meetings/collection.js.map +1 -1
  139. package/dist/meetings/index.js +741 -548
  140. package/dist/meetings/index.js.map +1 -1
  141. package/dist/meetings/request.js +26 -41
  142. package/dist/meetings/request.js.map +1 -1
  143. package/dist/meetings/util.js +194 -149
  144. package/dist/meetings/util.js.map +1 -1
  145. package/dist/member/index.js +100 -85
  146. package/dist/member/index.js.map +1 -1
  147. package/dist/member/types.js +15 -0
  148. package/dist/member/types.js.map +1 -0
  149. package/dist/member/util.js +90 -68
  150. package/dist/member/util.js.map +1 -1
  151. package/dist/members/collection.js +13 -12
  152. package/dist/members/collection.js.map +1 -1
  153. package/dist/members/index.js +227 -188
  154. package/dist/members/index.js.map +1 -1
  155. package/dist/members/request.js +54 -39
  156. package/dist/members/request.js.map +1 -1
  157. package/dist/members/types.js +15 -0
  158. package/dist/members/types.js.map +1 -0
  159. package/dist/members/util.js +107 -44
  160. package/dist/members/util.js.map +1 -1
  161. package/dist/metrics/config.js +5 -14
  162. package/dist/metrics/config.js.map +1 -1
  163. package/dist/metrics/constants.js +3 -7
  164. package/dist/metrics/constants.js.map +1 -1
  165. package/dist/metrics/index.js +67 -159
  166. package/dist/metrics/index.js.map +1 -1
  167. package/dist/multistream/mediaRequestManager.js +250 -0
  168. package/dist/multistream/mediaRequestManager.js.map +1 -0
  169. package/dist/multistream/receiveSlot.js +202 -0
  170. package/dist/multistream/receiveSlot.js.map +1 -0
  171. package/dist/multistream/receiveSlotManager.js +176 -0
  172. package/dist/multistream/receiveSlotManager.js.map +1 -0
  173. package/dist/multistream/remoteMedia.js +270 -0
  174. package/dist/multistream/remoteMedia.js.map +1 -0
  175. package/dist/multistream/remoteMediaGroup.js +209 -0
  176. package/dist/multistream/remoteMediaGroup.js.map +1 -0
  177. package/dist/multistream/remoteMediaManager.js +1137 -0
  178. package/dist/multistream/remoteMediaManager.js.map +1 -0
  179. package/dist/networkQualityMonitor/index.js +40 -59
  180. package/dist/networkQualityMonitor/index.js.map +1 -1
  181. package/dist/personal-meeting-room/index.js +21 -45
  182. package/dist/personal-meeting-room/index.js.map +1 -1
  183. package/dist/personal-meeting-room/request.js +1 -31
  184. package/dist/personal-meeting-room/request.js.map +1 -1
  185. package/dist/personal-meeting-room/util.js +0 -13
  186. package/dist/personal-meeting-room/util.js.map +1 -1
  187. package/dist/reachability/index.js +192 -191
  188. package/dist/reachability/index.js.map +1 -1
  189. package/dist/reachability/request.js +15 -23
  190. package/dist/reachability/request.js.map +1 -1
  191. package/dist/reactions/constants.js +13 -0
  192. package/dist/reactions/constants.js.map +1 -0
  193. package/dist/reactions/reactions.js +109 -0
  194. package/dist/reactions/reactions.js.map +1 -0
  195. package/dist/reactions/reactions.type.js +36 -0
  196. package/dist/reactions/reactions.type.js.map +1 -0
  197. package/dist/reconnection-manager/index.js +386 -527
  198. package/dist/reconnection-manager/index.js.map +1 -1
  199. package/dist/recording-controller/enums.js +17 -0
  200. package/dist/recording-controller/enums.js.map +1 -0
  201. package/dist/recording-controller/index.js +343 -0
  202. package/dist/recording-controller/index.js.map +1 -0
  203. package/dist/recording-controller/util.js +63 -0
  204. package/dist/recording-controller/util.js.map +1 -0
  205. package/dist/roap/index.js +84 -286
  206. package/dist/roap/index.js.map +1 -1
  207. package/dist/roap/request.js +138 -238
  208. package/dist/roap/request.js.map +1 -1
  209. package/dist/roap/turnDiscovery.js +164 -102
  210. package/dist/roap/turnDiscovery.js.map +1 -1
  211. package/dist/statsAnalyzer/global.js +1 -93
  212. package/dist/statsAnalyzer/global.js.map +1 -1
  213. package/dist/statsAnalyzer/index.js +399 -470
  214. package/dist/statsAnalyzer/index.js.map +1 -1
  215. package/dist/statsAnalyzer/mqaUtil.js +143 -87
  216. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  217. package/dist/transcription/index.js +22 -47
  218. package/dist/transcription/index.js.map +1 -1
  219. package/dist/types/annotation/annotation.types.d.ts +34 -0
  220. package/dist/types/annotation/constants.d.ts +31 -0
  221. package/dist/types/annotation/index.d.ts +124 -0
  222. package/dist/types/breakouts/breakout.d.ts +8 -0
  223. package/dist/types/breakouts/collection.d.ts +5 -0
  224. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  225. package/dist/types/breakouts/events.d.ts +2 -0
  226. package/dist/types/breakouts/index.d.ts +5 -0
  227. package/dist/types/breakouts/request.d.ts +22 -0
  228. package/dist/types/breakouts/utils.d.ts +15 -0
  229. package/dist/types/common/browser-detection.d.ts +9 -0
  230. package/dist/types/common/collection.d.ts +48 -0
  231. package/dist/types/common/config.d.ts +2 -0
  232. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  233. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  234. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  235. package/dist/types/common/errors/media.d.ts +15 -0
  236. package/dist/types/common/errors/parameter.d.ts +15 -0
  237. package/dist/types/common/errors/password-error.d.ts +15 -0
  238. package/dist/types/common/errors/permission.d.ts +14 -0
  239. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  240. package/dist/types/common/errors/reconnection.d.ts +15 -0
  241. package/dist/types/common/errors/stats.d.ts +15 -0
  242. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  243. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  244. package/dist/types/common/events/events-scope.d.ts +17 -0
  245. package/dist/types/common/events/events.d.ts +12 -0
  246. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  247. package/dist/types/common/events/util.d.ts +2 -0
  248. package/dist/types/common/logs/logger-config.d.ts +2 -0
  249. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  250. package/dist/types/common/logs/request.d.ts +34 -0
  251. package/dist/types/common/queue.d.ts +32 -0
  252. package/dist/types/config.d.ts +78 -0
  253. package/dist/types/constants.d.ts +968 -0
  254. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  255. package/dist/types/controls-options-manager/enums.d.ts +13 -0
  256. package/dist/types/controls-options-manager/index.d.ts +136 -0
  257. package/dist/types/controls-options-manager/types.d.ts +37 -0
  258. package/dist/types/controls-options-manager/util.d.ts +1 -0
  259. package/dist/types/index.d.ts +7 -0
  260. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  261. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  262. package/dist/types/locus-info/fullState.d.ts +2 -0
  263. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  264. package/dist/types/locus-info/index.d.ts +315 -0
  265. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  266. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  267. package/dist/types/locus-info/parser.d.ts +212 -0
  268. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  269. package/dist/types/media/index.d.ts +34 -0
  270. package/dist/types/media/properties.d.ts +108 -0
  271. package/dist/types/media/util.d.ts +2 -0
  272. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  273. package/dist/types/meeting/in-meeting-actions.d.ts +129 -0
  274. package/dist/types/meeting/index.d.ts +1748 -0
  275. package/dist/types/meeting/muteState.d.ts +185 -0
  276. package/dist/types/meeting/request.d.ts +275 -0
  277. package/dist/types/meeting/request.type.d.ts +11 -0
  278. package/dist/types/meeting/state.d.ts +9 -0
  279. package/dist/types/meeting/util.d.ts +2 -0
  280. package/dist/types/meeting-info/collection.d.ts +20 -0
  281. package/dist/types/meeting-info/index.d.ts +57 -0
  282. package/dist/types/meeting-info/meeting-info-v2.d.ts +112 -0
  283. package/dist/types/meeting-info/request.d.ts +22 -0
  284. package/dist/types/meeting-info/util.d.ts +2 -0
  285. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  286. package/dist/types/meetings/collection.d.ts +31 -0
  287. package/dist/types/meetings/index.d.ts +345 -0
  288. package/dist/types/meetings/request.d.ts +27 -0
  289. package/dist/types/meetings/util.d.ts +18 -0
  290. package/dist/types/member/index.d.ts +156 -0
  291. package/dist/types/member/types.d.ts +21 -0
  292. package/dist/types/member/util.d.ts +2 -0
  293. package/dist/types/members/collection.d.ts +29 -0
  294. package/dist/types/members/index.d.ts +353 -0
  295. package/dist/types/members/request.d.ts +69 -0
  296. package/dist/types/members/types.d.ts +24 -0
  297. package/dist/types/members/util.d.ts +2 -0
  298. package/dist/types/metrics/config.d.ts +172 -0
  299. package/dist/types/metrics/constants.d.ts +54 -0
  300. package/dist/types/metrics/index.d.ts +152 -0
  301. package/dist/types/multistream/mediaRequestManager.d.ts +101 -0
  302. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  303. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  304. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  305. package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
  306. package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
  307. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  308. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  309. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  310. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  311. package/dist/types/reachability/index.d.ts +152 -0
  312. package/dist/types/reachability/request.d.ts +37 -0
  313. package/dist/types/reactions/constants.d.ts +3 -0
  314. package/dist/types/reactions/reactions.d.ts +4 -0
  315. package/dist/types/reactions/reactions.type.d.ts +52 -0
  316. package/dist/types/reconnection-manager/index.d.ts +126 -0
  317. package/dist/types/recording-controller/enums.d.ts +7 -0
  318. package/dist/types/recording-controller/index.d.ts +193 -0
  319. package/dist/types/recording-controller/util.d.ts +13 -0
  320. package/dist/types/roap/index.d.ts +77 -0
  321. package/dist/types/roap/request.d.ts +38 -0
  322. package/dist/types/roap/turnDiscovery.d.ts +88 -0
  323. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  324. package/dist/types/statsAnalyzer/index.d.ts +200 -0
  325. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  326. package/dist/types/transcription/index.d.ts +64 -0
  327. package/internal-README.md +7 -6
  328. package/package.json +29 -21
  329. package/src/annotation/annotation.types.ts +41 -0
  330. package/src/annotation/constants.ts +36 -0
  331. package/src/annotation/index.ts +339 -0
  332. package/src/breakouts/README.md +219 -0
  333. package/src/breakouts/breakout.ts +141 -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 +37 -0
  337. package/src/breakouts/index.ts +823 -0
  338. package/src/breakouts/request.ts +55 -0
  339. package/src/breakouts/utils.ts +57 -0
  340. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  341. package/src/common/collection.ts +9 -7
  342. package/src/common/{config.js → config.ts} +1 -1
  343. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  344. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  345. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  346. package/src/common/errors/{media.js → media.ts} +11 -7
  347. package/src/common/errors/parameter.ts +11 -7
  348. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  349. package/src/common/errors/{permission.js → permission.ts} +10 -6
  350. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  351. package/src/common/errors/{stats.js → stats.ts} +11 -7
  352. package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -25
  353. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  354. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  355. package/src/common/events/{events.js → events.ts} +5 -1
  356. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  357. package/src/common/events/{util.js → util.ts} +2 -3
  358. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  359. package/src/common/logs/logger-proxy.ts +44 -0
  360. package/src/common/logs/{request.js → request.ts} +22 -9
  361. package/src/common/queue.ts +1 -2
  362. package/src/{config.js → config.ts} +18 -12
  363. package/src/constants.ts +256 -183
  364. package/src/controls-options-manager/constants.ts +5 -0
  365. package/src/controls-options-manager/enums.ts +16 -0
  366. package/src/controls-options-manager/index.ts +278 -0
  367. package/src/controls-options-manager/types.ts +49 -0
  368. package/src/controls-options-manager/util.ts +229 -0
  369. package/src/index.ts +33 -0
  370. package/src/locus-info/controlsUtils.ts +169 -0
  371. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  372. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  373. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  374. package/src/locus-info/{index.js → index.ts} +331 -80
  375. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  376. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
  377. package/src/locus-info/{parser.js → parser.ts} +67 -79
  378. package/src/locus-info/{selfUtils.js → selfUtils.ts} +196 -67
  379. package/src/media/index.ts +488 -0
  380. package/src/media/{properties.js → properties.ts} +67 -54
  381. package/src/media/util.ts +16 -0
  382. package/src/mediaQualityMetrics/config.ts +384 -0
  383. package/src/meeting/in-meeting-actions.ts +123 -3
  384. package/src/meeting/{index.js → index.ts} +3334 -1775
  385. package/src/meeting/muteState.ts +526 -0
  386. package/src/meeting/{request.js → request.ts} +350 -142
  387. package/src/meeting/request.type.ts +13 -0
  388. package/src/meeting/{state.js → state.ts} +50 -35
  389. package/src/meeting/{util.js → util.ts} +126 -159
  390. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  391. package/src/meeting-info/{index.js → index.ts} +42 -36
  392. package/src/meeting-info/meeting-info-v2.ts +345 -0
  393. package/src/meeting-info/{request.js → request.ts} +14 -4
  394. package/src/meeting-info/{util.js → util.ts} +60 -51
  395. package/src/meeting-info/{utilv2.js → utilv2.ts} +76 -60
  396. package/src/meetings/{collection.js → collection.ts} +26 -3
  397. package/src/meetings/index.ts +1394 -0
  398. package/src/meetings/{request.js → request.ts} +34 -25
  399. package/src/meetings/util.ts +288 -0
  400. package/src/member/{index.js → index.ts} +124 -56
  401. package/src/member/types.ts +24 -0
  402. package/src/member/{util.js → util.ts} +105 -25
  403. package/src/members/{collection.js → collection.ts} +10 -2
  404. package/src/members/{index.js → index.ts} +359 -139
  405. package/src/members/request.ts +215 -0
  406. package/src/members/types.ts +28 -0
  407. package/src/members/{util.js → util.ts} +145 -54
  408. package/src/metrics/{config.js → config.ts} +256 -92
  409. package/src/metrics/{constants.js → constants.ts} +1 -6
  410. package/src/metrics/{index.js → index.ts} +116 -97
  411. package/src/multistream/mediaRequestManager.ts +324 -0
  412. package/src/multistream/receiveSlot.ts +184 -0
  413. package/src/multistream/receiveSlotManager.ts +166 -0
  414. package/src/multistream/remoteMedia.ts +254 -0
  415. package/src/multistream/remoteMediaGroup.ts +225 -0
  416. package/src/multistream/remoteMediaManager.ts +1075 -0
  417. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  418. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  419. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  420. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  421. package/src/reachability/{index.js → index.ts} +157 -94
  422. package/src/reachability/request.ts +46 -35
  423. package/src/reactions/constants.ts +4 -0
  424. package/src/reactions/reactions.ts +104 -0
  425. package/src/reactions/reactions.type.ts +62 -0
  426. package/src/reconnection-manager/{index.js → index.ts} +261 -163
  427. package/src/recording-controller/enums.ts +8 -0
  428. package/src/recording-controller/index.ts +315 -0
  429. package/src/recording-controller/util.ts +58 -0
  430. package/src/roap/index.ts +241 -0
  431. package/src/roap/request.ts +172 -0
  432. package/src/roap/turnDiscovery.ts +127 -53
  433. package/src/statsAnalyzer/global.ts +37 -0
  434. package/src/statsAnalyzer/index.ts +1273 -0
  435. package/src/statsAnalyzer/mqaUtil.ts +291 -0
  436. package/src/transcription/{index.js → index.ts} +46 -39
  437. package/test/integration/spec/converged-space-meetings.js +177 -0
  438. package/test/integration/spec/journey.js +666 -464
  439. package/test/integration/spec/space-meeting.js +321 -206
  440. package/test/integration/spec/transcription.js +7 -8
  441. package/test/unit/spec/annotation/index.ts +435 -0
  442. package/test/unit/spec/breakouts/breakout.ts +184 -0
  443. package/test/unit/spec/breakouts/collection.ts +15 -0
  444. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  445. package/test/unit/spec/breakouts/events.ts +77 -0
  446. package/test/unit/spec/breakouts/index.ts +1504 -0
  447. package/test/unit/spec/breakouts/request.ts +104 -0
  448. package/test/unit/spec/breakouts/utils.js +72 -0
  449. package/test/unit/spec/common/browser-detection.js +9 -28
  450. package/test/unit/spec/controls-options-manager/index.js +287 -0
  451. package/test/unit/spec/controls-options-manager/util.js +403 -0
  452. package/test/unit/spec/fixture/locus.js +92 -90
  453. package/test/unit/spec/locus-info/controlsUtils.js +177 -32
  454. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  455. package/test/unit/spec/locus-info/index.js +493 -3
  456. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  457. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  458. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  459. package/test/unit/spec/locus-info/parser.js +3 -9
  460. package/test/unit/spec/locus-info/selfConstant.js +110 -103
  461. package/test/unit/spec/locus-info/selfUtils.js +236 -12
  462. package/test/unit/spec/media/index.ts +303 -0
  463. package/test/unit/spec/media/properties.ts +73 -82
  464. package/test/unit/spec/meeting/in-meeting-actions.ts +58 -3
  465. package/test/unit/spec/meeting/index.js +3127 -975
  466. package/test/unit/spec/meeting/muteState.js +375 -70
  467. package/test/unit/spec/meeting/request.js +217 -43
  468. package/test/unit/spec/meeting/utils.js +205 -163
  469. package/test/unit/spec/meeting-info/meetinginfov2.js +268 -74
  470. package/test/unit/spec/meeting-info/request.js +7 -9
  471. package/test/unit/spec/meeting-info/util.js +11 -12
  472. package/test/unit/spec/meeting-info/utilv2.js +131 -74
  473. package/test/unit/spec/meetings/collection.js +15 -1
  474. package/test/unit/spec/meetings/index.js +1052 -333
  475. package/test/unit/spec/meetings/utils.js +163 -14
  476. package/test/unit/spec/member/index.js +24 -1
  477. package/test/unit/spec/member/util.js +359 -32
  478. package/test/unit/spec/members/index.js +547 -37
  479. package/test/unit/spec/members/request.js +76 -20
  480. package/test/unit/spec/members/utils.js +191 -4
  481. package/test/unit/spec/metrics/index.js +46 -20
  482. package/test/unit/spec/multistream/mediaRequestManager.ts +1060 -0
  483. package/test/unit/spec/multistream/receiveSlot.ts +163 -0
  484. package/test/unit/spec/multistream/receiveSlotManager.ts +203 -0
  485. package/test/unit/spec/multistream/remoteMedia.ts +255 -0
  486. package/test/unit/spec/multistream/remoteMediaGroup.ts +396 -0
  487. package/test/unit/spec/multistream/remoteMediaManager.ts +1793 -0
  488. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  489. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  490. package/test/unit/spec/reachability/index.ts +176 -27
  491. package/test/unit/spec/reachability/request.js +66 -0
  492. package/test/unit/spec/reconnection-manager/index.js +106 -9
  493. package/test/unit/spec/recording-controller/index.js +231 -0
  494. package/test/unit/spec/recording-controller/util.js +102 -0
  495. package/test/unit/spec/roap/index.ts +78 -45
  496. package/test/unit/spec/roap/request.ts +217 -0
  497. package/test/unit/spec/roap/turnDiscovery.ts +93 -49
  498. package/test/unit/spec/stats-analyzer/index.js +118 -65
  499. package/test/utils/cmr.js +44 -42
  500. package/test/utils/constants.js +9 -0
  501. package/test/utils/integrationTestUtils.js +64 -0
  502. package/test/utils/testUtils.js +63 -99
  503. package/test/utils/webex-config.js +22 -18
  504. package/test/utils/webex-test-users.js +57 -50
  505. package/tsconfig.json +6 -0
  506. package/dist/meeting/effectsState.js +0 -327
  507. package/dist/meeting/effectsState.js.map +0 -1
  508. package/dist/peer-connection-manager/index.js +0 -794
  509. package/dist/peer-connection-manager/index.js.map +0 -1
  510. package/dist/peer-connection-manager/util.js +0 -124
  511. package/dist/peer-connection-manager/util.js.map +0 -1
  512. package/dist/roap/collection.js +0 -73
  513. package/dist/roap/collection.js.map +0 -1
  514. package/dist/roap/handler.js +0 -337
  515. package/dist/roap/handler.js.map +0 -1
  516. package/dist/roap/state.js +0 -164
  517. package/dist/roap/state.js.map +0 -1
  518. package/dist/roap/util.js +0 -102
  519. package/dist/roap/util.js.map +0 -1
  520. package/src/common/logs/logger-proxy.js +0 -33
  521. package/src/index.js +0 -15
  522. package/src/locus-info/controlsUtils.js +0 -102
  523. package/src/media/index.js +0 -593
  524. package/src/media/util.js +0 -38
  525. package/src/mediaQualityMetrics/config.js +0 -382
  526. package/src/meeting/effectsState.js +0 -205
  527. package/src/meeting/muteState.js +0 -318
  528. package/src/meeting-info/meeting-info-v2.js +0 -255
  529. package/src/meetings/index.js +0 -986
  530. package/src/meetings/util.js +0 -176
  531. package/src/members/request.js +0 -131
  532. package/src/peer-connection-manager/index.js +0 -723
  533. package/src/peer-connection-manager/util.ts +0 -117
  534. package/src/roap/collection.js +0 -63
  535. package/src/roap/handler.js +0 -252
  536. package/src/roap/index.js +0 -380
  537. package/src/roap/request.js +0 -198
  538. package/src/roap/state.js +0 -149
  539. package/src/roap/util.js +0 -93
  540. package/src/statsAnalyzer/global.js +0 -131
  541. package/src/statsAnalyzer/index.js +0 -1020
  542. package/src/statsAnalyzer/mqaUtil.js +0 -173
  543. package/test/unit/spec/meeting/effectsState.js +0 -293
  544. package/test/unit/spec/peerconnection-manager/index.js +0 -188
  545. package/test/unit/spec/peerconnection-manager/utils.js +0 -48
  546. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  547. package/test/unit/spec/roap/util.js +0 -30
  548. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
package/src/roap/index.js DELETED
@@ -1,380 +0,0 @@
1
- import {StatelessWebexPlugin} from '@webex/webex-core';
2
-
3
- import {ROAP} from '../constants';
4
- import LoggerProxy from '../common/logs/logger-proxy';
5
- import MeetingUtil from '../meeting/util';
6
-
7
- import RoapHandler from './handler';
8
- import RoapRequest from './request';
9
- import RoapCollection from './collection';
10
- import TurnDiscovery from './turnDiscovery';
11
-
12
- /**
13
- * Roap options
14
- * @typedef {Object} RoapOptions
15
- * @property {String} sdp
16
- * @property {Meeting} meeting
17
- * @property {Number} roapSeq
18
- * @property {Boolean} reconnect
19
- */
20
-
21
- /**
22
- * @typedef {Object} SeqOptions
23
- * @property {String} correlationId
24
- * @property {String} mediaId
25
- * @property {Number} seq
26
- */
27
-
28
- /**
29
- * @class Roap
30
- * @export
31
- * @private
32
- */
33
- export default class Roap extends StatelessWebexPlugin {
34
- /**
35
- *
36
- * @param {Object} attrs
37
- * @param {Object} options
38
- */
39
- constructor(attrs, options) {
40
- super({}, options);
41
- /**
42
- * @instance
43
- * @type {Object}
44
- * @private
45
- * @memberof Roap
46
- */
47
- this.attrs = attrs;
48
- /**
49
- * @instance
50
- * @type {Object}
51
- * @private
52
- * @memberof Roap
53
- */
54
- this.options = options;
55
- /**
56
- * The Roap Process State Handler
57
- * @instance
58
- * @type {RoapHandler}
59
- * @private
60
- * @memberof Roap
61
- */
62
- this.roapHandler = new RoapHandler(this.attrs, this.options, this.sendRoapOK.bind(this), this.sendRoapAnswer.bind(this), this.roapFinished.bind(this));
63
- /**
64
- * The Roap Request Server Proxy Object
65
- * @instance
66
- * @type {RoapRequest}
67
- * @private
68
- * @memberof Roap
69
- */
70
- this.roapRequest = new RoapRequest({}, options);
71
- /**
72
- * The last roap offer sent to server and acked
73
- * @instance
74
- * @type {Object}
75
- * @private
76
- * @memberof Roap
77
- */
78
- this.lastRoapOffer = {};
79
-
80
- this.turnDiscovery = new TurnDiscovery(this.roapRequest);
81
- }
82
-
83
- /**
84
- * Starts listening to mercury events for Roap messages
85
- * @param {object} data event object
86
- * @returns {Promise}
87
- * @private
88
- * @memberof Roap
89
- */
90
- roapEvent(data) {
91
- const msg = data.message;
92
- const {correlationId} = data;
93
-
94
- LoggerProxy.logger.log(`Roap:index#roapEvent --> Received Roap Message [${JSON.stringify(msg, null, 2)}]`);
95
-
96
- if (msg.messageType === ROAP.ROAP_TYPES.TURN_DISCOVERY_RESPONSE) {
97
- // turn discovery is not part of normal roap protocol and so we are not handling it
98
- // through the usual roap state machine
99
- this.turnDiscovery.handleTurnDiscoveryResponse(msg);
100
- }
101
- else {
102
- this.roapHandler.submit({
103
- type: ROAP.RECEIVE_ROAP_MSG,
104
- msg,
105
- correlationId
106
- });
107
- }
108
- }
109
-
110
- /**
111
- *
112
- * @param {String} correlationId correlation id of a meeting
113
- * @param {Number} seq ROAP sequence number
114
- * @returns {Promise}
115
- * @private
116
- * @memberof Roap
117
- */
118
- stop(correlationId, seq) {
119
- this.roapHandler.submit({
120
- type: ROAP.RECEIVE_CALL_LEAVE,
121
- seq,
122
- correlationId
123
- });
124
-
125
- return Promise.resolve();
126
- }
127
-
128
- /**
129
- *
130
- * @param {SeqOptions} options
131
- * @returns {null}
132
- * @private
133
- * @memberof Roap
134
- */
135
- sendRoapOK(options) {
136
- return Promise.resolve().then(() => {
137
- const meeting = this.webex.meetings.meetingCollection.getByKey('correlationId', options.correlationId);
138
- const roapMessage = {
139
- messageType: ROAP.ROAP_TYPES.OK,
140
- version: ROAP.ROAP_VERSION,
141
- seq: options.seq
142
- };
143
-
144
- LoggerProxy.logger.log(`Roap:index#sendRoapOK --> ROAP OK sending with seq ${options.seq}`);
145
-
146
- return this.roapRequest
147
- .sendRoap({
148
- roapMessage,
149
- locusSelfUrl: meeting.selfUrl,
150
- mediaId: options.mediaId,
151
- correlationId: options.correlationId,
152
- audioMuted: meeting.isAudioMuted(),
153
- videoMuted: meeting.isVideoMuted(),
154
- meetingId: meeting.id
155
- })
156
- .then(() => {
157
- this.roapHandler.submit({
158
- type: ROAP.SEND_ROAP_MSG,
159
- msg: roapMessage,
160
- correlationId: options.correlationId
161
- });
162
- LoggerProxy.logger.log(`Roap:index#sendRoapOK --> ROAP OK sent with seq ${options.seq}`);
163
- meeting.setRoapSeq(options.seq);
164
- });
165
- });
166
- }
167
-
168
- // eslint-disable-next-line no-warning-comments
169
- // TODO: try to merge sendRoapOk and roapAnswer
170
- /**
171
- * Sends a ROAP answer...
172
- * @param {SeqOptions} options
173
- * @param {Boolean} options.audioMuted
174
- * @param {Boolean} options.videoMuted
175
- * @returns {Promise}
176
- * @private
177
- * @memberof Roap
178
- */
179
- sendRoapAnswer(options) {
180
- const meeting = this.webex.meetings.meetingCollection.getByKey('correlationId', options.correlationId);
181
- const roapMessage = {
182
- messageType: ROAP.ROAP_TYPES.ANSWER,
183
- sdps: options.sdps,
184
- version: ROAP.ROAP_VERSION,
185
- seq: options.seq
186
- };
187
-
188
- this.roapHandler.submit({
189
- type: ROAP.SEND_ROAP_MSG,
190
- msg: roapMessage,
191
- correlationId: options.correlationId
192
- });
193
-
194
- return this.roapRequest
195
- .sendRoap({
196
- roapMessage,
197
- locusSelfUrl: meeting.selfUrl,
198
- mediaId: options.mediaId,
199
- correlationId: options.correlationId,
200
- audioMuted: options.audioMuted,
201
- videoMuted: options.videoMuted,
202
- meetingId: meeting.id
203
- })
204
- .then(() => {
205
- meeting.setRoapSeq(options.seq);
206
-
207
- this.roapHandler.submit({
208
- type: ROAP.SEND_ROAP_MSG_SUCCESS,
209
- seq: roapMessage.seq,
210
- correlationId: meeting.correlationId
211
- });
212
- });
213
- }
214
-
215
- /**
216
- * Sends a ROAP error...
217
- * @param {Object} session
218
- * @param {Object} locus
219
- * @param {String} errorType
220
- * @returns {Promise}
221
- * @private
222
- * @memberof Roap
223
- */
224
- sendRoapError(session, locus, errorType) {
225
- const msg = {
226
- messageType: ROAP.ROAP_TYPES.ERROR,
227
- version: ROAP.ROAP_VERSION,
228
- errorType,
229
- seq: session.OFFER.seq
230
- };
231
-
232
- return this.roapRequest.sendRoap(msg, locus);
233
- }
234
-
235
- /**
236
- * sends a roap media request
237
- * @param {RoapOptions} options
238
- * @returns {Promise}
239
- * @private
240
- * @memberof Roap
241
- */
242
- sendRoapMediaRequest(options) {
243
- const {meeting, reconnect} = options;
244
- const roapMessage = {
245
- messageType: ROAP.ROAP_TYPES.OFFER,
246
- sdps: [options.sdp],
247
- // sdps: [options.sdp],
248
- version: ROAP.ROAP_VERSION,
249
- seq: typeof options.roapSeq !== 'number' && Number.isNaN(parseFloat(options.roapSeq)) ? 0 : options.roapSeq + 1,
250
- tieBreaker: 4294967294 // Math.floor(Math.random() * (2 ** 32) - 1) // TODO: Handle the roap conflict scenario
251
- };
252
-
253
- this.roapHandler.submit({
254
- type: ROAP.SEND_ROAP_MSG,
255
- msg: roapMessage,
256
- correlationId: meeting.correlationId
257
- });
258
-
259
- // When reconnecting, it's important that the first roap message being sent out has empty media id.
260
- // Normally this is the roap offer, but when TURN discovery is enabled,
261
- // then this is the TURN discovery request message
262
- const sendEmptyMediaId = reconnect && !meeting.config.experimental.enableTurnDiscovery;
263
-
264
- return this.roapRequest
265
- .sendRoap({
266
- roapMessage,
267
- correlationId: meeting.correlationId,
268
- locusSelfUrl: meeting.selfUrl,
269
- mediaId: sendEmptyMediaId ? '' : meeting.mediaId,
270
- audioMuted: meeting.isAudioMuted(),
271
- videoMuted: meeting.isVideoMuted(),
272
- meetingId: meeting.id
273
- })
274
- .then(({locus, mediaConnections}) => {
275
- this.roapHandler.submit({
276
- type: ROAP.SEND_ROAP_MSG_SUCCESS,
277
- seq: roapMessage.seq,
278
- correlationId: meeting.correlationId
279
- });
280
- meeting.setRoapSeq(roapMessage.seq);
281
-
282
- if (mediaConnections) {
283
- meeting.updateMediaConnections(mediaConnections);
284
- }
285
-
286
- // eslint-disable-next-line no-warning-comments
287
- // TODO: we need to attach peerconenction to locus not sure if we need to pass everything here
288
- return locus;
289
- // eslint-disable-next-line no-warning-comments
290
- // TODO: check where to update the sequence number
291
- });
292
- }
293
-
294
- /**
295
- * sends a roap media request
296
- * @param {RoapOptions} options
297
- * @returns {Promise}
298
- * @private
299
- * @memberof Roap
300
- */
301
- sendRoapCallRequest = (options) => {
302
- const {meeting} = options;
303
- const roapMessage = {
304
- messageType: ROAP.ROAP_TYPES.OFFER,
305
- sdps: [options.sdp],
306
- version: ROAP.ROAP_VERSION,
307
- seq: typeof options.roapSeq !== 'number' && Number.isNaN(parseFloat(options.roapSeq)) ? 0 : options.roapSeq + 1,
308
- tieBreaker: 4294967294 // Math.floor(Math.random() * (2 ** 32) - 1) // TODO: Handle the roap conflict scenario
309
- };
310
-
311
- this.roapHandler.submit({
312
- type: ROAP.SEND_ROAP_MSG,
313
- msg: roapMessage,
314
- correlationId: meeting.correlationId
315
- });
316
-
317
- const roapBody = {
318
- localMedias: [
319
- {
320
- localSdp: JSON.stringify(this.roapRequest.attachRechabilityData({
321
- roapMessage,
322
- // eslint-disable-next-line no-warning-comments
323
- // TODO: check whats the need for video and audiomute
324
- audioMuted: !!meeting.isAudioMuted(),
325
- videoMuted: !!meeting.isVideoMuted()
326
- }))
327
- // mediaId: meeting.mediaId
328
- }
329
- ]
330
- };
331
-
332
- return MeetingUtil.joinMeetingOptions(meeting, {roapMessage: roapBody})
333
- .then((locus) => {
334
- this.roapHandler.submit({
335
- type: ROAP.SEND_ROAP_MSG_SUCCESS,
336
- seq: roapMessage.seq,
337
- correlationId: meeting.correlationId
338
- });
339
- meeting.setRoapSeq(roapMessage.seq);
340
-
341
- // eslint-disable-next-line no-warning-comments
342
- // TODO: we need to attach peerconenction to locus not sure if we need to pass everything here
343
- return locus;
344
- // eslint-disable-next-line no-warning-comments
345
- // TODO: check where to update the sequence number
346
- });
347
- };
348
-
349
- /**
350
- * Called when the roap sequence is finished (completed successfully or failed)
351
- * @param {String} correlationId id of the meeting affected
352
- * @param {String} sequenceId the id of the finished sequence
353
- * @returns {undefined}
354
- * @private
355
- * @memberof Roap
356
- */
357
- roapFinished(correlationId, sequenceId) {
358
- RoapCollection.onSessionSequenceFinish(correlationId, sequenceId);
359
- const meeting = this.webex.meetings.meetingCollection.getByKey('correlationId', correlationId);
360
-
361
- meeting.mediaNegotiatedEvent();
362
- if (!RoapCollection.isBusy(correlationId)) {
363
- meeting.processNextQueuedMediaUpdate();
364
- }
365
- }
366
-
367
- /**
368
- * Performs a TURN server discovery procedure, which involves exchanging
369
- * some roap messages with the server. This exchange has to be done before
370
- * any other roap messages are sent
371
- *
372
- * @param {Meeting} meeting
373
- * @param {Boolean} isReconnecting should be set to true if this is a new
374
- * media connection just after a reconnection
375
- * @returns {Promise}
376
- */
377
- doTurnDiscovery(meeting, isReconnecting) {
378
- return this.turnDiscovery.doTurnDiscovery(meeting, isReconnecting);
379
- }
380
- }
@@ -1,198 +0,0 @@
1
-
2
- /* global window */
3
- import {StatelessWebexPlugin} from '@webex/webex-core';
4
-
5
- import LoggerProxy from '../common/logs/logger-proxy';
6
- import {
7
- PARTICIPANT,
8
- LOCI,
9
- CALL,
10
- MEDIA,
11
- HTTP_VERBS,
12
- REACHABILITY
13
- } from '../constants';
14
- import Metrics from '../metrics';
15
- import {eventType} from '../metrics/config';
16
- import ParameterError from '../common/errors/parameter';
17
- /**
18
- * @class RoapRequest
19
- */
20
- export default class RoapRequest extends StatelessWebexPlugin {
21
- /**
22
- * Joins a meeting via ROAP
23
- * @param {Object} options
24
- * @returns {Promise} returns a promise that resolves/rejects whatever the request does
25
- */
26
-
27
-
28
- attachRechabilityData(localSdp) {
29
- const reachabilityData = window.localStorage.getItem(REACHABILITY.localStorage);
30
-
31
- if (reachabilityData) {
32
- try {
33
- const reachabilityResult = JSON.parse(reachabilityData);
34
-
35
- /* istanbul ignore else */
36
- if (reachabilityResult && Object.keys(reachabilityResult).length) {
37
- localSdp.reachability = reachabilityResult;
38
- }
39
- }
40
- catch (e) {
41
- LoggerProxy.logger.error(`Roap:request#attachReachabilityData --> Error in parsing reachability data: ${e}`);
42
- }
43
- }
44
-
45
- return localSdp;
46
- }
47
-
48
- joinMeetingWithRoap(options) {
49
- LoggerProxy.logger.info('Roap:request#joinMeetingWithRoap --> Join locus with roap');
50
- LoggerProxy.logger.info(`Roap:request#joinMeetingWithRoap --> Local SDP: ${options.roapMessage}`);
51
-
52
- return Promise.resolve().then(async () => {
53
- const deviceUrl = this.webex.internal.device.url;
54
- let url = '';
55
-
56
- const body = {
57
- deviceUrl,
58
- usingResource: options.resourceId || null,
59
- correlationId: options.correlationId,
60
- localMedias: [
61
- {
62
- localSdp: JSON.stringify(this.attachRechabilityData({
63
- roapMessage: options.roapMessage,
64
- audioMuted: false,
65
- videoMuted: false
66
- }))
67
- }
68
- ],
69
- clientMediaPreferences: {
70
- preferTranscoding: options.preferTranscoding ?? true
71
- }
72
- };
73
-
74
- if (options.locusUrl) {
75
- url = `${options.locusUrl}/${PARTICIPANT}`;
76
- }
77
- else if (options.sipUrl) {
78
- try {
79
- await this.webex.internal.services.waitForCatalog('postauth');
80
- url = `${this.webex.internal.services.get('locus')}/${LOCI}/${CALL}`;
81
- body.invitee = {
82
- address: options.sipTarget
83
- };
84
- }
85
- catch (e) {
86
- LoggerProxy.logger.error(`Roap:request#joinMeetingWithRoap --> ${e}`);
87
- throw (e);
88
- }
89
- }
90
- else {
91
- throw new ParameterError('Must provide a locusUrl or sipTarget');
92
- }
93
-
94
- return this.webex
95
- .request({
96
- method: HTTP_VERBS.POST,
97
- uri: url,
98
- body
99
- })
100
- .then((res) => {
101
- const {locus} = res.body;
102
-
103
- locus.roapSeq = options.roapMessage.seq;
104
- locus.id = locus.url.split('/').pop();
105
- LoggerProxy.logger.info(`Roap:request#joinMeetingWithRoap --> Joined locus [${locus.id}][${locus.fullState.lastActive}]`);
106
-
107
- return locus;
108
- })
109
- .catch((err) => {
110
- LoggerProxy.logger.error(`Roap:request#joinMeetingWithRoap --> failed with error: ${err}`);
111
- throw err;
112
- });
113
- });
114
- }
115
-
116
- /**
117
- * Sends a ROAP message
118
- * @param {Object} options
119
- * @param {Object} options.roapMessage
120
- * @param {String} options.locusSelfUrl
121
- * @param {String} options.mediaId
122
- * @param {String} options.correlationId
123
- * @param {Boolean} options.audioMuted
124
- * @param {Boolean} options.videoMuted
125
- * @param {String} options.meetingId
126
- * @returns {Promise} returns the response/failure of the request
127
- */
128
- sendRoap(options) {
129
- const {
130
- roapMessage, locusSelfUrl, mediaId, correlationId, meetingId
131
- } = options;
132
-
133
- if (!mediaId) {
134
- LoggerProxy.logger.info('Roap:request#sendRoap --> Race Condition /call mediaID not present');
135
- }
136
-
137
- const mediaUrl = `${locusSelfUrl}/${MEDIA}`;
138
- const deviceUrl = this.webex.internal.device.url;
139
-
140
- LoggerProxy.logger.info(`Roap:request#sendRoap --> ${mediaUrl} \n ${roapMessage.messageType} \n seq:${roapMessage.seq}`);
141
-
142
- Metrics.postEvent({event: eventType.MEDIA_REQUEST, meetingId});
143
-
144
- return this.webex
145
- .request({
146
- uri: mediaUrl,
147
- method: HTTP_VERBS.PUT,
148
- body: {
149
- device: {
150
- url: deviceUrl,
151
- deviceType: this.config.meetings.deviceType
152
- },
153
- correlationId,
154
- localMedias: [
155
- {
156
- localSdp: JSON.stringify(this.attachRechabilityData({
157
- roapMessage,
158
- // eslint-disable-next-line no-warning-comments
159
- // TODO: check whats the need for video and audiomute
160
- audioMuted: !!options.audioMuted,
161
- videoMuted: !!options.videoMuted
162
- })),
163
- mediaId: options.mediaId
164
- }
165
- ],
166
- clientMediaPreferences: {
167
- preferTranscoding: options.preferTranscoding ?? true
168
- }
169
- }
170
- })
171
- .then((res) => {
172
- Metrics.postEvent({event: eventType.MEDIA_RESPONSE, meetingId});
173
-
174
- // always it will be the first mediaConnection Object
175
- const mediaConnections = res.body.mediaConnections && res.body.mediaConnections.length > 0 && res.body.mediaConnections[0];
176
-
177
- LoggerProxy.logger.info(
178
- `Roap:request#sendRoap --> response:${JSON.stringify(mediaConnections, null, 2)}'\n StatusCode:'${res.statusCode}`
179
- );
180
- const {locus} = res.body;
181
-
182
- locus.roapSeq = options.roapMessage.seq;
183
-
184
- return {
185
- locus,
186
- ...(mediaConnections && {mediaConnections: res.body.mediaConnections})
187
- };
188
- })
189
- .catch((err) => {
190
- Metrics.postEvent({event: eventType.MEDIA_RESPONSE, meetingId, data: {error: Metrics.parseLocusError(err, true)}});
191
- LoggerProxy.logger.error(`Roap:request#sendRoap --> Error:${JSON.stringify(err, null, 2)}`);
192
- LoggerProxy.logger.error(
193
- `Roap:request#sendRoapRequest --> errorBody:${JSON.stringify(roapMessage, null, 2)} + '\\n mediaId:'${options.mediaId}`
194
- );
195
- throw err;
196
- });
197
- }
198
- }