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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (433) hide show
  1. package/README.md +46 -8
  2. package/dist/annotation/annotation.types.js +7 -0
  3. package/dist/annotation/annotation.types.js.map +1 -0
  4. package/dist/annotation/constants.js +41 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +357 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +215 -0
  9. package/dist/breakouts/breakout.js.map +1 -0
  10. package/dist/breakouts/collection.js +22 -0
  11. package/dist/breakouts/collection.js.map +1 -0
  12. package/dist/breakouts/edit-lock-error.js +51 -0
  13. package/dist/breakouts/edit-lock-error.js.map +1 -0
  14. package/dist/breakouts/events.js +44 -0
  15. package/dist/breakouts/events.js.map +1 -0
  16. package/dist/breakouts/index.js +1047 -0
  17. package/dist/breakouts/index.js.map +1 -0
  18. package/dist/breakouts/request.js +77 -0
  19. package/dist/breakouts/request.js.map +1 -0
  20. package/dist/breakouts/utils.js +64 -0
  21. package/dist/breakouts/utils.js.map +1 -0
  22. package/dist/common/browser-detection.js +1 -2
  23. package/dist/common/browser-detection.js.map +1 -1
  24. package/dist/common/collection.js +1 -2
  25. package/dist/common/collection.js.map +1 -1
  26. package/dist/common/config.js +1 -2
  27. package/dist/common/config.js.map +1 -1
  28. package/dist/common/errors/captcha-error.js +1 -2
  29. package/dist/common/errors/captcha-error.js.map +1 -1
  30. package/dist/common/errors/intent-to-join.js +1 -2
  31. package/dist/common/errors/intent-to-join.js.map +1 -1
  32. package/dist/common/errors/join-meeting.js +1 -2
  33. package/dist/common/errors/join-meeting.js.map +1 -1
  34. package/dist/common/errors/media.js +1 -2
  35. package/dist/common/errors/media.js.map +1 -1
  36. package/dist/common/errors/no-meeting-info.js +50 -0
  37. package/dist/common/errors/no-meeting-info.js.map +1 -0
  38. package/dist/common/errors/parameter.js +3 -4
  39. package/dist/common/errors/parameter.js.map +1 -1
  40. package/dist/common/errors/password-error.js +1 -2
  41. package/dist/common/errors/password-error.js.map +1 -1
  42. package/dist/common/errors/permission.js +1 -2
  43. package/dist/common/errors/permission.js.map +1 -1
  44. package/dist/common/errors/reclaim-host-role-errors.js +154 -0
  45. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  46. package/dist/common/errors/reconnection-in-progress.js +1 -2
  47. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  48. package/dist/common/errors/reconnection.js +1 -2
  49. package/dist/common/errors/reconnection.js.map +1 -1
  50. package/dist/common/errors/stats.js +1 -2
  51. package/dist/common/errors/stats.js.map +1 -1
  52. package/dist/common/errors/webex-errors.js +48 -28
  53. package/dist/common/errors/webex-errors.js.map +1 -1
  54. package/dist/common/errors/webex-meetings-error.js +1 -2
  55. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  56. package/dist/common/events/events-scope.js +1 -2
  57. package/dist/common/events/events-scope.js.map +1 -1
  58. package/dist/common/events/events.js +1 -2
  59. package/dist/common/events/events.js.map +1 -1
  60. package/dist/common/events/trigger-proxy.js +1 -2
  61. package/dist/common/events/trigger-proxy.js.map +1 -1
  62. package/dist/common/events/util.js +1 -2
  63. package/dist/common/events/util.js.map +1 -1
  64. package/dist/common/logs/logger-config.js +1 -2
  65. package/dist/common/logs/logger-config.js.map +1 -1
  66. package/dist/common/logs/logger-proxy.js +2 -3
  67. package/dist/common/logs/logger-proxy.js.map +1 -1
  68. package/dist/common/logs/request.js +8 -5
  69. package/dist/common/logs/request.js.map +1 -1
  70. package/dist/common/queue.js +22 -9
  71. package/dist/common/queue.js.map +1 -1
  72. package/dist/config.js +9 -12
  73. package/dist/config.js.map +1 -1
  74. package/dist/constants.js +437 -433
  75. package/dist/constants.js.map +1 -1
  76. package/dist/controls-options-manager/constants.js +3 -6
  77. package/dist/controls-options-manager/constants.js.map +1 -1
  78. package/dist/controls-options-manager/enums.js +14 -6
  79. package/dist/controls-options-manager/enums.js.map +1 -1
  80. package/dist/controls-options-manager/index.js +126 -37
  81. package/dist/controls-options-manager/index.js.map +1 -1
  82. package/dist/controls-options-manager/types.js +7 -0
  83. package/dist/controls-options-manager/types.js.map +1 -0
  84. package/dist/controls-options-manager/util.js +309 -19
  85. package/dist/controls-options-manager/util.js.map +1 -1
  86. package/dist/index.js +116 -4
  87. package/dist/index.js.map +1 -1
  88. package/dist/interpretation/collection.js +22 -0
  89. package/dist/interpretation/collection.js.map +1 -0
  90. package/dist/interpretation/index.js +365 -0
  91. package/dist/interpretation/index.js.map +1 -0
  92. package/dist/interpretation/siLanguage.js +24 -0
  93. package/dist/interpretation/siLanguage.js.map +1 -0
  94. package/dist/locus-info/controlsUtils.js +95 -6
  95. package/dist/locus-info/controlsUtils.js.map +1 -1
  96. package/dist/locus-info/embeddedAppsUtils.js +3 -4
  97. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  98. package/dist/locus-info/fullState.js +1 -2
  99. package/dist/locus-info/fullState.js.map +1 -1
  100. package/dist/locus-info/hostUtils.js +1 -2
  101. package/dist/locus-info/hostUtils.js.map +1 -1
  102. package/dist/locus-info/index.js +408 -67
  103. package/dist/locus-info/index.js.map +1 -1
  104. package/dist/locus-info/infoUtils.js +13 -5
  105. package/dist/locus-info/infoUtils.js.map +1 -1
  106. package/dist/locus-info/mediaSharesUtils.js +58 -3
  107. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  108. package/dist/locus-info/parser.js +251 -78
  109. package/dist/locus-info/parser.js.map +1 -1
  110. package/dist/locus-info/selfUtils.js +97 -13
  111. package/dist/locus-info/selfUtils.js.map +1 -1
  112. package/dist/media/index.js +106 -319
  113. package/dist/media/index.js.map +1 -1
  114. package/dist/media/properties.js +96 -153
  115. package/dist/media/properties.js.map +1 -1
  116. package/dist/media/util.js +1 -22
  117. package/dist/media/util.js.map +1 -1
  118. package/dist/mediaQualityMetrics/config.js +498 -493
  119. package/dist/mediaQualityMetrics/config.js.map +1 -1
  120. package/dist/meeting/in-meeting-actions.js +90 -3
  121. package/dist/meeting/in-meeting-actions.js.map +1 -1
  122. package/dist/meeting/index.js +4579 -2951
  123. package/dist/meeting/index.js.map +1 -1
  124. package/dist/meeting/locusMediaRequest.js +291 -0
  125. package/dist/meeting/locusMediaRequest.js.map +1 -0
  126. package/dist/meeting/muteState.js +224 -133
  127. package/dist/meeting/muteState.js.map +1 -1
  128. package/dist/meeting/request.js +295 -197
  129. package/dist/meeting/request.js.map +1 -1
  130. package/dist/meeting/request.type.js +7 -0
  131. package/dist/meeting/request.type.js.map +1 -0
  132. package/dist/meeting/state.js +1 -2
  133. package/dist/meeting/state.js.map +1 -1
  134. package/dist/meeting/util.js +602 -432
  135. package/dist/meeting/util.js.map +1 -1
  136. package/dist/meeting-info/collection.js +1 -2
  137. package/dist/meeting-info/collection.js.map +1 -1
  138. package/dist/meeting-info/index.js +74 -7
  139. package/dist/meeting-info/index.js.map +1 -1
  140. package/dist/meeting-info/meeting-info-v2.js +197 -63
  141. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  142. package/dist/meeting-info/request.js +1 -2
  143. package/dist/meeting-info/request.js.map +1 -1
  144. package/dist/meeting-info/util.js +2 -3
  145. package/dist/meeting-info/util.js.map +1 -1
  146. package/dist/meeting-info/utilv2.js +25 -12
  147. package/dist/meeting-info/utilv2.js.map +1 -1
  148. package/dist/meetings/collection.js +23 -2
  149. package/dist/meetings/collection.js.map +1 -1
  150. package/dist/meetings/index.js +464 -123
  151. package/dist/meetings/index.js.map +1 -1
  152. package/dist/meetings/meetings.types.js +7 -0
  153. package/dist/meetings/meetings.types.js.map +1 -0
  154. package/dist/meetings/request.js +4 -3
  155. package/dist/meetings/request.js.map +1 -1
  156. package/dist/meetings/util.js +107 -6
  157. package/dist/meetings/util.js.map +1 -1
  158. package/dist/member/index.js +54 -2
  159. package/dist/member/index.js.map +1 -1
  160. package/dist/member/member.types.js +3 -4
  161. package/dist/member/member.types.js.map +1 -1
  162. package/dist/member/types.js +23 -0
  163. package/dist/member/types.js.map +1 -0
  164. package/dist/member/util.js +131 -29
  165. package/dist/member/util.js.map +1 -1
  166. package/dist/members/collection.js +11 -2
  167. package/dist/members/collection.js.map +1 -1
  168. package/dist/members/index.js +172 -8
  169. package/dist/members/index.js.map +1 -1
  170. package/dist/members/request.js +108 -41
  171. package/dist/members/request.js.map +1 -1
  172. package/dist/members/types.js +14 -0
  173. package/dist/members/types.js.map +1 -0
  174. package/dist/members/util.js +327 -234
  175. package/dist/members/util.js.map +1 -1
  176. package/dist/metrics/constants.js +14 -7
  177. package/dist/metrics/constants.js.map +1 -1
  178. package/dist/metrics/index.js +4 -452
  179. package/dist/metrics/index.js.map +1 -1
  180. package/dist/multistream/mediaRequestManager.js +344 -0
  181. package/dist/multistream/mediaRequestManager.js.map +1 -0
  182. package/dist/multistream/receiveSlot.js +200 -0
  183. package/dist/multistream/receiveSlot.js.map +1 -0
  184. package/dist/multistream/receiveSlotManager.js +174 -0
  185. package/dist/multistream/receiveSlotManager.js.map +1 -0
  186. package/dist/multistream/remoteMedia.js +268 -0
  187. package/dist/multistream/remoteMedia.js.map +1 -0
  188. package/dist/multistream/remoteMediaGroup.js +267 -0
  189. package/dist/multistream/remoteMediaGroup.js.map +1 -0
  190. package/dist/multistream/remoteMediaManager.js +1211 -0
  191. package/dist/multistream/remoteMediaManager.js.map +1 -0
  192. package/dist/multistream/sendSlotManager.js +236 -0
  193. package/dist/multistream/sendSlotManager.js.map +1 -0
  194. package/dist/networkQualityMonitor/index.js +5 -4
  195. package/dist/networkQualityMonitor/index.js.map +1 -1
  196. package/dist/personal-meeting-room/index.js +2 -3
  197. package/dist/personal-meeting-room/index.js.map +1 -1
  198. package/dist/personal-meeting-room/request.js +2 -3
  199. package/dist/personal-meeting-room/request.js.map +1 -1
  200. package/dist/personal-meeting-room/util.js +1 -2
  201. package/dist/personal-meeting-room/util.js.map +1 -1
  202. package/dist/reachability/index.js +258 -72
  203. package/dist/reachability/index.js.map +1 -1
  204. package/dist/reachability/request.js +18 -10
  205. package/dist/reachability/request.js.map +1 -1
  206. package/dist/reactions/constants.js +12 -0
  207. package/dist/reactions/constants.js.map +1 -0
  208. package/dist/reactions/reactions.js +4 -6
  209. package/dist/reactions/reactions.js.map +1 -1
  210. package/dist/reactions/reactions.type.js +21 -23
  211. package/dist/reactions/reactions.type.js.map +1 -1
  212. package/dist/reconnection-manager/index.js +272 -220
  213. package/dist/reconnection-manager/index.js.map +1 -1
  214. package/dist/recording-controller/enums.js +4 -5
  215. package/dist/recording-controller/enums.js.map +1 -1
  216. package/dist/recording-controller/index.js +57 -46
  217. package/dist/recording-controller/index.js.map +1 -1
  218. package/dist/recording-controller/util.js +10 -10
  219. package/dist/recording-controller/util.js.map +1 -1
  220. package/dist/roap/index.js +101 -235
  221. package/dist/roap/index.js.map +1 -1
  222. package/dist/roap/request.js +126 -180
  223. package/dist/roap/request.js.map +1 -1
  224. package/dist/roap/turnDiscovery.js +115 -105
  225. package/dist/roap/turnDiscovery.js.map +1 -1
  226. package/dist/rtcMetrics/constants.js +11 -0
  227. package/dist/rtcMetrics/constants.js.map +1 -0
  228. package/dist/rtcMetrics/index.js +115 -0
  229. package/dist/rtcMetrics/index.js.map +1 -0
  230. package/dist/statsAnalyzer/global.js +2 -93
  231. package/dist/statsAnalyzer/global.js.map +1 -1
  232. package/dist/statsAnalyzer/index.js +374 -374
  233. package/dist/statsAnalyzer/index.js.map +1 -1
  234. package/dist/statsAnalyzer/mqaUtil.js +100 -66
  235. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  236. package/dist/transcription/index.js +1 -2
  237. package/dist/transcription/index.js.map +1 -1
  238. package/dist/webinar/collection.js +43 -0
  239. package/dist/webinar/collection.js.map +1 -0
  240. package/dist/webinar/index.js +68 -0
  241. package/dist/webinar/index.js.map +1 -0
  242. package/package.json +27 -18
  243. package/src/annotation/annotation.types.ts +50 -0
  244. package/src/annotation/constants.ts +36 -0
  245. package/src/annotation/index.ts +328 -0
  246. package/src/breakouts/README.md +220 -0
  247. package/src/breakouts/breakout.ts +188 -0
  248. package/src/breakouts/collection.ts +19 -0
  249. package/src/breakouts/edit-lock-error.ts +25 -0
  250. package/src/breakouts/events.ts +56 -0
  251. package/src/breakouts/index.ts +925 -0
  252. package/src/breakouts/request.ts +55 -0
  253. package/src/breakouts/utils.ts +57 -0
  254. package/src/common/errors/no-meeting-info.ts +24 -0
  255. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  256. package/src/common/errors/webex-errors.ts +36 -12
  257. package/src/common/logs/logger-proxy.ts +1 -1
  258. package/src/common/logs/request.ts +5 -1
  259. package/src/common/queue.ts +22 -8
  260. package/src/config.ts +7 -9
  261. package/src/constants.ts +263 -89
  262. package/src/controls-options-manager/enums.ts +11 -1
  263. package/src/controls-options-manager/index.ts +116 -21
  264. package/src/controls-options-manager/types.ts +59 -0
  265. package/src/controls-options-manager/util.ts +294 -14
  266. package/src/index.ts +40 -0
  267. package/src/interpretation/README.md +60 -0
  268. package/src/interpretation/collection.ts +19 -0
  269. package/src/interpretation/index.ts +332 -0
  270. package/src/interpretation/siLanguage.ts +18 -0
  271. package/src/locus-info/controlsUtils.ts +110 -0
  272. package/src/locus-info/index.ts +449 -61
  273. package/src/locus-info/infoUtils.ts +14 -2
  274. package/src/locus-info/mediaSharesUtils.ts +64 -0
  275. package/src/locus-info/parser.ts +258 -47
  276. package/src/locus-info/selfUtils.ts +85 -2
  277. package/src/media/index.ts +153 -370
  278. package/src/media/properties.ts +106 -136
  279. package/src/media/util.ts +0 -21
  280. package/src/mediaQualityMetrics/config.ts +379 -377
  281. package/src/meeting/in-meeting-actions.ts +168 -0
  282. package/src/meeting/index.ts +3801 -2457
  283. package/src/meeting/locusMediaRequest.ts +313 -0
  284. package/src/meeting/muteState.ts +224 -138
  285. package/src/meeting/request.ts +207 -127
  286. package/src/meeting/request.type.ts +13 -0
  287. package/src/meeting/util.ts +590 -423
  288. package/src/meeting-info/index.ts +81 -8
  289. package/src/meeting-info/meeting-info-v2.ts +159 -13
  290. package/src/meeting-info/util.ts +1 -1
  291. package/src/meeting-info/utilv2.ts +22 -9
  292. package/src/meetings/collection.ts +20 -0
  293. package/src/meetings/index.ts +466 -124
  294. package/src/meetings/meetings.types.ts +12 -0
  295. package/src/meetings/request.ts +2 -0
  296. package/src/meetings/util.ts +116 -5
  297. package/src/member/index.ts +52 -1
  298. package/src/member/types.ts +38 -0
  299. package/src/member/util.ts +139 -28
  300. package/src/members/collection.ts +8 -0
  301. package/src/members/index.ts +196 -7
  302. package/src/members/request.ts +97 -17
  303. package/src/members/types.ts +29 -0
  304. package/src/members/util.ts +333 -240
  305. package/src/metrics/constants.ts +12 -4
  306. package/src/metrics/index.ts +1 -471
  307. package/src/multistream/mediaRequestManager.ts +440 -0
  308. package/src/multistream/receiveSlot.ts +184 -0
  309. package/src/multistream/receiveSlotManager.ts +166 -0
  310. package/src/multistream/remoteMedia.ts +254 -0
  311. package/src/multistream/remoteMediaGroup.ts +284 -0
  312. package/src/multistream/remoteMediaManager.ts +1145 -0
  313. package/src/multistream/sendSlotManager.ts +170 -0
  314. package/src/networkQualityMonitor/index.ts +6 -6
  315. package/src/reachability/index.ts +238 -45
  316. package/src/reachability/request.ts +17 -8
  317. package/src/reactions/constants.ts +4 -0
  318. package/src/reactions/reactions.ts +4 -4
  319. package/src/reactions/reactions.type.ts +30 -4
  320. package/src/reconnection-manager/index.ts +124 -107
  321. package/src/recording-controller/index.ts +20 -3
  322. package/src/recording-controller/util.ts +26 -9
  323. package/src/roap/index.ts +98 -240
  324. package/src/roap/request.ts +74 -148
  325. package/src/roap/turnDiscovery.ts +62 -56
  326. package/src/rtcMetrics/constants.ts +3 -0
  327. package/src/rtcMetrics/index.ts +100 -0
  328. package/src/statsAnalyzer/global.ts +1 -92
  329. package/src/statsAnalyzer/index.ts +429 -447
  330. package/src/statsAnalyzer/mqaUtil.ts +105 -103
  331. package/src/webinar/collection.ts +31 -0
  332. package/src/webinar/index.ts +62 -0
  333. package/test/integration/spec/converged-space-meetings.js +233 -0
  334. package/test/integration/spec/journey.js +320 -264
  335. package/test/integration/spec/space-meeting.js +77 -4
  336. package/test/unit/spec/annotation/index.ts +418 -0
  337. package/test/unit/spec/breakouts/breakout.ts +237 -0
  338. package/test/unit/spec/breakouts/collection.ts +15 -0
  339. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  340. package/test/unit/spec/breakouts/events.ts +89 -0
  341. package/test/unit/spec/breakouts/index.ts +1790 -0
  342. package/test/unit/spec/breakouts/request.ts +104 -0
  343. package/test/unit/spec/breakouts/utils.js +72 -0
  344. package/test/unit/spec/common/queue.js +31 -2
  345. package/test/unit/spec/controls-options-manager/index.js +163 -0
  346. package/test/unit/spec/controls-options-manager/util.js +576 -60
  347. package/test/unit/spec/fixture/locus.js +1 -0
  348. package/test/unit/spec/interpretation/collection.ts +15 -0
  349. package/test/unit/spec/interpretation/index.ts +589 -0
  350. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  351. package/test/unit/spec/locus-info/controlsUtils.js +323 -30
  352. package/test/unit/spec/locus-info/index.js +1390 -16
  353. package/test/unit/spec/locus-info/infoUtils.js +54 -16
  354. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  355. package/test/unit/spec/locus-info/lib/selfConstant.js +48 -0
  356. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  357. package/test/unit/spec/locus-info/parser.js +116 -35
  358. package/test/unit/spec/locus-info/selfUtils.js +275 -0
  359. package/test/unit/spec/media/index.ts +274 -0
  360. package/test/unit/spec/media/properties.ts +75 -84
  361. package/test/unit/spec/meeting/in-meeting-actions.ts +82 -0
  362. package/test/unit/spec/meeting/index.js +7420 -3125
  363. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  364. package/test/unit/spec/meeting/muteState.js +407 -212
  365. package/test/unit/spec/meeting/request.js +512 -42
  366. package/test/unit/spec/meeting/utils.js +741 -24
  367. package/test/unit/spec/meeting-info/index.js +300 -0
  368. package/test/unit/spec/meeting-info/meetinginfov2.js +500 -6
  369. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  370. package/test/unit/spec/meetings/collection.js +14 -0
  371. package/test/unit/spec/meetings/index.js +1012 -209
  372. package/test/unit/spec/meetings/utils.js +202 -2
  373. package/test/unit/spec/member/index.js +38 -8
  374. package/test/unit/spec/member/util.js +528 -27
  375. package/test/unit/spec/members/index.js +597 -3
  376. package/test/unit/spec/members/request.js +206 -27
  377. package/test/unit/spec/members/utils.js +210 -0
  378. package/test/unit/spec/metrics/index.js +1 -50
  379. package/test/unit/spec/multistream/mediaRequestManager.ts +1418 -0
  380. package/test/unit/spec/multistream/receiveSlot.ts +163 -0
  381. package/test/unit/spec/multistream/receiveSlotManager.ts +203 -0
  382. package/test/unit/spec/multistream/remoteMedia.ts +255 -0
  383. package/test/unit/spec/multistream/remoteMediaGroup.ts +662 -0
  384. package/test/unit/spec/multistream/remoteMediaManager.ts +1924 -0
  385. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  386. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  387. package/test/unit/spec/reachability/index.ts +598 -24
  388. package/test/unit/spec/reachability/request.js +68 -0
  389. package/test/unit/spec/reconnection-manager/index.js +130 -22
  390. package/test/unit/spec/recording-controller/index.js +293 -218
  391. package/test/unit/spec/recording-controller/util.js +223 -96
  392. package/test/unit/spec/roap/index.ts +200 -77
  393. package/test/unit/spec/roap/request.ts +232 -0
  394. package/test/unit/spec/roap/turnDiscovery.ts +86 -48
  395. package/test/unit/spec/rtcMetrics/index.ts +73 -0
  396. package/test/unit/spec/stats-analyzer/index.js +205 -50
  397. package/test/unit/spec/webinar/collection.ts +13 -0
  398. package/test/unit/spec/webinar/index.ts +60 -0
  399. package/test/utils/constants.js +9 -0
  400. package/test/utils/integrationTestUtils.js +46 -0
  401. package/test/utils/testUtils.js +0 -45
  402. package/test/utils/webex-config.js +4 -0
  403. package/test/utils/webex-test-users.js +7 -3
  404. package/dist/meeting/effectsState.js +0 -260
  405. package/dist/meeting/effectsState.js.map +0 -1
  406. package/dist/metrics/config.js +0 -289
  407. package/dist/metrics/config.js.map +0 -1
  408. package/dist/peer-connection-manager/index.js +0 -671
  409. package/dist/peer-connection-manager/index.js.map +0 -1
  410. package/dist/peer-connection-manager/util.js +0 -110
  411. package/dist/peer-connection-manager/util.js.map +0 -1
  412. package/dist/roap/collection.js +0 -63
  413. package/dist/roap/collection.js.map +0 -1
  414. package/dist/roap/handler.js +0 -279
  415. package/dist/roap/handler.js.map +0 -1
  416. package/dist/roap/state.js +0 -127
  417. package/dist/roap/state.js.map +0 -1
  418. package/dist/roap/util.js +0 -76
  419. package/dist/roap/util.js.map +0 -1
  420. package/src/index.js +0 -15
  421. package/src/meeting/effectsState.ts +0 -209
  422. package/src/metrics/config.ts +0 -485
  423. package/src/peer-connection-manager/index.ts +0 -847
  424. package/src/peer-connection-manager/util.ts +0 -119
  425. package/src/roap/collection.ts +0 -62
  426. package/src/roap/handler.ts +0 -294
  427. package/src/roap/state.ts +0 -156
  428. package/src/roap/util.ts +0 -100
  429. package/test/unit/spec/meeting/effectsState.js +0 -281
  430. package/test/unit/spec/peerconnection-manager/index.js +0 -218
  431. package/test/unit/spec/peerconnection-manager/utils.js +0 -49
  432. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -388
  433. package/test/unit/spec/roap/util.js +0 -30
