@webex/plugin-meetings 3.0.0-beta.2 → 3.0.0-beta.200

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 (576) hide show
  1. package/README.md +45 -7
  2. package/UPGRADING.md +9 -9
  3. package/browsers.js +19 -24
  4. package/dist/annotation/annotation.types.js +7 -0
  5. package/dist/annotation/annotation.types.js.map +1 -0
  6. package/dist/annotation/constants.js +49 -0
  7. package/dist/annotation/constants.js.map +1 -0
  8. package/dist/annotation/index.js +342 -0
  9. package/dist/annotation/index.js.map +1 -0
  10. package/dist/breakouts/breakout.js +216 -0
  11. package/dist/breakouts/breakout.js.map +1 -0
  12. package/dist/breakouts/collection.js +23 -0
  13. package/dist/breakouts/collection.js.map +1 -0
  14. package/dist/breakouts/edit-lock-error.js +52 -0
  15. package/dist/breakouts/edit-lock-error.js.map +1 -0
  16. package/dist/breakouts/events.js +45 -0
  17. package/dist/breakouts/events.js.map +1 -0
  18. package/dist/breakouts/index.js +1048 -0
  19. package/dist/breakouts/index.js.map +1 -0
  20. package/dist/breakouts/request.js +78 -0
  21. package/dist/breakouts/request.js.map +1 -0
  22. package/dist/breakouts/utils.js +67 -0
  23. package/dist/breakouts/utils.js.map +1 -0
  24. package/dist/common/browser-detection.js +1 -20
  25. package/dist/common/browser-detection.js.map +1 -1
  26. package/dist/common/collection.js +5 -20
  27. package/dist/common/collection.js.map +1 -1
  28. package/dist/common/config.js +0 -7
  29. package/dist/common/config.js.map +1 -1
  30. package/dist/common/errors/captcha-error.js +10 -24
  31. package/dist/common/errors/captcha-error.js.map +1 -1
  32. package/dist/common/errors/intent-to-join.js +11 -24
  33. package/dist/common/errors/intent-to-join.js.map +1 -1
  34. package/dist/common/errors/join-meeting.js +12 -25
  35. package/dist/common/errors/join-meeting.js.map +1 -1
  36. package/dist/common/errors/media.js +10 -24
  37. package/dist/common/errors/media.js.map +1 -1
  38. package/dist/common/errors/parameter.js +5 -33
  39. package/dist/common/errors/parameter.js.map +1 -1
  40. package/dist/common/errors/password-error.js +10 -24
  41. package/dist/common/errors/password-error.js.map +1 -1
  42. package/dist/common/errors/permission.js +9 -23
  43. package/dist/common/errors/permission.js.map +1 -1
  44. package/dist/common/errors/reconnection-in-progress.js +0 -17
  45. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  46. package/dist/common/errors/reconnection.js +10 -24
  47. package/dist/common/errors/reconnection.js.map +1 -1
  48. package/dist/common/errors/stats.js +10 -24
  49. package/dist/common/errors/stats.js.map +1 -1
  50. package/dist/common/errors/webex-errors.js +9 -43
  51. package/dist/common/errors/webex-errors.js.map +1 -1
  52. package/dist/common/errors/webex-meetings-error.js +5 -25
  53. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  54. package/dist/common/events/events-scope.js +0 -22
  55. package/dist/common/events/events-scope.js.map +1 -1
  56. package/dist/common/events/events.js +0 -23
  57. package/dist/common/events/events.js.map +1 -1
  58. package/dist/common/events/trigger-proxy.js +0 -12
  59. package/dist/common/events/trigger-proxy.js.map +1 -1
  60. package/dist/common/events/util.js +0 -15
  61. package/dist/common/events/util.js.map +1 -1
  62. package/dist/common/logs/logger-config.js +0 -4
  63. package/dist/common/logs/logger-config.js.map +1 -1
  64. package/dist/common/logs/logger-proxy.js +1 -8
  65. package/dist/common/logs/logger-proxy.js.map +1 -1
  66. package/dist/common/logs/request.js +37 -60
  67. package/dist/common/logs/request.js.map +1 -1
  68. package/dist/common/queue.js +28 -23
  69. package/dist/common/queue.js.map +1 -1
  70. package/dist/config.js +8 -13
  71. package/dist/config.js.map +1 -1
  72. package/dist/constants.js +250 -66
  73. package/dist/constants.js.map +1 -1
  74. package/dist/controls-options-manager/constants.js +14 -0
  75. package/dist/controls-options-manager/constants.js.map +1 -0
  76. package/dist/controls-options-manager/enums.js +27 -0
  77. package/dist/controls-options-manager/enums.js.map +1 -0
  78. package/dist/controls-options-manager/index.js +297 -0
  79. package/dist/controls-options-manager/index.js.map +1 -0
  80. package/dist/controls-options-manager/types.js +7 -0
  81. package/dist/controls-options-manager/types.js.map +1 -0
  82. package/dist/controls-options-manager/util.js +319 -0
  83. package/dist/controls-options-manager/util.js.map +1 -0
  84. package/dist/index.js +108 -17
  85. package/dist/index.js.map +1 -1
  86. package/dist/interpretation/collection.js +23 -0
  87. package/dist/interpretation/collection.js.map +1 -0
  88. package/dist/interpretation/index.js +366 -0
  89. package/dist/interpretation/index.js.map +1 -0
  90. package/dist/interpretation/siLanguage.js +25 -0
  91. package/dist/interpretation/siLanguage.js.map +1 -0
  92. package/dist/locus-info/controlsUtils.js +101 -29
  93. package/dist/locus-info/controlsUtils.js.map +1 -1
  94. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  95. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  96. package/dist/locus-info/fullState.js +0 -15
  97. package/dist/locus-info/fullState.js.map +1 -1
  98. package/dist/locus-info/hostUtils.js +4 -12
  99. package/dist/locus-info/hostUtils.js.map +1 -1
  100. package/dist/locus-info/index.js +532 -240
  101. package/dist/locus-info/index.js.map +1 -1
  102. package/dist/locus-info/infoUtils.js +3 -37
  103. package/dist/locus-info/infoUtils.js.map +1 -1
  104. package/dist/locus-info/mediaSharesUtils.js +54 -38
  105. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  106. package/dist/locus-info/parser.js +284 -154
  107. package/dist/locus-info/parser.js.map +1 -1
  108. package/dist/locus-info/selfUtils.js +110 -92
  109. package/dist/locus-info/selfUtils.js.map +1 -1
  110. package/dist/media/index.js +95 -226
  111. package/dist/media/index.js.map +1 -1
  112. package/dist/media/properties.js +99 -194
  113. package/dist/media/properties.js.map +1 -1
  114. package/dist/media/util.js +2 -9
  115. package/dist/media/util.js.map +1 -1
  116. package/dist/mediaQualityMetrics/config.js +505 -495
  117. package/dist/mediaQualityMetrics/config.js.map +1 -1
  118. package/dist/meeting/in-meeting-actions.js +83 -14
  119. package/dist/meeting/in-meeting-actions.js.map +1 -1
  120. package/dist/meeting/index.js +3478 -3563
  121. package/dist/meeting/index.js.map +1 -1
  122. package/dist/meeting/locusMediaRequest.js +291 -0
  123. package/dist/meeting/locusMediaRequest.js.map +1 -0
  124. package/dist/meeting/muteState.js +247 -183
  125. package/dist/meeting/muteState.js.map +1 -1
  126. package/dist/meeting/request.js +344 -344
  127. package/dist/meeting/request.js.map +1 -1
  128. package/dist/meeting/request.type.js +7 -0
  129. package/dist/meeting/request.type.js.map +1 -0
  130. package/dist/meeting/state.js +21 -31
  131. package/dist/meeting/state.js.map +1 -1
  132. package/dist/meeting/util.js +529 -588
  133. package/dist/meeting/util.js.map +1 -1
  134. package/dist/meeting-info/collection.js +6 -25
  135. package/dist/meeting-info/collection.js.map +1 -1
  136. package/dist/meeting-info/index.js +62 -39
  137. package/dist/meeting-info/index.js.map +1 -1
  138. package/dist/meeting-info/meeting-info-v2.js +328 -283
  139. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  140. package/dist/meeting-info/request.js +3 -15
  141. package/dist/meeting-info/request.js.map +1 -1
  142. package/dist/meeting-info/util.js +98 -183
  143. package/dist/meeting-info/util.js.map +1 -1
  144. package/dist/meeting-info/utilv2.js +156 -232
  145. package/dist/meeting-info/utilv2.js.map +1 -1
  146. package/dist/meetings/collection.js +26 -19
  147. package/dist/meetings/collection.js.map +1 -1
  148. package/dist/meetings/index.js +795 -574
  149. package/dist/meetings/index.js.map +1 -1
  150. package/dist/meetings/meetings.types.js +7 -0
  151. package/dist/meetings/meetings.types.js.map +1 -0
  152. package/dist/meetings/request.js +26 -41
  153. package/dist/meetings/request.js.map +1 -1
  154. package/dist/meetings/util.js +186 -155
  155. package/dist/meetings/util.js.map +1 -1
  156. package/dist/member/index.js +126 -85
  157. package/dist/member/index.js.map +1 -1
  158. package/dist/member/types.js +25 -0
  159. package/dist/member/types.js.map +1 -0
  160. package/dist/member/util.js +147 -88
  161. package/dist/member/util.js.map +1 -1
  162. package/dist/members/collection.js +13 -12
  163. package/dist/members/collection.js.map +1 -1
  164. package/dist/members/index.js +178 -204
  165. package/dist/members/index.js.map +1 -1
  166. package/dist/members/request.js +113 -68
  167. package/dist/members/request.js.map +1 -1
  168. package/dist/members/types.js +15 -0
  169. package/dist/members/types.js.map +1 -0
  170. package/dist/members/util.js +314 -260
  171. package/dist/members/util.js.map +1 -1
  172. package/dist/metrics/constants.js +4 -7
  173. package/dist/metrics/constants.js.map +1 -1
  174. package/dist/metrics/index.js +11 -558
  175. package/dist/metrics/index.js.map +1 -1
  176. package/dist/multistream/mediaRequestManager.js +264 -50
  177. package/dist/multistream/mediaRequestManager.js.map +1 -1
  178. package/dist/multistream/receiveSlot.js +58 -65
  179. package/dist/multistream/receiveSlot.js.map +1 -1
  180. package/dist/multistream/receiveSlotManager.js +76 -95
  181. package/dist/multistream/receiveSlotManager.js.map +1 -1
  182. package/dist/multistream/remoteMedia.js +62 -76
  183. package/dist/multistream/remoteMedia.js.map +1 -1
  184. package/dist/multistream/remoteMediaGroup.js +66 -43
  185. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  186. package/dist/multistream/remoteMediaManager.js +502 -442
  187. package/dist/multistream/remoteMediaManager.js.map +1 -1
  188. package/dist/networkQualityMonitor/index.js +40 -59
  189. package/dist/networkQualityMonitor/index.js.map +1 -1
  190. package/dist/personal-meeting-room/index.js +21 -45
  191. package/dist/personal-meeting-room/index.js.map +1 -1
  192. package/dist/personal-meeting-room/request.js +1 -31
  193. package/dist/personal-meeting-room/request.js.map +1 -1
  194. package/dist/personal-meeting-room/util.js +0 -13
  195. package/dist/personal-meeting-room/util.js.map +1 -1
  196. package/dist/reachability/index.js +192 -191
  197. package/dist/reachability/index.js.map +1 -1
  198. package/dist/reachability/request.js +15 -23
  199. package/dist/reachability/request.js.map +1 -1
  200. package/dist/reactions/constants.js +13 -0
  201. package/dist/reactions/constants.js.map +1 -0
  202. package/dist/reactions/reactions.js +109 -0
  203. package/dist/reactions/reactions.js.map +1 -0
  204. package/dist/reactions/reactions.type.js +36 -0
  205. package/dist/reactions/reactions.type.js.map +1 -0
  206. package/dist/reconnection-manager/index.js +384 -476
  207. package/dist/reconnection-manager/index.js.map +1 -1
  208. package/dist/recording-controller/enums.js +17 -0
  209. package/dist/recording-controller/enums.js.map +1 -0
  210. package/dist/recording-controller/index.js +363 -0
  211. package/dist/recording-controller/index.js.map +1 -0
  212. package/dist/recording-controller/util.js +64 -0
  213. package/dist/recording-controller/util.js.map +1 -0
  214. package/dist/roap/index.js +58 -91
  215. package/dist/roap/index.js.map +1 -1
  216. package/dist/roap/request.js +137 -135
  217. package/dist/roap/request.js.map +1 -1
  218. package/dist/roap/turnDiscovery.js +148 -100
  219. package/dist/roap/turnDiscovery.js.map +1 -1
  220. package/dist/rtcMetrics/constants.js +12 -0
  221. package/dist/rtcMetrics/constants.js.map +1 -0
  222. package/dist/rtcMetrics/index.js +115 -0
  223. package/dist/rtcMetrics/index.js.map +1 -0
  224. package/dist/statsAnalyzer/global.js +1 -95
  225. package/dist/statsAnalyzer/global.js.map +1 -1
  226. package/dist/statsAnalyzer/index.js +385 -460
  227. package/dist/statsAnalyzer/index.js.map +1 -1
  228. package/dist/statsAnalyzer/mqaUtil.js +143 -87
  229. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  230. package/dist/transcription/index.js +22 -47
  231. package/dist/transcription/index.js.map +1 -1
  232. package/dist/types/annotation/annotation.types.d.ts +42 -0
  233. package/dist/types/annotation/constants.d.ts +31 -0
  234. package/dist/types/annotation/index.d.ts +117 -0
  235. package/dist/types/breakouts/breakout.d.ts +8 -0
  236. package/dist/types/breakouts/collection.d.ts +5 -0
  237. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  238. package/dist/types/breakouts/events.d.ts +8 -0
  239. package/dist/types/breakouts/index.d.ts +5 -0
  240. package/dist/types/breakouts/request.d.ts +22 -0
  241. package/dist/types/breakouts/utils.d.ts +15 -0
  242. package/dist/types/common/browser-detection.d.ts +9 -0
  243. package/dist/types/common/collection.d.ts +48 -0
  244. package/dist/types/common/config.d.ts +2 -0
  245. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  246. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  247. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  248. package/dist/types/common/errors/media.d.ts +15 -0
  249. package/dist/types/common/errors/parameter.d.ts +15 -0
  250. package/dist/types/common/errors/password-error.d.ts +15 -0
  251. package/dist/types/common/errors/permission.d.ts +14 -0
  252. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  253. package/dist/types/common/errors/reconnection.d.ts +15 -0
  254. package/dist/types/common/errors/stats.d.ts +15 -0
  255. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  256. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  257. package/dist/types/common/events/events-scope.d.ts +17 -0
  258. package/dist/types/common/events/events.d.ts +12 -0
  259. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  260. package/dist/types/common/events/util.d.ts +2 -0
  261. package/dist/types/common/logs/logger-config.d.ts +2 -0
  262. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  263. package/dist/types/common/logs/request.d.ts +34 -0
  264. package/dist/types/common/queue.d.ts +34 -0
  265. package/dist/types/config.d.ts +72 -0
  266. package/dist/types/constants.d.ts +1016 -0
  267. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  268. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  269. package/dist/types/controls-options-manager/index.d.ts +136 -0
  270. package/dist/types/controls-options-manager/types.d.ts +43 -0
  271. package/dist/types/controls-options-manager/util.d.ts +1 -0
  272. package/dist/types/index.d.ts +7 -0
  273. package/dist/types/interpretation/collection.d.ts +5 -0
  274. package/dist/types/interpretation/index.d.ts +5 -0
  275. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  276. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  277. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  278. package/dist/types/locus-info/fullState.d.ts +2 -0
  279. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  280. package/dist/types/locus-info/index.d.ts +322 -0
  281. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  282. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  283. package/dist/types/locus-info/parser.d.ts +271 -0
  284. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  285. package/dist/types/media/index.d.ts +34 -0
  286. package/dist/types/media/properties.d.ts +93 -0
  287. package/dist/types/media/util.d.ts +2 -0
  288. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  289. package/dist/types/meeting/in-meeting-actions.d.ts +153 -0
  290. package/dist/types/meeting/index.d.ts +1471 -0
  291. package/dist/types/meeting/locusMediaRequest.d.ts +70 -0
  292. package/dist/types/meeting/muteState.d.ts +184 -0
  293. package/dist/types/meeting/request.d.ts +257 -0
  294. package/dist/types/meeting/request.type.d.ts +11 -0
  295. package/dist/types/meeting/state.d.ts +9 -0
  296. package/dist/types/meeting/util.d.ts +78 -0
  297. package/dist/types/meeting-info/collection.d.ts +20 -0
  298. package/dist/types/meeting-info/index.d.ts +62 -0
  299. package/dist/types/meeting-info/meeting-info-v2.d.ts +122 -0
  300. package/dist/types/meeting-info/request.d.ts +22 -0
  301. package/dist/types/meeting-info/util.d.ts +2 -0
  302. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  303. package/dist/types/meetings/collection.d.ts +31 -0
  304. package/dist/types/meetings/index.d.ts +367 -0
  305. package/dist/types/meetings/meetings.types.d.ts +4 -0
  306. package/dist/types/meetings/request.d.ts +27 -0
  307. package/dist/types/meetings/util.d.ts +18 -0
  308. package/dist/types/member/index.d.ts +159 -0
  309. package/dist/types/member/types.d.ts +32 -0
  310. package/dist/types/member/util.d.ts +2 -0
  311. package/dist/types/members/collection.d.ts +29 -0
  312. package/dist/types/members/index.d.ts +353 -0
  313. package/dist/types/members/request.d.ts +114 -0
  314. package/dist/types/members/types.d.ts +24 -0
  315. package/dist/types/members/util.d.ts +210 -0
  316. package/dist/types/metrics/constants.d.ts +55 -0
  317. package/dist/types/metrics/index.d.ts +45 -0
  318. package/dist/types/multistream/mediaRequestManager.d.ts +118 -0
  319. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  320. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  321. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  322. package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
  323. package/dist/types/multistream/remoteMediaManager.d.ts +277 -0
  324. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  325. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  326. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  327. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  328. package/dist/types/reachability/index.d.ts +152 -0
  329. package/dist/types/reachability/request.d.ts +37 -0
  330. package/dist/types/reactions/constants.d.ts +3 -0
  331. package/dist/types/reactions/reactions.d.ts +4 -0
  332. package/dist/types/reactions/reactions.type.d.ts +52 -0
  333. package/dist/types/reconnection-manager/index.d.ts +126 -0
  334. package/dist/types/recording-controller/enums.d.ts +7 -0
  335. package/dist/types/recording-controller/index.d.ts +208 -0
  336. package/dist/types/recording-controller/util.d.ts +14 -0
  337. package/dist/types/roap/index.d.ts +77 -0
  338. package/dist/types/roap/request.d.ts +36 -0
  339. package/dist/types/roap/turnDiscovery.d.ts +91 -0
  340. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  341. package/dist/types/rtcMetrics/index.d.ts +46 -0
  342. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  343. package/dist/types/statsAnalyzer/index.d.ts +200 -0
  344. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  345. package/dist/types/transcription/index.d.ts +64 -0
  346. package/internal-README.md +7 -6
  347. package/package.json +29 -21
  348. package/src/annotation/annotation.types.ts +50 -0
  349. package/src/annotation/constants.ts +36 -0
  350. package/src/annotation/index.ts +328 -0
  351. package/src/breakouts/README.md +220 -0
  352. package/src/breakouts/breakout.ts +188 -0
  353. package/src/breakouts/collection.ts +19 -0
  354. package/src/breakouts/edit-lock-error.ts +25 -0
  355. package/src/breakouts/events.ts +56 -0
  356. package/src/breakouts/index.ts +925 -0
  357. package/src/breakouts/request.ts +55 -0
  358. package/src/breakouts/utils.ts +57 -0
  359. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  360. package/src/common/collection.ts +9 -7
  361. package/src/common/{config.js → config.ts} +1 -1
  362. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  363. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  364. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  365. package/src/common/errors/{media.js → media.ts} +11 -7
  366. package/src/common/errors/parameter.ts +11 -7
  367. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  368. package/src/common/errors/{permission.js → permission.ts} +10 -6
  369. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  370. package/src/common/errors/{stats.js → stats.ts} +11 -7
  371. package/src/common/errors/{webex-errors.js → webex-errors.ts} +14 -9
  372. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  373. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  374. package/src/common/events/{events.js → events.ts} +5 -1
  375. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  376. package/src/common/events/{util.js → util.ts} +2 -3
  377. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  378. package/src/common/logs/logger-proxy.ts +44 -0
  379. package/src/common/logs/{request.js → request.ts} +22 -9
  380. package/src/common/queue.ts +22 -9
  381. package/src/{config.js → config.ts} +17 -17
  382. package/src/constants.ts +197 -22
  383. package/src/controls-options-manager/constants.ts +5 -0
  384. package/src/controls-options-manager/enums.ts +18 -0
  385. package/src/controls-options-manager/index.ts +278 -0
  386. package/src/controls-options-manager/types.ts +59 -0
  387. package/src/controls-options-manager/util.ts +300 -0
  388. package/src/index.ts +39 -0
  389. package/src/interpretation/README.md +60 -0
  390. package/src/interpretation/collection.ts +19 -0
  391. package/src/interpretation/index.ts +332 -0
  392. package/src/interpretation/siLanguage.ts +18 -0
  393. package/src/locus-info/controlsUtils.ts +222 -0
  394. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  395. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  396. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  397. package/src/locus-info/{index.js → index.ts} +518 -111
  398. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  399. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +65 -17
  400. package/src/locus-info/{parser.js → parser.ts} +271 -98
  401. package/src/locus-info/{selfUtils.js → selfUtils.ts} +199 -68
  402. package/src/media/index.ts +456 -0
  403. package/src/media/{properties.js → properties.ts} +80 -102
  404. package/src/media/{util.js → util.ts} +2 -2
  405. package/src/mediaQualityMetrics/config.ts +384 -0
  406. package/src/meeting/in-meeting-actions.ts +171 -3
  407. package/src/meeting/index.ts +7070 -0
  408. package/src/meeting/locusMediaRequest.ts +309 -0
  409. package/src/meeting/muteState.ts +450 -0
  410. package/src/meeting/{request.js → request.ts} +354 -214
  411. package/src/meeting/request.type.ts +13 -0
  412. package/src/meeting/{state.js → state.ts} +50 -35
  413. package/src/meeting/util.ts +615 -0
  414. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  415. package/src/meeting-info/index.ts +183 -0
  416. package/src/meeting-info/meeting-info-v2.ts +407 -0
  417. package/src/meeting-info/{request.js → request.ts} +14 -4
  418. package/src/meeting-info/{util.js → util.ts} +60 -51
  419. package/src/meeting-info/{utilv2.js → utilv2.ts} +77 -60
  420. package/src/meetings/{collection.js → collection.ts} +26 -3
  421. package/src/meetings/index.ts +1467 -0
  422. package/src/meetings/meetings.types.ts +12 -0
  423. package/src/meetings/{request.js → request.ts} +34 -25
  424. package/src/meetings/{util.js → util.ts} +137 -36
  425. package/src/member/{index.js → index.ts} +151 -56
  426. package/src/member/types.ts +38 -0
  427. package/src/member/util.ts +383 -0
  428. package/src/members/{collection.js → collection.ts} +10 -2
  429. package/src/members/{index.js → index.ts} +323 -145
  430. package/src/members/request.ts +255 -0
  431. package/src/members/types.ts +28 -0
  432. package/src/members/util.ts +339 -0
  433. package/src/metrics/{constants.js → constants.ts} +2 -6
  434. package/src/metrics/index.ts +73 -0
  435. package/src/multistream/mediaRequestManager.ts +337 -61
  436. package/src/multistream/receiveSlot.ts +69 -26
  437. package/src/multistream/receiveSlotManager.ts +66 -42
  438. package/src/multistream/remoteMedia.ts +40 -5
  439. package/src/multistream/remoteMediaGroup.ts +63 -3
  440. package/src/multistream/remoteMediaManager.ts +263 -66
  441. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  442. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  443. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  444. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  445. package/src/reachability/{index.js → index.ts} +157 -94
  446. package/src/reachability/request.ts +46 -35
  447. package/src/reactions/constants.ts +4 -0
  448. package/src/reactions/reactions.ts +104 -0
  449. package/src/reactions/reactions.type.ts +62 -0
  450. package/src/reconnection-manager/{index.js → index.ts} +254 -136
  451. package/src/recording-controller/enums.ts +8 -0
  452. package/src/recording-controller/index.ts +333 -0
  453. package/src/recording-controller/util.ts +75 -0
  454. package/src/roap/{index.js → index.ts} +86 -78
  455. package/src/roap/request.ts +163 -0
  456. package/src/roap/turnDiscovery.ts +111 -49
  457. package/src/rtcMetrics/constants.ts +3 -0
  458. package/src/rtcMetrics/index.ts +96 -0
  459. package/src/statsAnalyzer/global.ts +37 -0
  460. package/src/statsAnalyzer/index.ts +1272 -0
  461. package/src/statsAnalyzer/mqaUtil.ts +291 -0
  462. package/src/transcription/{index.js → index.ts} +46 -39
  463. package/test/integration/spec/converged-space-meetings.js +233 -0
  464. package/test/integration/spec/journey.js +804 -526
  465. package/test/integration/spec/space-meeting.js +391 -204
  466. package/test/integration/spec/transcription.js +7 -8
  467. package/test/unit/spec/annotation/index.ts +418 -0
  468. package/test/unit/spec/breakouts/breakout.ts +237 -0
  469. package/test/unit/spec/breakouts/collection.ts +15 -0
  470. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  471. package/test/unit/spec/breakouts/events.ts +89 -0
  472. package/test/unit/spec/breakouts/index.ts +1790 -0
  473. package/test/unit/spec/breakouts/request.ts +104 -0
  474. package/test/unit/spec/breakouts/utils.js +72 -0
  475. package/test/unit/spec/common/browser-detection.js +9 -28
  476. package/test/unit/spec/common/queue.js +31 -2
  477. package/test/unit/spec/controls-options-manager/index.js +287 -0
  478. package/test/unit/spec/controls-options-manager/util.js +582 -0
  479. package/test/unit/spec/fixture/locus.js +93 -90
  480. package/test/unit/spec/interpretation/collection.ts +15 -0
  481. package/test/unit/spec/interpretation/index.ts +589 -0
  482. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  483. package/test/unit/spec/locus-info/controlsUtils.js +325 -32
  484. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  485. package/test/unit/spec/locus-info/index.js +1176 -18
  486. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  487. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  488. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  489. package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
  490. package/test/unit/spec/locus-info/parser.js +65 -31
  491. package/test/unit/spec/locus-info/selfConstant.js +120 -103
  492. package/test/unit/spec/locus-info/selfUtils.js +296 -12
  493. package/test/unit/spec/media/index.ts +162 -68
  494. package/test/unit/spec/media/properties.ts +9 -9
  495. package/test/unit/spec/meeting/in-meeting-actions.ts +82 -3
  496. package/test/unit/spec/meeting/index.js +4569 -1773
  497. package/test/unit/spec/meeting/locusMediaRequest.ts +436 -0
  498. package/test/unit/spec/meeting/muteState.js +382 -211
  499. package/test/unit/spec/meeting/request.js +444 -78
  500. package/test/unit/spec/meeting/utils.js +517 -192
  501. package/test/unit/spec/meeting-info/index.js +181 -0
  502. package/test/unit/spec/meeting-info/meetinginfov2.js +481 -76
  503. package/test/unit/spec/meeting-info/request.js +7 -9
  504. package/test/unit/spec/meeting-info/util.js +11 -12
  505. package/test/unit/spec/meeting-info/utilv2.js +131 -74
  506. package/test/unit/spec/meetings/collection.js +15 -1
  507. package/test/unit/spec/meetings/index.js +1254 -330
  508. package/test/unit/spec/meetings/utils.js +220 -14
  509. package/test/unit/spec/member/index.js +58 -5
  510. package/test/unit/spec/member/util.js +494 -26
  511. package/test/unit/spec/members/index.js +423 -55
  512. package/test/unit/spec/members/request.js +228 -40
  513. package/test/unit/spec/members/utils.js +191 -4
  514. package/test/unit/spec/metrics/index.js +12 -66
  515. package/test/unit/spec/multistream/mediaRequestManager.ts +1013 -106
  516. package/test/unit/spec/multistream/receiveSlot.ts +77 -18
  517. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  518. package/test/unit/spec/multistream/remoteMedia.ts +40 -2
  519. package/test/unit/spec/multistream/remoteMediaGroup.ts +271 -5
  520. package/test/unit/spec/multistream/remoteMediaManager.ts +730 -65
  521. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  522. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  523. package/test/unit/spec/reachability/index.ts +176 -27
  524. package/test/unit/spec/reachability/request.js +66 -0
  525. package/test/unit/spec/reconnection-manager/index.js +155 -9
  526. package/test/unit/spec/recording-controller/index.js +307 -0
  527. package/test/unit/spec/recording-controller/util.js +229 -0
  528. package/test/unit/spec/roap/index.ts +28 -52
  529. package/test/unit/spec/roap/request.ts +225 -0
  530. package/test/unit/spec/roap/turnDiscovery.ts +92 -50
  531. package/test/unit/spec/rtcMetrics/index.ts +60 -0
  532. package/test/unit/spec/stats-analyzer/index.js +116 -60
  533. package/test/utils/cmr.js +44 -42
  534. package/test/utils/constants.js +9 -0
  535. package/test/utils/integrationTestUtils.js +46 -0
  536. package/test/utils/testUtils.js +63 -99
  537. package/test/utils/webex-config.js +22 -18
  538. package/test/utils/webex-test-users.js +57 -50
  539. package/tsconfig.json +6 -0
  540. package/dist/media/internal-media-core-wrapper.js +0 -22
  541. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  542. package/dist/meeting/effectsState.js +0 -327
  543. package/dist/meeting/effectsState.js.map +0 -1
  544. package/dist/metrics/config.js +0 -301
  545. package/dist/metrics/config.js.map +0 -1
  546. package/dist/multistream/multistreamMedia.js +0 -116
  547. package/dist/multistream/multistreamMedia.js.map +0 -1
  548. package/dist/peer-connection-manager/util.js +0 -124
  549. package/dist/peer-connection-manager/util.js.map +0 -1
  550. package/src/common/logs/logger-proxy.js +0 -33
  551. package/src/index.js +0 -15
  552. package/src/locus-info/controlsUtils.js +0 -102
  553. package/src/media/index.js +0 -459
  554. package/src/media/internal-media-core-wrapper.ts +0 -9
  555. package/src/mediaQualityMetrics/config.js +0 -382
  556. package/src/meeting/effectsState.js +0 -205
  557. package/src/meeting/index.js +0 -6284
  558. package/src/meeting/muteState.js +0 -318
  559. package/src/meeting/util.js +0 -506
  560. package/src/meeting-info/index.js +0 -131
  561. package/src/meeting-info/meeting-info-v2.js +0 -255
  562. package/src/meetings/index.js +0 -1015
  563. package/src/member/util.js +0 -254
  564. package/src/members/request.js +0 -131
  565. package/src/members/util.js +0 -258
  566. package/src/metrics/config.js +0 -324
  567. package/src/metrics/index.js +0 -530
  568. package/src/multistream/multistreamMedia.ts +0 -92
  569. package/src/peer-connection-manager/util.ts +0 -117
  570. package/src/roap/request.js +0 -127
  571. package/src/statsAnalyzer/global.js +0 -133
  572. package/src/statsAnalyzer/index.js +0 -1006
  573. package/src/statsAnalyzer/mqaUtil.js +0 -173
  574. package/test/unit/spec/meeting/effectsState.js +0 -291
  575. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  576. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -0,0 +1,333 @@