package/src/roap/index.ts CHANGED
@@ -3,21 +3,22 @@ import {StatelessWebexPlugin} from '@webex/webex-core';
3
3
 
4
4
  import {ROAP} from '../constants';
5
5
  import LoggerProxy from '../common/logs/logger-proxy';
6
- import MeetingUtil from '../meeting/util';
7
6
 
8
- import RoapHandler from './handler';
9
7
  import RoapRequest from './request';
10
- import RoapCollection from './collection';
11
8
  import TurnDiscovery from './turnDiscovery';
12
9
  import Meeting from '../meeting';
10
+ import MeetingUtil from '../meeting/util';
11
+ import Metrics from '../metrics';
12
+ import BEHAVIORAL_METRICS from '../metrics/constants';
13
13
 
14
14
  /**
15
15
  * Roap options
16
16
  * @typedef {Object} RoapOptions
17
17
  * @property {String} sdp
18
18
  * @property {Meeting} meeting
19
- * @property {Number} roapSeq
20
- * @property {Boolean} reconnect
19
+ * @property {Number} seq
20
+ * @property {Number} tieBreaker
21
+ * @property {Boolean} reconnect
21
22
  */
22
23
 
23
24
  /**
@@ -61,20 +62,6 @@ export default class Roap extends StatelessWebexPlugin {
61
62
  * @memberof Roap
62
63
  */
63
64
  this.options = options;
64
- /**
65
- * The Roap Process State Handler
66
- * @instance
67
- * @type {RoapHandler}
68
- * @private
69
- * @memberof Roap
70
- */
71
- this.roapHandler = new RoapHandler(
72
- this.attrs,
73
- this.options,
74
- this.sendRoapOK.bind(this),
75
- this.sendRoapAnswer.bind(this),
76
- this.roapFinished.bind(this)
77
- );
78
65
  /**
79
66
  * The Roap Request Server Proxy Object
80
67
  * @instance
@@ -84,72 +71,17 @@ export default class Roap extends StatelessWebexPlugin {
84
71
  */
85
72
  // @ts-ignore
86
73
  this.roapRequest = new RoapRequest({}, options);
87
- /**
88
- * The last roap offer sent to server and acked
89
- * @instance
90
- * @type {Object}
91
- * @private
92
- * @memberof Roap
93
- */
94
- this.lastRoapOffer = {};
95
74
 
96
75
  this.turnDiscovery = new TurnDiscovery(this.roapRequest);
97
76
  }
98
77
 
99
- /**
100
- * Starts listening to mercury events for Roap messages
101
- * @param {object} data event object
102
- * @returns {Promise}
103
- * @private
104
- * @memberof Roap
105
- */
106
- private roapEvent(data: any) {
107
- const msg = data.message;
108
- const {correlationId} = data;
109
-
110
- LoggerProxy.logger.log(
111
- `Roap:index#roapEvent --> Received Roap Message [${JSON.stringify(msg, null, 2)}]`
112
- );
113
-
114
- if (msg.messageType === ROAP.ROAP_TYPES.TURN_DISCOVERY_RESPONSE) {
115
- // turn discovery is not part of normal roap protocol and so we are not handling it
116
- // through the usual roap state machine
117
- this.turnDiscovery.handleTurnDiscoveryResponse(msg);
118
- } else {
119
- this.roapHandler.submit({
120
- type: ROAP.RECEIVE_ROAP_MSG,
121
- msg,
122
- correlationId,
123
- });
124
- }
125
- }
126
-
127
- /**
128
- *
129
- * @param {String} correlationId correlation id of a meeting
130
- * @param {Number} seq ROAP sequence number
131
- * @returns {Promise}
132
- * @private
133
- * @memberof Roap
134
- */
135
- private stop(correlationId: string, seq: number) {
136
- this.roapHandler.submit({
137
- type: ROAP.RECEIVE_CALL_LEAVE,
138
- seq,
139
- correlationId,
140
- });
141
-
142
- return Promise.resolve();
143
- }
144
-
145
78
  /**
146
79
  *
147
80
  * @param {SeqOptions} options
148
81
  * @returns {null}
149
- * @private
150
82
  * @memberof Roap
151
83
  */