1
+ import PermissionError from '../common/errors/permission';
2
+ import {CONTROLS, HTTP_VERBS, SELF_POLICY} from '../constants';
3
+ import MeetingRequest from '../meeting/request';
4
+ import RecordingAction from './enums';
5
+ import Util from './util';
6
+ import LoggerProxy from '../common/logs/logger-proxy';
7
+
8
+ /**
9
+ * @description Recording manages the recording functionality of the meeting object, there should only be one instantation of recording per meeting
10
+ * @export
11
+ * @private
12
+ * @class Recording
13
+ */
14
+ export default class RecordingController {
15
+ /**
16
+ * @instance
17
+ * @type {MeetingRequest}
18
+ * @private
19
+ * @memberof RecordingController
20
+ */
21
+ private request: MeetingRequest;
22
+
23
+ /**
24
+ * @instance
25
+ * @type {Array}
26
+ * @private
27
+ * @memberof RecordingInfo
28
+ */
29
+ private displayHints: Array<string> = [];
30
+
31
+ /**
32
+ * @instance
33
+ * @type {Object}
34
+ * @private
35
+ * @memberof RecordingInfo
36
+ */
37
+ private selfUserPolicies: Record<SELF_POLICY, boolean>;
38
+
39
+ /**
40
+ * @instance
41
+ * @type {string}
42
+ * @private
43
+ * @memberof RecordingInfo
44
+ */
45
+ private serviceUrl: string;
46
+
47
+ /**
48
+ * @instance
49
+ * @type {string}
50
+ * @private
51
+ * @memberof RecordingInfo
52
+ */
53
+ private sessionId: string;
54
+
55
+ /**
56
+ * @instance
57
+ * @type {string}
58
+ * @private
59
+ * @memberof RecordingInfo
60
+ */
61
+ private locusUrl: string;
62
+
63
+ /**
64
+ * @instance
65
+ * @type {string}
66
+ * @private
67
+ * @memberof RecordingInfo
68
+ */
69
+ private locusId: string;
70
+
71
+ /**
72
+ * @param {MeetingRequest} request
73
+ * @param {Object} options
74
+ * @constructor
75
+ * @memberof RecordingController
76
+ */
77
+ constructor(
78
+ request: MeetingRequest,
79
+ options?: {
80
+ serviceUrl?: string;
81
+ sessionId: string;
82
+ locusUrl: string;
83
+ displayHints?: Array<string>;
84
+ }
85
+ ) {
86
+ this.initialize(request);
87
+ this.set(options);
88
+ }
89
+
90
+ /**
91
+ * @param {MeetingRequest} request
92
+ * @param {LocusInfo} info
93
+ * @returns {void}
94
+ * @private
95
+ * @memberof RecordingController
96
+ */
97
+ private initialize(request: MeetingRequest) {
98
+ this.request = request;
99
+ }
100
+
101
+ /**
102
+ * @param {Object} options
103
+ * @returns {void}
104
+ * @public
105
+ * @memberof RecordingController
106
+ */
107
+ public set(options?: {
108
+ serviceUrl?: string;
109
+ sessionId: string;
110
+ locusUrl: string;
111
+ displayHints?: Array<string>;
112
+ }) {
113
+ this.extract(options);
114
+ }
115
+
116
+ /**
117
+ * @param {string} url
118
+ * @returns {void}
119
+ * @public
120
+ * @memberof RecordingController
121
+ */
122
+ public setLocusUrl(url: string) {
123
+ this.locusUrl = url;
124
+ this.locusId = Util.extractLocusId(this.locusUrl);
125
+ }
126
+
127
+ /**
128
+ * @param {Array} hints
129
+ * @returns {void}
130
+ * @public
131
+ * @memberof RecordingController
132
+ */
133
+ public setDisplayHints(hints: Array<string>) {
134
+ this.displayHints = hints;
135
+ }
136
+
137
+ /**
138
+ * @param {Object} selfUserPolicies
139
+ * @returns {void}
140
+ * @public
141
+ * @memberof RecordingController
142
+ */
143
+ public setUserPolicy(selfUserPolicies: Record<SELF_POLICY, boolean>) {
144
+ this.selfUserPolicies = selfUserPolicies;
145
+ }
146
+
147
+ /**
148
+ * @param {string} id
149
+ * @returns {void}
150
+ * @public
151
+ * @memberof RecordingController
152
+ */
153
+ public setSessionId(id: string) {
154
+ this.sessionId = id;
155
+ }
156
+
157
+ /**
158
+ * @param {string} url
159
+ * @returns {void}
160
+ * @public
161
+ * @memberof RecordingController
162
+ */
163
+ public setServiceUrl(url: string) {
164
+ this.serviceUrl = url;
165
+ }
166
+
167
+ /**
168
+ * @returns {string}
169
+ * @public
170
+ * @memberof RecordingController
171
+ */
172
+ public getLocusUrl() {
173
+ return this.locusUrl;
174
+ }
175
+
176
+ /**
177
+ * @returns {string}
178
+ * @public
179
+ * @memberof RecordingController
180
+ */
181
+ public getLocusId() {
182
+ return this.locusId;
183
+ }
184
+
185
+ /**
186
+ * @returns {string}
187
+ * @public
188
+ * @memberof RecordingController
189
+ */
190
+ public getSessionId() {
191
+ return this.sessionId;
192
+ }
193
+
194
+ /**
195
+ * @returns {string}
196
+ * @public
197
+ * @memberof RecordingController
198
+ */
199
+ public getServiceUrl() {
200
+ return this.serviceUrl;
201
+ }
202
+
203
+ /**
204
+ * @returns {Array}
205
+ * @public
206
+ * @memberof RecordingController
207
+ */
208
+ public getDisplayHints() {
209
+ return this.displayHints;
210
+ }
211
+
212
+ /**
213
+ * @param {Object} options
214
+ * @returns {void}
215
+ * @private
216
+ * @memberof RecordingController
217
+ */
218
+ private extract(options?: {
219
+ serviceUrl?: string;
220
+ sessionId: string;
221
+ locusUrl: string;
222
+ displayHints?: Array<string>;
223
+ }) {
224
+ this.setServiceUrl(options?.serviceUrl);
225
+ this.setSessionId(options?.sessionId);
226
+ this.setDisplayHints(options?.displayHints);
227
+ this.setLocusUrl(options?.locusUrl);
228
+ }
229
+
230
+ /**
231
+ * @param {RecordingAction} action
232
+ * @private
233
+ * @memberof RecordingController
234
+ * @returns {Promise}
235
+ */
236
+ private recordingService(action: RecordingAction): Promise<any> {
237
+ // @ts-ignore
238
+ return this.request.request({
239
+ body: {
240
+ meetingInfo: {
241
+ locusSessionId: this.sessionId,
242
+ },
243
+ recording: {
244
+ action: action.toLowerCase(),
245
+ },
246
+ },
247
+ uri: `${this.serviceUrl}/loci/${this.locusId}/recording`,
248
+ method: HTTP_VERBS.PUT,
249
+ });
250
+ }
251
+
252
+ /**
253
+ * @param {RecordingAction} action
254
+ * @private
255
+ * @memberof RecordingController
256
+ * @returns {Promise}
257
+ */
258
+ private recordingControls(action: RecordingAction): Promise<any> {
259
+ const record = Util.deriveRecordingStates(action);
260
+
261
+ LoggerProxy.logger.log(`RecordingController:index#recordingControls --> ${record}`);
262
+
263
+ // @ts-ignore
264
+ return this.request.request({
265
+ uri: `${this.locusUrl}/${CONTROLS}`,
266
+ body: {
267
+ record,
268
+ },
269
+ method: HTTP_VERBS.PATCH,
270
+ });
271
+ }
272
+
273
+ /**
274
+ * @param {RecordingAction} action
275
+ * @private
276
+ * @memberof RecordingController
277
+ * @returns {Promise}
278
+ */
279
+ private recordingFacade(action: RecordingAction): Promise<any> {
280
+ LoggerProxy.logger.log(
281
+ `RecordingController:index#recordingFacade --> recording action [${action}]`
282
+ );
283
+
284
+ // assumes action is proper cased (i.e., Example)
285
+ if (Util?.[`canUser${action}`](this.displayHints, this.selfUserPolicies)) {
286
+ if (this.serviceUrl) {
287
+ return this.recordingService(action);
288
+ }
289
+
290
+ return this.recordingControls(action);
291
+ }
292
+
293
+ return Promise.reject(
294
+ new PermissionError(`${action} recording not allowed, due to moderator property.`)
295
+ );
296
+ }
297
+
298
+ /**
299
+ * @private
300
+ * @memberof RecordingController
301
+ * @returns {Promise}
302
+ */
303
+ public startRecording(): Promise<any> {
304
+ return this.recordingFacade(RecordingAction.Start);
305
+ }
306
+
307
+ /**
308
+ * @private
309
+ * @memberof RecordingController
310
+ * @returns {Promise}
311
+ */
312
+ public stopRecording(): Promise<any> {
313
+ return this.recordingFacade(RecordingAction.Stop);
314
+ }
315
+
316
+ /**
317
+ * @private
318
+ * @memberof RecordingController
319
+ * @returns {Promise}
320
+ */
321
+ public pauseRecording(): Promise<any> {
322
+ return this.recordingFacade(RecordingAction.Pause);
323
+ }
324
+
325
+ /**
326
+ * @private
327
+ * @memberof RecordingController
328
+ * @returns {Promise}
329
+ */
330
+ public resumeRecording(): Promise<any> {
331
+ return this.recordingFacade(RecordingAction.Resume);
332
+ }
333
+ }
@@ -0,0 +1,75 @@
1
+ import {DISPLAY_HINTS, SELF_POLICY} from '../constants';
2
+ import RecordingAction from './enums';
3
+ import MeetingUtil from '../meeting/util';
4
+
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);
11
+
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);
18
+
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);
25
+
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);
32
+
33
+ const extractLocusId = (url: string) => {
34
+ return url?.split('/').pop();
35
+ };
36
+
37
+ const deriveRecordingStates = (action: RecordingAction): {recording: boolean; paused: boolean} => {
38
+ let recording;
39
+ let paused;
40
+
41
+ switch (action) {
42
+ case RecordingAction.Start:
43
+ recording = true;
44
+ paused = false;
45
+ break;
46
+ case RecordingAction.Stop:
47
+ recording = false;
48
+ paused = false;
49
+ break;
50
+ case RecordingAction.Resume:
51
+ recording = true;
52
+ paused = false;
53
+ break;
54
+ case RecordingAction.Pause:
55
+ recording = true;
56
+ paused = true;
57
+ break;
58
+ default:
59
+ throw new Error(`Recording state cannot be derived from invalid action: ${action}`);
60
+ }
61
+
62
+ return {
63
+ recording,
64
+ paused,
65
+ };
66
+ };
67
+
68
+ export default {
69
+ canUserStart,
70
+ canUserPause,
71
+ canUserResume,
72
+ canUserStop,
73
+ deriveRecordingStates,
74
+ extractLocusId,
75
+ };
@@ -1,3 +1,4 @@
1
+ // @ts-ignore
1
2
  import {StatelessWebexPlugin} from '@webex/webex-core';
2
3
 
3
4
  import {ROAP} from '../constants';
@@ -5,6 +6,7 @@ import LoggerProxy from '../common/logs/logger-proxy';
5
6
 
6
7
  import RoapRequest from './request';
7
8
  import TurnDiscovery from './turnDiscovery';
9
+ import Meeting from '../meeting';
8
10
 
9
11
  /**
10
12
  * Roap options
@@ -17,11 +19,11 @@ import TurnDiscovery from './turnDiscovery';
17
19
  */
18
20
 
19
21
  /**
20
- * @typedef {Object} SeqOptions
21
- * @property {String} correlationId
22
- * @property {String} mediaId
23
- * @property {Number} seq
24
- */
22
+ * @typedef {Object} SeqOptions
23
+ * @property {String} correlationId
24
+ * @property {String} mediaId
25
+ * @property {Number} seq
26
+ */
25
27
 
26
28
  /**
27
29
  * @class Roap
@@ -29,12 +31,19 @@ import TurnDiscovery from './turnDiscovery';
29
31
  * @private
30
32
  */
31
33
  export default class Roap extends StatelessWebexPlugin {
34
+ attrs: any;
35
+ lastRoapOffer: any;
36
+ options: any;
37
+ roapHandler: any;
38
+ roapRequest: any;
39
+ turnDiscovery: any;
40
+
32
41
  /**
33
42
  *
34
43
  * @param {Object} attrs
35
44
  * @param {Object} options
36
45
  */
37
- constructor(attrs, options) {
46
+ constructor(attrs: any, options: any) {
38
47
  super({}, options);
39
48
  /**
40
49
  * @instance
@@ -57,6 +66,7 @@ export default class Roap extends StatelessWebexPlugin {
57
66
  * @private
58
67
  * @memberof Roap
59
68
  */
69
+ // @ts-ignore
60
70
  this.roapRequest = new RoapRequest({}, options);
61
71
 
62
72
  this.turnDiscovery = new TurnDiscovery(this.roapRequest);
@@ -66,16 +76,19 @@ export default class Roap extends StatelessWebexPlugin {
66
76
  *
67
77
  * @param {SeqOptions} options
68
78
  * @returns {null}
69
- * @private
70
79
  * @memberof Roap
71
80
  */
72
- sendRoapOK(options) {
81
+ public sendRoapOK(options: any) {
73
82
  return Promise.resolve().then(() => {
74
- const meeting = this.webex.meetings.meetingCollection.getByKey('correlationId', options.correlationId);
83
+ // @ts-ignore
84
+ const meeting = this.webex.meetings.meetingCollection.getByKey(
85
+ 'correlationId',
86
+ options.correlationId
87
+ );
75
88
  const roapMessage = {
76
89
  messageType: ROAP.ROAP_TYPES.OK,
77
90
  version: ROAP.ROAP_VERSION,
78
- seq: options.seq
91
+ seq: options.seq,
79
92
  };
80
93
 
81
94
  LoggerProxy.logger.log(`Roap:index#sendRoapOK --> ROAP OK sending with seq ${options.seq}`);
@@ -85,11 +98,8 @@ export default class Roap extends StatelessWebexPlugin {
85
98
  roapMessage,
86
99
  locusSelfUrl: meeting.selfUrl,
87
100
  mediaId: options.mediaId,
88
- correlationId: options.correlationId,
89
- audioMuted: meeting.isAudioMuted(),
90
- videoMuted: meeting.isVideoMuted(),
91
101
  meetingId: meeting.id,
92
- preferTranscoding: !meeting.isMultistream,
102
+ locusMediaRequest: meeting.locusMediaRequest,
93
103
  })
94
104
  .then(() => {
95
105
  LoggerProxy.logger.log(`Roap:index#sendRoapOK --> ROAP OK sent with seq ${options.seq}`);
@@ -103,60 +113,61 @@ export default class Roap extends StatelessWebexPlugin {
103
113
  * @param {Boolean} options.audioMuted
104
114
  * @param {Boolean} options.videoMuted
105
115
  * @returns {Promise}
106
- * @private
107
116
  * @memberof Roap
108
117
  */
109
- sendRoapAnswer(options) {
110
- const meeting = this.webex.meetings.meetingCollection.getByKey('correlationId', options.correlationId);
118
+ public sendRoapAnswer(options: any) {
119
+ // @ts-ignore
120
+ const meeting = this.webex.meetings.meetingCollection.getByKey(
121
+ 'correlationId',
122
+ options.correlationId
123
+ );
111
124
  const roapMessage = {
112
125
  messageType: ROAP.ROAP_TYPES.ANSWER,
113
126
  sdps: [options.sdp],
114
127
  version: ROAP.ROAP_VERSION,
115
- seq: options.seq
128
+ seq: options.seq,
116
129
  };
117
130
 
118
- return this.roapRequest
119
- .sendRoap({
120
- roapMessage,
121
- locusSelfUrl: meeting.selfUrl,
122
- mediaId: options.mediaId,
123
- correlationId: options.correlationId,
124
- audioMuted: meeting.isAudioMuted(),
125
- videoMuted: meeting.isVideoMuted(),
126
- meetingId: meeting.id,
127
- preferTranscoding: !meeting.isMultistream,
128
- });
131
+ return this.roapRequest.sendRoap({
132
+ roapMessage,
133
+ locusSelfUrl: meeting.selfUrl,
134
+ mediaId: options.mediaId,
135
+ meetingId: meeting.id,
136
+ locusMediaRequest: meeting.locusMediaRequest,
137
+ });
129
138
  }
130
139
 
131
140
  /**
132
141
  * Sends a ROAP error...
133
142
  * @param {Object} options
134
143
  * @returns {Promise}
135
- * @private
136
144
  * @memberof Roap
137
145
  */
138
146
  sendRoapError(options) {
139
- const meeting = this.webex.meetings.meetingCollection.getByKey('correlationId', options.correlationId);
147
+ // @ts-ignore
148
+ const meeting = this.webex.meetings.meetingCollection.getByKey(
149
+ 'correlationId',
150
+ options.correlationId
151
+ );
140
152
  const roapMessage = {
141
153
  messageType: ROAP.ROAP_TYPES.ERROR,
142
154
  version: ROAP.ROAP_VERSION,
143
155
  errorType: options.errorType,
144
- seq: options.seq
145
-
156
+ seq: options.seq,
146
157
  };
147
158
 
148
- return this.roapRequest.sendRoap({
149
- roapMessage,
150
- locusSelfUrl: meeting.selfUrl,
151
- mediaId: options.mediaId,
152
- correlationId: options.correlationId,
153
- audioMuted: meeting.isAudioMuted(),
154
- videoMuted: meeting.isVideoMuted(),
155
- meetingId: meeting.id,
156
- preferTranscoding: !meeting.isMultistream,
157
- })
159
+ return this.roapRequest
160
+ .sendRoap({
161
+ roapMessage,
162
+ locusSelfUrl: meeting.selfUrl,
163
+ mediaId: options.mediaId,
164
+ meetingId: meeting.id,
165
+ locusMediaRequest: meeting.locusMediaRequest,
166
+ })
158
167
  .then(() => {
159
- LoggerProxy.logger.log(`Roap:index#sendRoapError --> ROAP ERROR sent with seq ${options.seq}`);
168
+ LoggerProxy.logger.log(
169
+ `Roap:index#sendRoapError --> ROAP ERROR sent with seq ${options.seq}`
170
+ );
160
171
  });
161
172
  }
162
173
 
@@ -164,57 +175,54 @@ export default class Roap extends StatelessWebexPlugin {
164
175
  * sends a roap media request
165
176
  * @param {RoapOptions} options
166
177
  * @returns {Promise}
167
- * @private
168
178
  * @memberof Roap
169
179
  */
170
- sendRoapMediaRequest(options) {
171
- const {
172
- meeting, seq, sdp, reconnect, tieBreaker
173
- } = options;
180
+ sendRoapMediaRequest(options: any) {
181
+ const {meeting, seq, sdp, reconnect, tieBreaker} = options;
174
182
  const roapMessage = {
175
183
  messageType: ROAP.ROAP_TYPES.OFFER,
176
184
  sdps: [sdp],
177
185
  version: ROAP.ROAP_VERSION,
178
186
  seq,
179
- tieBreaker
187
+ tieBreaker,
180
188
  };
181
189
 
182
190
  // When reconnecting, it's important that the first roap message being sent out has empty media id.
183
191
  // Normally this is the roap offer, but when TURN discovery is enabled,
184
192
  // then this is the TURN discovery request message
185
- const sendEmptyMediaId = reconnect && !meeting.config.experimental.enableTurnDiscovery;
193
+ return this.turnDiscovery.isSkipped(meeting).then((isTurnDiscoverySkipped) => {
194
+ const sendEmptyMediaId = reconnect && isTurnDiscoverySkipped;
186
195
 
187
- return this.roapRequest
188
- .sendRoap({
189
- roapMessage,
190
- correlationId: meeting.correlationId,
191
- locusSelfUrl: meeting.selfUrl,
192
- mediaId: sendEmptyMediaId ? '' : meeting.mediaId,
193
- audioMuted: meeting.isAudioMuted(),
194
- videoMuted: meeting.isVideoMuted(),
195
- meetingId: meeting.id,
196
- preferTranscoding: !meeting.isMultistream,
197
- })
198
- .then(({locus, mediaConnections}) => {
199
- if (mediaConnections) {
200
- meeting.updateMediaConnections(mediaConnections);
201
- }
196
+ return this.roapRequest
197
+ .sendRoap({
198
+ roapMessage,
199
+ locusSelfUrl: meeting.selfUrl,
200
+ mediaId: sendEmptyMediaId ? '' : meeting.mediaId,
201
+ meetingId: meeting.id,
202
+ preferTranscoding: !meeting.isMultistream,
203
+ locusMediaRequest: meeting.locusMediaRequest,
204
+ })
205
+ .then(({locus, mediaConnections}) => {
206
+ if (mediaConnections) {
207
+ meeting.updateMediaConnections(mediaConnections);
208
+ }
202
209
 
203
- return locus;
204
- });
210
+ return locus;
211
+ });
212
+ });
205
213
  }
206
214
 
207
215
  /**
208
- * Performs a TURN server discovery procedure, which involves exchanging
209
- * some roap messages with the server. This exchange has to be done before
210
- * any other roap messages are sent
211
- *
212
- * @param {Meeting} meeting
213
- * @param {Boolean} isReconnecting should be set to true if this is a new
214
- * media connection just after a reconnection
215
- * @returns {Promise}
216
- */
217
- doTurnDiscovery(meeting, isReconnecting) {
216
+ * Performs a TURN server discovery procedure, which involves exchanging
217
+ * some roap messages with the server. This exchange has to be done before
218
+ * any other roap messages are sent
219
+ *
220
+ * @param {Meeting} meeting
221
+ * @param {Boolean} isReconnecting should be set to true if this is a new
222
+ * media connection just after a reconnection
223
+ * @returns {Promise}
224
+ */
225
+ doTurnDiscovery(meeting: Meeting, isReconnecting: boolean) {
218
226
  return this.turnDiscovery.doTurnDiscovery(meeting, isReconnecting);
219
227
  }
220
228
  }