152
- private sendRoapOK(options: any) {
84
+ public sendRoapOK(options: any) {
153
85
  return Promise.resolve().then(() => {
154
86
  // @ts-ignore
155
87
  const meeting = this.webex.meetings.meetingCollection.getByKey(
@@ -169,35 +101,26 @@ export default class Roap extends StatelessWebexPlugin {
169
101
  roapMessage,
170
102
  locusSelfUrl: meeting.selfUrl,
171
103
  mediaId: options.mediaId,
172
- correlationId: options.correlationId,
173
104
  audioMuted: meeting.audio?.isLocallyMuted(),
174
105
  videoMuted: meeting.video?.isLocallyMuted(),
175
106
  meetingId: meeting.id,
107
+ locusMediaRequest: meeting.locusMediaRequest,
176
108
  })
177
109
  .then(() => {
178
- this.roapHandler.submit({
179
- type: ROAP.SEND_ROAP_MSG,
180
- msg: roapMessage,
181
- correlationId: options.correlationId,
182
- });
183
110
  LoggerProxy.logger.log(`Roap:index#sendRoapOK --> ROAP OK sent with seq ${options.seq}`);
184
- meeting.setRoapSeq(options.seq);
185
111
  });
186
112
  });
187
113
  }
188
114
 
189
- // eslint-disable-next-line no-warning-comments
190
- // TODO: try to merge sendRoapOk and roapAnswer
191
115
  /**
192
116
  * Sends a ROAP answer...
193
117
  * @param {SeqOptions} options
194
118
  * @param {Boolean} options.audioMuted
195
119
  * @param {Boolean} options.videoMuted
196
120
  * @returns {Promise}
197
- * @private
198
121
  * @memberof Roap
199
122
  */
200
- private sendRoapAnswer(options: any) {
123
+ public sendRoapAnswer(options: any) {
201
124
  // @ts-ignore
202
125
  const meeting = this.webex.meetings.meetingCollection.getByKey(
203
126
  'correlationId',
@@ -205,199 +128,133 @@ export default class Roap extends StatelessWebexPlugin {
205
128
  );
206
129
  const roapMessage = {
207
130
  messageType: ROAP.ROAP_TYPES.ANSWER,
208
- sdps: options.sdps,
131
+ sdps: [options.sdp],
209
132
  version: ROAP.ROAP_VERSION,
210
133
  seq: options.seq,
211
134
  };
212
135
 
213
- this.roapHandler.submit({
214
- type: ROAP.SEND_ROAP_MSG,
215
- msg: roapMessage,
216
- correlationId: options.correlationId,
136
+ return this.roapRequest.sendRoap({
137
+ roapMessage,
138
+ locusSelfUrl: meeting.selfUrl,
139
+ mediaId: options.mediaId,
140
+ meetingId: meeting.id,
141
+ audioMuted: meeting.audio?.isLocallyMuted(),
142
+ videoMuted: meeting.video?.isLocallyMuted(),
143
+ locusMediaRequest: meeting.locusMediaRequest,
217
144
  });
145
+ }
146
+
147
+ /**
148
+ * Sends a ROAP error...
149
+ * @param {Object} options
150
+ * @returns {Promise}
151
+ * @memberof Roap
152
+ */
153
+ sendRoapError(options) {
154
+ // @ts-ignore
155
+ const meeting = this.webex.meetings.meetingCollection.getByKey(
156
+ 'correlationId',
157
+ options.correlationId
158
+ );
159
+ const roapMessage = {
160
+ messageType: ROAP.ROAP_TYPES.ERROR,
161
+ version: ROAP.ROAP_VERSION,
162
+ errorType: options.errorType,
163
+ seq: options.seq,
164
+ };
218
165
 
219
166
  return this.roapRequest
220
167
  .sendRoap({
221
168
  roapMessage,
222
169
  locusSelfUrl: meeting.selfUrl,
223
170
  mediaId: options.mediaId,
224
- correlationId: options.correlationId,
225
171
  audioMuted: meeting.audio?.isLocallyMuted(),
226
172
  videoMuted: meeting.video?.isLocallyMuted(),
227
173
  meetingId: meeting.id,
174
+ locusMediaRequest: meeting.locusMediaRequest,
228
175
  })
229
176
  .then(() => {
230
- meeting.setRoapSeq(options.seq);
231
-
232
- this.roapHandler.submit({
233
- type: ROAP.SEND_ROAP_MSG_SUCCESS,
234
- seq: roapMessage.seq,
235
- correlationId: meeting.correlationId,
236
- });
177
+ LoggerProxy.logger.log(
178
+ `Roap:index#sendRoapError --> ROAP ERROR sent with seq ${options.seq}`
179
+ );
237
180
  });
238
181
  }
239
182
 
240
- /**
241
- * Sends a ROAP error...
242
- * @param {Object} session
243
- * @param {Object} locus
244
- * @param {String} errorType
245
- * @returns {Promise}
246
- * @private
247
- * @memberof Roap
248
- */
249
- private sendRoapError(session: any, locus: object, errorType: string) {
250
- const msg = {
251
- messageType: ROAP.ROAP_TYPES.ERROR,
252
- version: ROAP.ROAP_VERSION,
253
- errorType,
254
- seq: session.OFFER.seq,
255
- };
256
-
257
- return this.roapRequest.sendRoap(msg, locus);
258
- }
259
-
260
183
  /**
261
184
  * sends a roap media request
262
185
  * @param {RoapOptions} options
263
186
  * @returns {Promise}
264
- * @private
265
187
  * @memberof Roap
266
188
  */
267
189
  sendRoapMediaRequest(options: any) {
268
- const {meeting, reconnect} = options;
190
+ const {meeting, seq, sdp, reconnect, tieBreaker} = options;
269
191
  const roapMessage = {
270
192
  messageType: ROAP.ROAP_TYPES.OFFER,
271
- sdps: [options.sdp],
272
- // sdps: [options.sdp],
193
+ sdps: [sdp],
273
194
  version: ROAP.ROAP_VERSION,
274
- seq:
275
- typeof options.roapSeq !== 'number' && Number.isNaN(parseFloat(options.roapSeq))
276
- ? 0
277
- : options.roapSeq + 1,
278
- tieBreaker: 4294967294, // Math.floor(Math.random() * (2 ** 32) - 1) // TODO: Handle the roap conflict scenario
195
+ seq,
196
+ tieBreaker,
197
+ headers: ['includeAnswerInHttpResponse', 'noOkInTransaction'],
279
198
  };
280
199
 
281
- this.roapHandler.submit({
282
- type: ROAP.SEND_ROAP_MSG,
283
- msg: roapMessage,
284
- correlationId: meeting.correlationId,
285
- });
286
-
287
200
  // When reconnecting, it's important that the first roap message being sent out has empty media id.
288
201
  // Normally this is the roap offer, but when TURN discovery is enabled,
289
202
  // then this is the TURN discovery request message
290
- return this.turnDiscovery
291
- .isSkipped(meeting)
292
- .then((isTurnDiscoverySkipped) => {
293
- const sendEmptyMediaId = reconnect && isTurnDiscoverySkipped;
203
+ return this.turnDiscovery.isSkipped(meeting).then((isTurnDiscoverySkipped) => {
204
+ const sendEmptyMediaId = reconnect && isTurnDiscoverySkipped;
294
205
 
295
- return this.roapRequest.sendRoap({
206
+ return this.roapRequest
207
+ .sendRoap({
296
208
  roapMessage,
297
- correlationId: meeting.correlationId,
298
209
  locusSelfUrl: meeting.selfUrl,
299
210
  mediaId: sendEmptyMediaId ? '' : meeting.mediaId,
300
- audioMuted: meeting.audio?.isLocallyMuted(),
301
- videoMuted: meeting.video?.isLocallyMuted(),
302
211
  meetingId: meeting.id,
212
+ preferTranscoding: !meeting.isMultistream,
213
+ locusMediaRequest: meeting.locusMediaRequest,
214
+ ipVersion: MeetingUtil.getIpVersion(meeting.webex),
215
+ })
216
+ .then(({locus, mediaConnections}) => {
217
+ if (mediaConnections) {
218
+ meeting.updateMediaConnections(mediaConnections);
219
+ }
220
+
221
+ let roapAnswer;
222
+
223
+ if (mediaConnections?.[0]?.remoteSdp) {
224
+ const remoteSdp = JSON.parse(mediaConnections[0].remoteSdp);
225
+
226
+ if (remoteSdp.roapMessage) {
227
+ const {
228
+ seq: answerSeq,
229
+ messageType,
230
+ sdps,
231
+ errorType,
232
+ errorCause,
233
+ headers,
234
+ } = remoteSdp.roapMessage;
235
+
236
+ roapAnswer = {
237
+ seq: answerSeq,
238
+ messageType,
239
+ sdp: sdps[0],
240
+ errorType,
241
+ errorCause,
242
+ headers,
243
+ };
244
+ }
245
+ }
246
+
247
+ if (!roapAnswer) {
248
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ROAP_HTTP_RESPONSE_MISSING, {
249
+ correlationId: meeting.correlationId,
250
+ messageType: 'ANSWER',
251
+ isMultistream: meeting.isMultistream,
252
+ });
253
+ }
254
+
255
+ return {locus, roapAnswer};
303
256
  });
304
- })
305
- .then(({locus, mediaConnections}) => {
306
- this.roapHandler.submit({
307
- type: ROAP.SEND_ROAP_MSG_SUCCESS,
308
- seq: roapMessage.seq,
309
- correlationId: meeting.correlationId,
310
- });
311
- meeting.setRoapSeq(roapMessage.seq);
312
-
313
- if (mediaConnections) {
314
- meeting.updateMediaConnections(mediaConnections);
315
- }
316
-
317
- // eslint-disable-next-line no-warning-comments
318
- // TODO: we need to attach peerconenction to locus not sure if we need to pass everything here
319
- return locus;
320
- // eslint-disable-next-line no-warning-comments
321
- // TODO: check where to update the sequence number
322
- });
323
- }
324
-
325
- /**
326
- * sends a roap media request
327
- * @param {RoapOptions} options
328
- * @returns {Promise}
329
- * @private
330
- * @memberof Roap
331
- */
332
- sendRoapCallRequest = (options: any) => {
333
- const {meeting} = options;
334
- const roapMessage = {
335
- messageType: ROAP.ROAP_TYPES.OFFER,
336
- sdps: [options.sdp],
337
- version: ROAP.ROAP_VERSION,
338
- seq:
339
- typeof options.roapSeq !== 'number' && Number.isNaN(parseFloat(options.roapSeq))
340
- ? 0
341
- : options.roapSeq + 1,
342
- tieBreaker: 4294967294, // Math.floor(Math.random() * (2 ** 32) - 1) // TODO: Handle the roap conflict scenario
343
- };
344
-
345
- this.roapHandler.submit({
346
- type: ROAP.SEND_ROAP_MSG,
347
- msg: roapMessage,
348
- correlationId: meeting.correlationId,
349
- });
350
-
351
- const roapBody = {
352
- localMedias: [
353
- {
354
- localSdp: JSON.stringify(
355
- this.roapRequest.attachRechabilityData({
356
- roapMessage,
357
- // eslint-disable-next-line no-warning-comments
358
- // TODO: check whats the need for video and audiomute
359
- audioMuted: meeting.audio?.isLocallyMuted(),
360
- videoMuted: meeting.video?.isLocallyMuted(),
361
- })
362
- ),
363
- // mediaId: meeting.mediaId
364
- },
365
- ],
366
- };
367
-
368
- return MeetingUtil.joinMeetingOptions(meeting, {roapMessage: roapBody}).then((locus) => {
369
- this.roapHandler.submit({
370
- type: ROAP.SEND_ROAP_MSG_SUCCESS,
371
- seq: roapMessage.seq,
372
- correlationId: meeting.correlationId,
373
- });
374
- meeting.setRoapSeq(roapMessage.seq);
375
-
376
- // eslint-disable-next-line no-warning-comments
377
- // TODO: we need to attach peerconenction to locus not sure if we need to pass everything here
378
- return locus;
379
- // eslint-disable-next-line no-warning-comments
380
- // TODO: check where to update the sequence number
381
257
  });
382
- };
383
-
384
- /**
385
- * Called when the roap sequence is finished (completed successfully or failed)
386
- * @param {String} correlationId id of the meeting affected
387
- * @param {String} sequenceId the id of the finished sequence
388
- * @returns {undefined}
389
- * @private
390
- * @memberof Roap
391
- */
392
- private roapFinished(correlationId: string, sequenceId: string) {
393
- RoapCollection.onSessionSequenceFinish(correlationId, sequenceId);
394
- // @ts-ignore
395
- const meeting = this.webex.meetings.meetingCollection.getByKey('correlationId', correlationId);
396
-
397
- meeting.mediaNegotiatedEvent();
398
- if (!RoapCollection.isBusy(correlationId)) {
399
- meeting.processNextQueuedMediaUpdate();
400
- }
401
258
  }
402
259
 
403
260
  /**
@@ -408,9 +265,10 @@ export default class Roap extends StatelessWebexPlugin {
408
265
  * @param {Meeting} meeting
409
266
  * @param {Boolean} isReconnecting should be set to true if this is a new
410
267
  * media connection just after a reconnection
268
+ * @param {Boolean} [isForced]
411
269
  * @returns {Promise}
412
270
  */
413
- doTurnDiscovery(meeting: Meeting, isReconnecting: boolean) {
414
- return this.turnDiscovery.doTurnDiscovery(meeting, isReconnecting);
271
+ doTurnDiscovery(meeting: Meeting, isReconnecting: boolean, isForced?: boolean) {
272
+ return this.turnDiscovery.doTurnDiscovery(meeting, isReconnecting, isForced);
415
273
  }
416
274
  }