@webex/plugin-meetings 3.0.0-beta.3 → 3.0.0-beta.300

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 (601) hide show
  1. package/README.md +46 -8
  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/no-meeting-info.js +51 -0
  39. package/dist/common/errors/no-meeting-info.js.map +1 -0
  40. package/dist/common/errors/parameter.js +5 -33
  41. package/dist/common/errors/parameter.js.map +1 -1
  42. package/dist/common/errors/password-error.js +10 -24
  43. package/dist/common/errors/password-error.js.map +1 -1
  44. package/dist/common/errors/permission.js +9 -23
  45. package/dist/common/errors/permission.js.map +1 -1
  46. package/dist/common/errors/reclaim-host-role-errors.js +158 -0
  47. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  48. package/dist/common/errors/reconnection-in-progress.js +0 -17
  49. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  50. package/dist/common/errors/reconnection.js +10 -24
  51. package/dist/common/errors/reconnection.js.map +1 -1
  52. package/dist/common/errors/stats.js +10 -24
  53. package/dist/common/errors/stats.js.map +1 -1
  54. package/dist/common/errors/webex-errors.js +54 -48
  55. package/dist/common/errors/webex-errors.js.map +1 -1
  56. package/dist/common/errors/webex-meetings-error.js +5 -25
  57. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  58. package/dist/common/events/events-scope.js +0 -22
  59. package/dist/common/events/events-scope.js.map +1 -1
  60. package/dist/common/events/events.js +0 -23
  61. package/dist/common/events/events.js.map +1 -1
  62. package/dist/common/events/trigger-proxy.js +0 -12
  63. package/dist/common/events/trigger-proxy.js.map +1 -1
  64. package/dist/common/events/util.js +0 -15
  65. package/dist/common/events/util.js.map +1 -1
  66. package/dist/common/logs/logger-config.js +0 -4
  67. package/dist/common/logs/logger-config.js.map +1 -1
  68. package/dist/common/logs/logger-proxy.js +1 -8
  69. package/dist/common/logs/logger-proxy.js.map +1 -1
  70. package/dist/common/logs/request.js +41 -60
  71. package/dist/common/logs/request.js.map +1 -1
  72. package/dist/common/queue.js +28 -23
  73. package/dist/common/queue.js.map +1 -1
  74. package/dist/config.js +9 -15
  75. package/dist/config.js.map +1 -1
  76. package/dist/constants.js +315 -68
  77. package/dist/constants.js.map +1 -1
  78. package/dist/controls-options-manager/constants.js +14 -0
  79. package/dist/controls-options-manager/constants.js.map +1 -0
  80. package/dist/controls-options-manager/enums.js +27 -0
  81. package/dist/controls-options-manager/enums.js.map +1 -0
  82. package/dist/controls-options-manager/index.js +297 -0
  83. package/dist/controls-options-manager/index.js.map +1 -0
  84. package/dist/controls-options-manager/types.js +7 -0
  85. package/dist/controls-options-manager/types.js.map +1 -0
  86. package/dist/controls-options-manager/util.js +319 -0
  87. package/dist/controls-options-manager/util.js.map +1 -0
  88. package/dist/index.js +114 -17
  89. package/dist/index.js.map +1 -1
  90. package/dist/interpretation/collection.js +23 -0
  91. package/dist/interpretation/collection.js.map +1 -0
  92. package/dist/interpretation/index.js +366 -0
  93. package/dist/interpretation/index.js.map +1 -0
  94. package/dist/interpretation/siLanguage.js +25 -0
  95. package/dist/interpretation/siLanguage.js.map +1 -0
  96. package/dist/locus-info/controlsUtils.js +101 -29
  97. package/dist/locus-info/controlsUtils.js.map +1 -1
  98. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  99. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  100. package/dist/locus-info/fullState.js +0 -15
  101. package/dist/locus-info/fullState.js.map +1 -1
  102. package/dist/locus-info/hostUtils.js +4 -12
  103. package/dist/locus-info/hostUtils.js.map +1 -1
  104. package/dist/locus-info/index.js +561 -246
  105. package/dist/locus-info/index.js.map +1 -1
  106. package/dist/locus-info/infoUtils.js +10 -38
  107. package/dist/locus-info/infoUtils.js.map +1 -1
  108. package/dist/locus-info/mediaSharesUtils.js +68 -38
  109. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  110. package/dist/locus-info/parser.js +314 -163
  111. package/dist/locus-info/parser.js.map +1 -1
  112. package/dist/locus-info/selfUtils.js +110 -92
  113. package/dist/locus-info/selfUtils.js.map +1 -1
  114. package/dist/media/index.js +103 -231
  115. package/dist/media/index.js.map +1 -1
  116. package/dist/media/properties.js +137 -222
  117. package/dist/media/properties.js.map +1 -1
  118. package/dist/media/util.js +2 -9
  119. package/dist/media/util.js.map +1 -1
  120. package/dist/mediaQualityMetrics/config.js +505 -495
  121. package/dist/mediaQualityMetrics/config.js.map +1 -1
  122. package/dist/meeting/in-meeting-actions.js +93 -14
  123. package/dist/meeting/in-meeting-actions.js.map +1 -1
  124. package/dist/meeting/index.js +4624 -3740
  125. package/dist/meeting/index.js.map +1 -1
  126. package/dist/meeting/locusMediaRequest.js +292 -0
  127. package/dist/meeting/locusMediaRequest.js.map +1 -0
  128. package/dist/meeting/muteState.js +249 -184
  129. package/dist/meeting/muteState.js.map +1 -1
  130. package/dist/meeting/request.js +400 -346
  131. package/dist/meeting/request.js.map +1 -1
  132. package/dist/meeting/request.type.js +7 -0
  133. package/dist/meeting/request.type.js.map +1 -0
  134. package/dist/meeting/state.js +21 -31
  135. package/dist/meeting/state.js.map +1 -1
  136. package/dist/meeting/util.js +598 -586
  137. package/dist/meeting/util.js.map +1 -1
  138. package/dist/meeting-info/collection.js +6 -25
  139. package/dist/meeting-info/collection.js.map +1 -1
  140. package/dist/meeting-info/index.js +87 -39
  141. package/dist/meeting-info/index.js.map +1 -1
  142. package/dist/meeting-info/meeting-info-v2.js +349 -283
  143. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  144. package/dist/meeting-info/request.js +3 -15
  145. package/dist/meeting-info/request.js.map +1 -1
  146. package/dist/meeting-info/util.js +98 -183
  147. package/dist/meeting-info/util.js.map +1 -1
  148. package/dist/meeting-info/utilv2.js +143 -234
  149. package/dist/meeting-info/utilv2.js.map +1 -1
  150. package/dist/meetings/collection.js +26 -19
  151. package/dist/meetings/collection.js.map +1 -1
  152. package/dist/meetings/index.js +813 -596
  153. package/dist/meetings/index.js.map +1 -1
  154. package/dist/meetings/meetings.types.js +7 -0
  155. package/dist/meetings/meetings.types.js.map +1 -0
  156. package/dist/meetings/request.js +26 -41
  157. package/dist/meetings/request.js.map +1 -1
  158. package/dist/meetings/util.js +183 -156
  159. package/dist/meetings/util.js.map +1 -1
  160. package/dist/member/index.js +135 -85
  161. package/dist/member/index.js.map +1 -1
  162. package/dist/member/types.js +25 -0
  163. package/dist/member/types.js.map +1 -0
  164. package/dist/member/util.js +158 -88
  165. package/dist/member/util.js.map +1 -1
  166. package/dist/members/collection.js +13 -12
  167. package/dist/members/collection.js.map +1 -1
  168. package/dist/members/index.js +194 -204
  169. package/dist/members/index.js.map +1 -1
  170. package/dist/members/request.js +113 -68
  171. package/dist/members/request.js.map +1 -1
  172. package/dist/members/types.js +15 -0
  173. package/dist/members/types.js.map +1 -0
  174. package/dist/members/util.js +324 -259
  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 +11 -558
  179. package/dist/metrics/index.js.map +1 -1
  180. package/dist/multistream/mediaRequestManager.js +263 -50
  181. package/dist/multistream/mediaRequestManager.js.map +1 -1
  182. package/dist/multistream/receiveSlot.js +58 -65
  183. package/dist/multistream/receiveSlot.js.map +1 -1
  184. package/dist/multistream/receiveSlotManager.js +76 -95
  185. package/dist/multistream/receiveSlotManager.js.map +1 -1
  186. package/dist/multistream/remoteMedia.js +62 -76
  187. package/dist/multistream/remoteMedia.js.map +1 -1
  188. package/dist/multistream/remoteMediaGroup.js +66 -43
  189. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  190. package/dist/multistream/remoteMediaManager.js +536 -439
  191. package/dist/multistream/remoteMediaManager.js.map +1 -1
  192. package/dist/multistream/sendSlotManager.js +233 -0
  193. package/dist/multistream/sendSlotManager.js.map +1 -0
  194. package/dist/networkQualityMonitor/index.js +40 -59
  195. package/dist/networkQualityMonitor/index.js.map +1 -1
  196. package/dist/personal-meeting-room/index.js +21 -45
  197. package/dist/personal-meeting-room/index.js.map +1 -1
  198. package/dist/personal-meeting-room/request.js +1 -31
  199. package/dist/personal-meeting-room/request.js.map +1 -1
  200. package/dist/personal-meeting-room/util.js +0 -13
  201. package/dist/personal-meeting-room/util.js.map +1 -1
  202. package/dist/reachability/index.js +322 -200
  203. package/dist/reachability/index.js.map +1 -1
  204. package/dist/reachability/request.js +20 -26
  205. package/dist/reachability/request.js.map +1 -1
  206. package/dist/reactions/constants.js +13 -0
  207. package/dist/reactions/constants.js.map +1 -0
  208. package/dist/reactions/reactions.js +109 -0
  209. package/dist/reactions/reactions.js.map +1 -0
  210. package/dist/reactions/reactions.type.js +36 -0
  211. package/dist/reactions/reactions.type.js.map +1 -0
  212. package/dist/reconnection-manager/index.js +388 -476
  213. package/dist/reconnection-manager/index.js.map +1 -1
  214. package/dist/recording-controller/enums.js +17 -0
  215. package/dist/recording-controller/enums.js.map +1 -0
  216. package/dist/recording-controller/index.js +362 -0
  217. package/dist/recording-controller/index.js.map +1 -0
  218. package/dist/recording-controller/util.js +64 -0
  219. package/dist/recording-controller/util.js.map +1 -0
  220. package/dist/roap/index.js +99 -94
  221. package/dist/roap/index.js.map +1 -1
  222. package/dist/roap/request.js +131 -135
  223. package/dist/roap/request.js.map +1 -1
  224. package/dist/roap/turnDiscovery.js +151 -101
  225. package/dist/roap/turnDiscovery.js.map +1 -1
  226. package/dist/rtcMetrics/constants.js +12 -0
  227. package/dist/rtcMetrics/constants.js.map +1 -0
  228. package/dist/rtcMetrics/index.js +117 -0
  229. package/dist/rtcMetrics/index.js.map +1 -0
  230. package/dist/statsAnalyzer/global.js +1 -95
  231. package/dist/statsAnalyzer/global.js.map +1 -1
  232. package/dist/statsAnalyzer/index.js +416 -497
  233. package/dist/statsAnalyzer/index.js.map +1 -1
  234. package/dist/statsAnalyzer/mqaUtil.js +145 -88
  235. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  236. package/dist/transcription/index.js +22 -47
  237. package/dist/transcription/index.js.map +1 -1
  238. package/dist/types/annotation/annotation.types.d.ts +42 -0
  239. package/dist/types/annotation/constants.d.ts +31 -0
  240. package/dist/types/annotation/index.d.ts +117 -0
  241. package/dist/types/breakouts/breakout.d.ts +8 -0
  242. package/dist/types/breakouts/collection.d.ts +5 -0
  243. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  244. package/dist/types/breakouts/events.d.ts +8 -0
  245. package/dist/types/breakouts/index.d.ts +5 -0
  246. package/dist/types/breakouts/request.d.ts +22 -0
  247. package/dist/types/breakouts/utils.d.ts +15 -0
  248. package/dist/types/common/browser-detection.d.ts +9 -0
  249. package/dist/types/common/collection.d.ts +48 -0
  250. package/dist/types/common/config.d.ts +2 -0
  251. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  252. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  253. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  254. package/dist/types/common/errors/media.d.ts +15 -0
  255. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  256. package/dist/types/common/errors/parameter.d.ts +15 -0
  257. package/dist/types/common/errors/password-error.d.ts +15 -0
  258. package/dist/types/common/errors/permission.d.ts +14 -0
  259. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  260. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  261. package/dist/types/common/errors/reconnection.d.ts +15 -0
  262. package/dist/types/common/errors/stats.d.ts +15 -0
  263. package/dist/types/common/errors/webex-errors.d.ts +93 -0
  264. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  265. package/dist/types/common/events/events-scope.d.ts +17 -0
  266. package/dist/types/common/events/events.d.ts +12 -0
  267. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  268. package/dist/types/common/events/util.d.ts +2 -0
  269. package/dist/types/common/logs/logger-config.d.ts +2 -0
  270. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  271. package/dist/types/common/logs/request.d.ts +36 -0
  272. package/dist/types/common/queue.d.ts +34 -0
  273. package/dist/types/config.d.ts +71 -0
  274. package/dist/types/constants.d.ts +1066 -0
  275. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  276. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  277. package/dist/types/controls-options-manager/index.d.ts +136 -0
  278. package/dist/types/controls-options-manager/types.d.ts +43 -0
  279. package/dist/types/controls-options-manager/util.d.ts +1 -0
  280. package/dist/types/index.d.ts +7 -0
  281. package/dist/types/interpretation/collection.d.ts +5 -0
  282. package/dist/types/interpretation/index.d.ts +5 -0
  283. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  284. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  285. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  286. package/dist/types/locus-info/fullState.d.ts +2 -0
  287. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  288. package/dist/types/locus-info/index.d.ts +322 -0
  289. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  290. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  291. package/dist/types/locus-info/parser.d.ts +273 -0
  292. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  293. package/dist/types/media/index.d.ts +34 -0
  294. package/dist/types/media/properties.d.ts +93 -0
  295. package/dist/types/media/util.d.ts +2 -0
  296. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  297. package/dist/types/meeting/in-meeting-actions.d.ts +163 -0
  298. package/dist/types/meeting/index.d.ts +1676 -0
  299. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  300. package/dist/types/meeting/muteState.d.ts +184 -0
  301. package/dist/types/meeting/request.d.ts +290 -0
  302. package/dist/types/meeting/request.type.d.ts +11 -0
  303. package/dist/types/meeting/state.d.ts +9 -0
  304. package/dist/types/meeting/util.d.ts +102 -0
  305. package/dist/types/meeting-info/collection.d.ts +20 -0
  306. package/dist/types/meeting-info/index.d.ts +69 -0
  307. package/dist/types/meeting-info/meeting-info-v2.d.ts +123 -0
  308. package/dist/types/meeting-info/request.d.ts +22 -0
  309. package/dist/types/meeting-info/util.d.ts +2 -0
  310. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  311. package/dist/types/meetings/collection.d.ts +31 -0
  312. package/dist/types/meetings/index.d.ts +367 -0
  313. package/dist/types/meetings/meetings.types.d.ts +4 -0
  314. package/dist/types/meetings/request.d.ts +27 -0
  315. package/dist/types/meetings/util.d.ts +18 -0
  316. package/dist/types/member/index.d.ts +160 -0
  317. package/dist/types/member/types.d.ts +32 -0
  318. package/dist/types/member/util.d.ts +2 -0
  319. package/dist/types/members/collection.d.ts +29 -0
  320. package/dist/types/members/index.d.ts +353 -0
  321. package/dist/types/members/request.d.ts +114 -0
  322. package/dist/types/members/types.d.ts +25 -0
  323. package/dist/types/members/util.d.ts +215 -0
  324. package/dist/types/metrics/constants.d.ts +65 -0
  325. package/dist/types/metrics/index.d.ts +45 -0
  326. package/dist/types/multistream/mediaRequestManager.d.ts +118 -0
  327. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  328. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  329. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  330. package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
  331. package/dist/types/multistream/remoteMediaManager.d.ts +285 -0
  332. package/dist/types/multistream/sendSlotManager.d.ts +61 -0
  333. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  334. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  335. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  336. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  337. package/dist/types/reachability/index.d.ts +194 -0
  338. package/dist/types/reachability/request.d.ts +39 -0
  339. package/dist/types/reactions/constants.d.ts +3 -0
  340. package/dist/types/reactions/reactions.d.ts +4 -0
  341. package/dist/types/reactions/reactions.type.d.ts +52 -0
  342. package/dist/types/reconnection-manager/index.d.ts +126 -0
  343. package/dist/types/recording-controller/enums.d.ts +7 -0
  344. package/dist/types/recording-controller/index.d.ts +207 -0
  345. package/dist/types/recording-controller/util.d.ts +14 -0
  346. package/dist/types/roap/index.d.ts +78 -0
  347. package/dist/types/roap/request.d.ts +39 -0
  348. package/dist/types/roap/turnDiscovery.d.ts +92 -0
  349. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  350. package/dist/types/rtcMetrics/index.d.ts +47 -0
  351. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  352. package/dist/types/statsAnalyzer/index.d.ts +201 -0
  353. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  354. package/dist/types/transcription/index.d.ts +64 -0
  355. package/dist/types/webinar/collection.d.ts +16 -0
  356. package/dist/types/webinar/index.d.ts +5 -0
  357. package/dist/webinar/collection.js +44 -0
  358. package/dist/webinar/collection.js.map +1 -0
  359. package/dist/webinar/index.js +69 -0
  360. package/dist/webinar/index.js.map +1 -0
  361. package/internal-README.md +7 -6
  362. package/package.json +29 -21
  363. package/src/annotation/annotation.types.ts +50 -0
  364. package/src/annotation/constants.ts +36 -0
  365. package/src/annotation/index.ts +328 -0
  366. package/src/breakouts/README.md +220 -0
  367. package/src/breakouts/breakout.ts +188 -0
  368. package/src/breakouts/collection.ts +19 -0
  369. package/src/breakouts/edit-lock-error.ts +25 -0
  370. package/src/breakouts/events.ts +56 -0
  371. package/src/breakouts/index.ts +925 -0
  372. package/src/breakouts/request.ts +55 -0
  373. package/src/breakouts/utils.ts +57 -0
  374. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  375. package/src/common/collection.ts +9 -7
  376. package/src/common/{config.js → config.ts} +1 -1
  377. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  378. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  379. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  380. package/src/common/errors/{media.js → media.ts} +11 -7
  381. package/src/common/errors/no-meeting-info.ts +24 -0
  382. package/src/common/errors/parameter.ts +11 -7
  383. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  384. package/src/common/errors/{permission.js → permission.ts} +10 -6
  385. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  386. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  387. package/src/common/errors/{stats.js → stats.ts} +11 -7
  388. package/src/common/errors/{webex-errors.js → webex-errors.ts} +51 -8
  389. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  390. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  391. package/src/common/events/{events.js → events.ts} +5 -1
  392. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  393. package/src/common/events/{util.js → util.ts} +2 -3
  394. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  395. package/src/common/logs/logger-proxy.ts +44 -0
  396. package/src/common/logs/{request.js → request.ts} +26 -9
  397. package/src/common/queue.ts +22 -9
  398. package/src/{config.js → config.ts} +18 -19
  399. package/src/constants.ts +260 -22
  400. package/src/controls-options-manager/constants.ts +5 -0
  401. package/src/controls-options-manager/enums.ts +18 -0
  402. package/src/controls-options-manager/index.ts +278 -0
  403. package/src/controls-options-manager/types.ts +59 -0
  404. package/src/controls-options-manager/util.ts +300 -0
  405. package/src/index.ts +40 -0
  406. package/src/interpretation/README.md +60 -0
  407. package/src/interpretation/collection.ts +19 -0
  408. package/src/interpretation/index.ts +332 -0
  409. package/src/interpretation/siLanguage.ts +18 -0
  410. package/src/locus-info/controlsUtils.ts +222 -0
  411. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  412. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  413. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  414. package/src/locus-info/{index.js → index.ts} +557 -119
  415. package/src/locus-info/{infoUtils.js → infoUtils.ts} +29 -10
  416. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +81 -17
  417. package/src/locus-info/{parser.js → parser.ts} +303 -104
  418. package/src/locus-info/{selfUtils.js → selfUtils.ts} +199 -68
  419. package/src/media/index.ts +458 -0
  420. package/src/media/properties.ts +283 -0
  421. package/src/media/{util.js → util.ts} +2 -2
  422. package/src/mediaQualityMetrics/config.ts +384 -0
  423. package/src/meeting/in-meeting-actions.ts +191 -3
  424. package/src/meeting/index.ts +7882 -0
  425. package/src/meeting/locusMediaRequest.ts +313 -0
  426. package/src/meeting/muteState.ts +451 -0
  427. package/src/meeting/{request.js → request.ts} +421 -220
  428. package/src/meeting/request.type.ts +13 -0
  429. package/src/meeting/{state.js → state.ts} +50 -35
  430. package/src/meeting/util.ts +697 -0
  431. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  432. package/src/meeting-info/index.ts +210 -0
  433. package/src/meeting-info/meeting-info-v2.ts +429 -0
  434. package/src/meeting-info/{request.js → request.ts} +14 -4
  435. package/src/meeting-info/{util.js → util.ts} +60 -51
  436. package/src/meeting-info/{utilv2.js → utilv2.ts} +78 -71
  437. package/src/meetings/{collection.js → collection.ts} +26 -3
  438. package/src/meetings/index.ts +1470 -0
  439. package/src/meetings/meetings.types.ts +12 -0
  440. package/src/meetings/{request.js → request.ts} +34 -25
  441. package/src/meetings/{util.js → util.ts} +132 -37
  442. package/src/member/{index.js → index.ts} +160 -56
  443. package/src/member/types.ts +38 -0
  444. package/src/member/util.ts +397 -0
  445. package/src/members/{collection.js → collection.ts} +10 -2
  446. package/src/members/{index.js → index.ts} +351 -146
  447. package/src/members/request.ts +255 -0
  448. package/src/members/types.ts +29 -0
  449. package/src/members/util.ts +353 -0
  450. package/src/metrics/{constants.js → constants.ts} +12 -6
  451. package/src/metrics/index.ts +73 -0
  452. package/src/multistream/mediaRequestManager.ts +337 -63
  453. package/src/multistream/receiveSlot.ts +69 -26
  454. package/src/multistream/receiveSlotManager.ts +66 -42
  455. package/src/multistream/remoteMedia.ts +40 -5
  456. package/src/multistream/remoteMediaGroup.ts +63 -3
  457. package/src/multistream/remoteMediaManager.ts +300 -66
  458. package/src/multistream/sendSlotManager.ts +170 -0
  459. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  460. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  461. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  462. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  463. package/src/reachability/index.ts +671 -0
  464. package/src/reachability/request.ts +50 -35
  465. package/src/reactions/constants.ts +4 -0
  466. package/src/reactions/reactions.ts +104 -0
  467. package/src/reactions/reactions.type.ts +62 -0
  468. package/src/reconnection-manager/{index.js → index.ts} +258 -138
  469. package/src/recording-controller/enums.ts +8 -0
  470. package/src/recording-controller/index.ts +332 -0
  471. package/src/recording-controller/util.ts +75 -0
  472. package/src/roap/{index.js → index.ts} +127 -79
  473. package/src/roap/request.ts +153 -0
  474. package/src/roap/turnDiscovery.ts +109 -47
  475. package/src/rtcMetrics/constants.ts +3 -0
  476. package/src/rtcMetrics/index.ts +100 -0
  477. package/src/statsAnalyzer/global.ts +37 -0
  478. package/src/statsAnalyzer/index.ts +1250 -0
  479. package/src/statsAnalyzer/mqaUtil.ts +292 -0
  480. package/src/transcription/{index.js → index.ts} +46 -39
  481. package/src/webinar/collection.ts +31 -0
  482. package/src/webinar/index.ts +62 -0
  483. package/test/integration/spec/converged-space-meetings.js +233 -0
  484. package/test/integration/spec/journey.js +790 -530
  485. package/test/integration/spec/space-meeting.js +391 -204
  486. package/test/integration/spec/transcription.js +7 -8
  487. package/test/unit/spec/annotation/index.ts +418 -0
  488. package/test/unit/spec/breakouts/breakout.ts +237 -0
  489. package/test/unit/spec/breakouts/collection.ts +15 -0
  490. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  491. package/test/unit/spec/breakouts/events.ts +89 -0
  492. package/test/unit/spec/breakouts/index.ts +1790 -0
  493. package/test/unit/spec/breakouts/request.ts +104 -0
  494. package/test/unit/spec/breakouts/utils.js +72 -0
  495. package/test/unit/spec/common/browser-detection.js +9 -28
  496. package/test/unit/spec/common/queue.js +31 -2
  497. package/test/unit/spec/controls-options-manager/index.js +287 -0
  498. package/test/unit/spec/controls-options-manager/util.js +582 -0
  499. package/test/unit/spec/fixture/locus.js +93 -90
  500. package/test/unit/spec/interpretation/collection.ts +15 -0
  501. package/test/unit/spec/interpretation/index.ts +589 -0
  502. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  503. package/test/unit/spec/locus-info/controlsUtils.js +325 -32
  504. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  505. package/test/unit/spec/locus-info/index.js +1390 -17
  506. package/test/unit/spec/locus-info/infoUtils.js +71 -40
  507. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  508. package/test/unit/spec/locus-info/lib/SeqCmp.json +529 -685
  509. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  510. package/test/unit/spec/locus-info/parser.js +119 -44
  511. package/test/unit/spec/locus-info/selfConstant.js +120 -103
  512. package/test/unit/spec/locus-info/selfUtils.js +296 -12
  513. package/test/unit/spec/media/index.ts +128 -77
  514. package/test/unit/spec/media/properties.ts +11 -11
  515. package/test/unit/spec/meeting/in-meeting-actions.ts +92 -3
  516. package/test/unit/spec/meeting/index.js +7433 -2752
  517. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  518. package/test/unit/spec/meeting/muteState.js +420 -211
  519. package/test/unit/spec/meeting/request.js +545 -79
  520. package/test/unit/spec/meeting/utils.js +722 -174
  521. package/test/unit/spec/meeting-info/index.js +300 -0
  522. package/test/unit/spec/meeting-info/meetinginfov2.js +624 -76
  523. package/test/unit/spec/meeting-info/request.js +7 -9
  524. package/test/unit/spec/meeting-info/util.js +11 -12
  525. package/test/unit/spec/meeting-info/utilv2.js +131 -74
  526. package/test/unit/spec/meetings/collection.js +15 -1
  527. package/test/unit/spec/meetings/index.js +1365 -377
  528. package/test/unit/spec/meetings/utils.js +216 -14
  529. package/test/unit/spec/member/index.js +61 -7
  530. package/test/unit/spec/member/util.js +526 -26
  531. package/test/unit/spec/members/index.js +536 -55
  532. package/test/unit/spec/members/request.js +228 -40
  533. package/test/unit/spec/members/utils.js +217 -4
  534. package/test/unit/spec/metrics/index.js +12 -66
  535. package/test/unit/spec/multistream/mediaRequestManager.ts +1012 -109
  536. package/test/unit/spec/multistream/receiveSlot.ts +77 -18
  537. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  538. package/test/unit/spec/multistream/remoteMedia.ts +40 -2
  539. package/test/unit/spec/multistream/remoteMediaGroup.ts +271 -5
  540. package/test/unit/spec/multistream/remoteMediaManager.ts +738 -65
  541. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  542. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  543. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  544. package/test/unit/spec/reachability/index.ts +598 -26
  545. package/test/unit/spec/reachability/request.js +68 -0
  546. package/test/unit/spec/reconnection-manager/index.js +181 -12
  547. package/test/unit/spec/recording-controller/index.js +307 -0
  548. package/test/unit/spec/recording-controller/util.js +229 -0
  549. package/test/unit/spec/roap/index.ts +179 -64
  550. package/test/unit/spec/roap/request.ts +232 -0
  551. package/test/unit/spec/roap/turnDiscovery.ts +123 -58
  552. package/test/unit/spec/rtcMetrics/index.ts +73 -0
  553. package/test/unit/spec/stats-analyzer/index.js +199 -60
  554. package/test/unit/spec/webinar/collection.ts +13 -0
  555. package/test/unit/spec/webinar/index.ts +60 -0
  556. package/test/utils/cmr.js +44 -42
  557. package/test/utils/constants.js +9 -0
  558. package/test/utils/integrationTestUtils.js +46 -0
  559. package/test/utils/testUtils.js +63 -99
  560. package/test/utils/webex-config.js +22 -18
  561. package/test/utils/webex-test-users.js +57 -50
  562. package/tsconfig.json +6 -0
  563. package/dist/media/internal-media-core-wrapper.js +0 -22
  564. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  565. package/dist/meeting/effectsState.js +0 -327
  566. package/dist/meeting/effectsState.js.map +0 -1
  567. package/dist/metrics/config.js +0 -301
  568. package/dist/metrics/config.js.map +0 -1
  569. package/dist/multistream/multistreamMedia.js +0 -116
  570. package/dist/multistream/multistreamMedia.js.map +0 -1
  571. package/dist/peer-connection-manager/util.js +0 -124
  572. package/dist/peer-connection-manager/util.js.map +0 -1
  573. package/src/common/logs/logger-proxy.js +0 -33
  574. package/src/index.js +0 -15
  575. package/src/locus-info/controlsUtils.js +0 -102
  576. package/src/media/index.js +0 -459
  577. package/src/media/internal-media-core-wrapper.ts +0 -9
  578. package/src/media/properties.js +0 -289
  579. package/src/mediaQualityMetrics/config.js +0 -382
  580. package/src/meeting/effectsState.js +0 -205
  581. package/src/meeting/index.js +0 -6284
  582. package/src/meeting/muteState.js +0 -318
  583. package/src/meeting/util.js +0 -506
  584. package/src/meeting-info/index.js +0 -131
  585. package/src/meeting-info/meeting-info-v2.js +0 -255
  586. package/src/meetings/index.js +0 -1015
  587. package/src/member/util.js +0 -254
  588. package/src/members/request.js +0 -131
  589. package/src/members/util.js +0 -258
  590. package/src/metrics/config.js +0 -324
  591. package/src/metrics/index.js +0 -530
  592. package/src/multistream/multistreamMedia.ts +0 -92
  593. package/src/peer-connection-manager/util.ts +0 -117
  594. package/src/reachability/index.js +0 -464
  595. package/src/roap/request.js +0 -127
  596. package/src/statsAnalyzer/global.js +0 -133
  597. package/src/statsAnalyzer/index.js +0 -1006
  598. package/src/statsAnalyzer/mqaUtil.js +0 -173
  599. package/test/unit/spec/meeting/effectsState.js +0 -291
  600. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  601. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -1,530 +0,0 @@
1
- /*!
2
- * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
- */
4
- import util from 'util';
5
-
6
- import {includes} from 'lodash';
7
- import uuid from 'uuid';
8
- import window from 'global/window';
9
- import anonymize from 'ip-anonymize';
10
-
11
- import LoggerProxy from '../common/logs/logger-proxy';
12
- import {MEETING_ERRORS} from '../constants';
13
- import BrowserDetection from '../common/browser-detection';
14
-
15
- import {
16
- error, eventType, errorCodes as ERROR_CODE, OS_NAME, UNKNOWN, CLIENT_NAME,
17
- mediaType
18
- } from './config';
19
-
20
- const OSMap = {
21
- 'Chrome OS': OS_NAME.chrome,
22
- macOS: OS_NAME.MAC,
23
- Windows: OS_NAME.WINDOWS,
24
- iOS: OS_NAME.IOS,
25
- Android: OS_NAME.ANDROID,
26
- Linux: OS_NAME.LINUX
27
- };
28
-
29
- const {
30
- getOSName,
31
- getOSVersion,
32
- getBrowserName,
33
- getBrowserVersion
34
- } = BrowserDetection();
35
-
36
- // Apply a CIDR /28 format to the IPV4 and /96 to the IPV6 addresses
37
- // For reference : https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing
38
- const anonymizeIPAddress = (localIp) => anonymize(localIp, 28, 96);
39
-
40
- const triggerTimers = ({event, meeting, data}) => {
41
- switch (event) {
42
- case eventType.CALL_INITIATED:
43
- meeting.setStartCallInitiateJoinReq();
44
- break;
45
- case eventType.LOCUS_JOIN_REQUEST:
46
- meeting.setEndCallInitiateJoinReq();
47
- meeting.setStartJoinReqResp();
48
- break;
49
- case eventType.LOCUS_JOIN_RESPONSE:
50
- meeting.setEndJoinReqResp();
51
- meeting.setStartSetupDelay(mediaType.AUDIO);
52
- meeting.setStartSetupDelay(mediaType.VIDEO);
53
- meeting.setStartSendingMediaDelay(mediaType.AUDIO);
54
- meeting.setStartSendingMediaDelay(mediaType.VIDEO);
55
- break;
56
- case eventType.RECEIVING_MEDIA_START:
57
- meeting.setEndSetupDelay(data.mediaType);
58
- break;
59
- case eventType.SENDING_MEDIA_START:
60
- meeting.setEndSendingMediaDelay(data.mediaType);
61
- break;
62
- case eventType.LOCAL_SDP_GENERATED:
63
- meeting.setStartLocalSDPGenRemoteSDPRecvDelay();
64
- break;
65
- case eventType.REMOTE_SDP_RECEIVED:
66
- meeting.setEndLocalSDPGenRemoteSDPRecvDelay();
67
- break;
68
- default:
69
- break;
70
- }
71
- };
72
-
73
- /**
74
- * @description Metrics handles all the call metrics events
75
- * @export
76
- * @class Metrics
77
- */
78
- class Metrics {
79
- /**
80
- * Create Metrics Object
81
- * @constructor
82
- * @public
83
- * @memberof Meetings
84
- */
85
- constructor() {
86
- if (!Metrics.instance) {
87
- /**
88
- * @instance
89
- * @type {Array}
90
- * @private
91
- * @memberof Metrics
92
- */
93
- this._events = [];
94
- /**
95
- * @instance
96
- * @type {MeetingCollection}
97
- * @private
98
- * @memberof Metrics
99
- */
100
- this.meetingCollection = null;
101
- /**
102
- * @instance
103
- * @type {MeetingCollection}
104
- * @private
105
- * @memberof Metrics
106
- */
107
- this.keys = Object.values(eventType);
108
- /**
109
- * @instance
110
- * @type {Metrics}
111
- * @private
112
- * @memberof Metrics
113
- */
114
- Metrics.instance = this;
115
- }
116
-
117
- return Metrics.instance;
118
- }
119
-
120
- /**
121
- * Initializes the Metrics singleton with a meeting Collection.
122
- *
123
- * @param {Object} meetingCollection meetings object
124
- * @param {Object} webex webex SDK object
125
- *
126
- * @returns {void}
127
- */
128
- initialSetup(meetingCollection, webex) {
129
- this.meetingCollection = meetingCollection;
130
- this.webex = webex;
131
- }
132
-
133
- /**
134
- * poste Meeting event metrics
135
- * @param {object} options {meetingId/meeting} as a json object
136
- * @param {Meeting} options.meeting Meeting object
137
- * @param {String} options.meetingId
138
- * @param {object} options.data
139
- * @param {object} options.event
140
- * @returns {object} null
141
- */
142
- postEvent(options) {
143
- const {meetingId, data = {}, event} = options;
144
- let {meeting} = options;
145
-
146
- if (this.keys.indexOf(event) === -1) {
147
- LoggerProxy.logger.error(`Metrics:index#postEvent --> Event ${event} doesn't exist in dictionary`);
148
- }
149
-
150
- if (!meeting && meetingId) {
151
- meeting = this.meetingCollection.get(meetingId);
152
- options.meeting = meeting;
153
- }
154
-
155
- if (meeting) {
156
- triggerTimers(options);
157
-
158
- if (!meeting.callEvents) {
159
- meeting.callEvents = [];
160
- }
161
- if (event === eventType.MEDIA_QUALITY) {
162
- data.event = event;
163
- meeting.sendMediaQualityAnalyzerMetrics(data);
164
- }
165
- else {
166
- meeting.callEvents.push(event);
167
- data.event = event;
168
- meeting.sendCallAnalyzerMetrics(data);
169
- }
170
- }
171
-
172
- else {
173
- LoggerProxy.logger.info(`Metrics:index#postEvent --> Event received for meetingId:${meetingId}, but meeting not found in collection.`);
174
- }
175
- }
176
-
177
- /**
178
- * Docs for Call analyzer metrics
179
- * https://sqbu-github.cisco.com/WebExSquared/call-analyzer/wiki
180
- * https://sqbu-github.cisco.com/WebExSquared/event-dictionary/blob/master/diagnostic-events.raml
181
- */
182
-
183
- initPayload(eventType, identifiers, options) {
184
- const payload = {
185
- eventId: uuid.v4(),
186
- version: 1,
187
- origin: {
188
- name: 'endpoint',
189
- networkType: 'unknown',
190
- userAgent: this.userAgentToString(),
191
- clientInfo: {
192
- clientType: options.clientType,
193
- clientVersion: `${CLIENT_NAME}/${this.webex.version}`,
194
- localNetworkPrefix: anonymizeIPAddress(this.webex.meetings.geoHintInfo?.clientAddress),
195
- osVersion: getOSVersion() || 'unknown',
196
- subClientType: options.subClientType,
197
- os: this.getOsName(),
198
- browser: getBrowserName(),
199
- browserVersion: getBrowserVersion()
200
- }
201
- },
202
- originTime: {
203
- triggered: new Date().toISOString()
204
- },
205
- senderCountryCode: this.webex.meetings.geoHintInfo?.countryCode,
206
- event: {
207
- name: eventType,
208
- canProceed: true,
209
- identifiers,
210
- eventData: {webClientDomain: window.location.hostname}
211
- }
212
- };
213
-
214
- // TODO: more options should be checked and some of them should be mandatory in certain conditions
215
- if (options) {
216
- if (Object.prototype.hasOwnProperty.call(options, 'canProceed')) {
217
- payload.event.canProceed = options.canProceed;
218
- }
219
- if (options.errors) {
220
- payload.event.errors = options.errors;
221
- }
222
- if (options.mediaType) {
223
- payload.event.mediaType = options.mediaType;
224
- }
225
- if (options.trigger) {
226
- payload.event.trigger = options.trigger;
227
- }
228
- if (options.pstnAudioType) {
229
- payload.event.pstnAudioType = options.pstnAudioType;
230
- }
231
- if (options.mediaCapabilities) {
232
- payload.event.mediaCapabilities = options.mediaCapabilities;
233
- }
234
- if (options.recoveredBy) {
235
- payload.event.recoveredBy = options.recoveredBy;
236
- }
237
- if (options.joinTimes) {
238
- payload.event.joinTimes = options.joinTimes;
239
- }
240
- if (options.isRoapCallEnabled) {
241
- payload.event.isRoapCallEnabled = options.isRoapCallEnabled;
242
- }
243
- }
244
-
245
- return payload;
246
- }
247
-
248
- /**
249
- * returns metrics friendly OS versions
250
- * @param {String} osName Os name
251
- * @returns {String}
252
- * @private
253
- * @memberof Metrics
254
- */
255
- getOsName() {
256
- return OSMap[getOSName()] ?? OS_NAME.OTHERS;
257
- }
258
-
259
- /**
260
- * get the payload specific for a media quality event through call analyzer
261
- * @param {String} eventType the event name
262
- * @param {Object} identifiers contains the identifiers needed for CA
263
- * @param {String} identifiers.correlationId
264
- * @param {String} identifiers.locusUrl
265
- * @param {String} identifiers.locusId
266
- * @param {Object} options
267
- * @param {Object} options.intervalData
268
- * @param {String} options.clientType
269
- * @returns {Object}
270
- * @public
271
- * @memberof Metrics
272
- */
273
- initMediaPayload(eventType, identifiers, options = {}) {
274
- const {audioSetupDelay, videoSetupDelay, joinTimes} = options;
275
-
276
- const payload = {
277
- eventId: uuid.v4(),
278
- version: 1,
279
- origin: {
280
- audioSetupDelay,
281
- videoSetupDelay,
282
- name: 'endpoint',
283
- networkType: options.networkType || UNKNOWN,
284
- userAgent: this.userAgentToString(),
285
- clientInfo: {
286
- clientType: options.clientType, // TODO: Only clientType: 'TEAMS_CLIENT' is whitelisted
287
- clientVersion: `${CLIENT_NAME}/${this.webex.version}`,
288
- localNetworkPrefix: anonymizeIPAddress(this.webex.meetings.geoHintInfo?.clientAddress),
289
- os: this.getOsName(),
290
- osVersion: getOSVersion() || UNKNOWN,
291
- subClientType: options.subClientType,
292
- browser: getBrowserName(),
293
- browserVersion: getBrowserVersion()
294
- }
295
- },
296
- originTime: {
297
- triggered: new Date().toISOString()
298
- },
299
- senderCountryCode: this.webex.meetings.geoHintInfo?.countryCode,
300
- event: {
301
- name: eventType,
302
- canProceed: true,
303
- identifiers,
304
- intervals: [options.intervalData],
305
- joinTimes,
306
- eventData: {
307
- webClientDomain: window.location.hostname
308
- },
309
- sourceMetadata: {
310
- applicationSoftwareType: CLIENT_NAME,
311
- applicationSoftwareVersion: this.webex.version,
312
- mediaEngineSoftwareType: getBrowserName() || 'browser',
313
- mediaEngineSoftwareVersion: getOSVersion() || UNKNOWN,
314
- startTime: new Date().toISOString()
315
- }
316
- }
317
- };
318
-
319
- return payload;
320
- }
321
-
322
- /**
323
- * This function Parses a Locus error and returns a diagnostic event payload.
324
- * It should keep updating from:
325
- * https://sqbu-github.cisco.com/WebExSquared/spark-client-framework/blob/master/spark-client-framework/Adapters/TelephonyAdapter/TelephonyAdapter.cpp#L920
326
- *
327
- * @param {Object} err the error Object from Locus response
328
- * @param {boolean} showToUser true if a toast is shown to user
329
- * @returns {{showToUser: boolean, category: string, errorDescription: string,
330
- * errorCode: number, errorData: *, fatal: boolean, name: string}}
331
- */
332
- parseLocusError(err, showToUser) {
333
- let errorCode;
334
-
335
- if (err && err.statusCode && err.statusCode >= 500) {
336
- errorCode = 1003;
337
- }
338
- else if (err && err.body && err.body.errorCode) {
339
- // locus error codes: https://sqbu-github.cisco.com/WebExSquared/locus/blob/master/server/src/main/resources/locus-error-codes.properties
340
- switch (ERROR_CODE[err.body.errorCode]) {
341
- case MEETING_ERRORS.FREE_USER_MAX_PARTICIPANTS_EXCEEDED:
342
- errorCode = 3007;
343
- break;
344
- case MEETING_ERRORS.PAID_USER_MAX_PARTICIPANTS_EXCEEDED:
345
- case MEETING_ERRORS.SERVICE_MAX_PARTICIPANTS_EXCEEDED:
346
- errorCode = 3002;
347
- break;
348
- case MEETING_ERRORS.INACTIVE:
349
- errorCode = 4001;
350
- break;
351
- case MEETING_ERRORS.EXCEEDED_MAX_JOINED_PARTICIPANTS:
352
- case MEETING_ERRORS.EXCEEDED_SERVICE_MAX_PARTICIPANTS:
353
- errorCode = 3001;
354
- break;
355
- case MEETING_ERRORS.MEETING_IS_LOCKED:
356
- errorCode = 4002;
357
- break;
358
- case MEETING_ERRORS.MEETING_IS_TERMINATING:
359
- errorCode = 4003;
360
- break;
361
- case MEETING_ERRORS.MEETING_REQUIRE_MODERATOR_PIN_INTENT:
362
- errorCode = 4004;
363
- break;
364
- case MEETING_ERRORS.MEETING_REQUIRE_MODERATOR_PIN:
365
- errorCode = 4005;
366
- break;
367
- case MEETING_ERRORS.MEETING_REQUIRE_MODERATOR_ROLE:
368
- errorCode = 4006;
369
- break;
370
- case MEETING_ERRORS.JOIN_RESTRICTED_USER:
371
- case MEETING_ERRORS.GET_RESTRICTED_USER:
372
- case MEETING_ERRORS.CREATE_MEDIA_RESTRICTED_USER:
373
- errorCode = 3005;
374
- break;
375
- case MEETING_ERRORS.JOIN_RESTRICTED_USER_NOT_IN_ROOM:
376
- errorCode = 4007;
377
- break;
378
- case MEETING_ERRORS.MEETING_NOT_FOUND:
379
- errorCode = 4011;
380
- break;
381
- case MEETING_ERRORS.NOT_WEBEX_SITE:
382
- errorCode = 4012;
383
- break;
384
- case MEETING_ERRORS.INVALID_JOIN_TIME:
385
- errorCode = 4013;
386
- break;
387
- case MEETING_ERRORS.PHONE_NUMBER_NOT_A_NUMBER:
388
- errorCode = 4016;
389
- break;
390
- case MEETING_ERRORS.PHONE_NUMBER_TOO_LONG:
391
- errorCode = 4017;
392
- break;
393
- case MEETING_ERRORS.INVALID_DIALABLE_KEY:
394
- errorCode = 4018;
395
- break;
396
- case MEETING_ERRORS.ONE_ON_ONE_TO_SELF_NOT_ALLOWED:
397
- errorCode = 4019;
398
- break;
399
- case MEETING_ERRORS.REMOVED_PARTICIPANT:
400
- errorCode = 4020;
401
- break;
402
- case MEETING_ERRORS.MEETING_LINK_NOT_FOUND:
403
- errorCode = 4021;
404
- break;
405
- case MEETING_ERRORS.PHONE_NUMBER_TOO_SHORT_AFTER_IDD:
406
- errorCode = 4022;
407
- break;
408
- case MEETING_ERRORS.INVALID_INVITEE_ADDRESS:
409
- errorCode = 4023;
410
- break;
411
- case MEETING_ERRORS.PMR_ACCOUNT_LOCKED:
412
- errorCode = 4024;
413
- break;
414
- case MEETING_ERRORS.RESOURCE_GUEST_FORBIDDEN:
415
- errorCode = 4025;
416
- break;
417
- case MEETING_ERRORS.PMR_ACCOUNT_SUSPENDED:
418
- errorCode = 4026;
419
- break;
420
- case MEETING_ERRORS.EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE:
421
- errorCode = 4027;
422
- break;
423
- case MEETING_ERRORS.INVALID_SINCE_OR_SEQUENCE_HASH_IN_REQUEST:
424
- errorCode = 1006;
425
- break;
426
- case MEETING_ERRORS.CONVERSATION_NOT_FOUND:
427
- errorCode = 4028;
428
- break;
429
- case MEETING_ERRORS.RECORDING_CONTROL_NOT_SUPPORTED:
430
- case MEETING_ERRORS.RECORDING_NOT_STARTED:
431
- case MEETING_ERRORS.RECORDING_NOT_ENABLED:
432
- errorCode = 4029;
433
- break;
434
- default:
435
- errorCode = 4008;
436
- }
437
- }
438
- else {
439
- errorCode = 4008;
440
- }
441
-
442
- return this.generateErrorPayload(
443
- errorCode, showToUser, error.name.LOCUS_RESPONSE, err
444
- );
445
- }
446
-
447
-
448
- generateErrorPayload(errorCode, shownToUser, name, err) {
449
- if (error.errors[errorCode]) {
450
- const errorPayload = {
451
- shownToUser: shownToUser || false,
452
- category: error.errors[errorCode][2],
453
- errorDescription: error.errors[errorCode][0],
454
- errorCode,
455
- fatal: !includes(error.notFatalErrorList, errorCode),
456
- name: name || error.name.OTHER
457
- };
458
-
459
- if (err && err.body) {
460
- errorPayload.errorData = err.body;
461
- }
462
-
463
- if (err && err.statusCode) {
464
- errorPayload.httpCode = err.statusCode;
465
- }
466
-
467
- return errorPayload;
468
- }
469
-
470
- return null;
471
- }
472
-
473
- /**
474
- * Returns a formated string of the user agent.
475
- *
476
- * @returns {string} formatted user agent information
477
- */
478
- userAgentToString() {
479
- let userAgentOption;
480
- let browserInfo;
481
- const clientInfo = util.format('client=%s', `${this.webex.meetings?.metrics?.clientName}`);
482
-
483
- if (['chrome', 'firefox', 'msie', 'msedge', 'safari'].indexOf(getBrowserName().toLowerCase()) !== -1) {
484
- browserInfo = util.format('browser=%s', `${getBrowserName().toLowerCase()}/${getBrowserVersion().split('.')[0]}`);
485
- }
486
- const osInfo = util.format('os=%s', `${getOSName()}/${getOSVersion().split('.')[0]}`);
487
-
488
- if (browserInfo) {
489
- userAgentOption = `(${browserInfo}`;
490
- }
491
- if (osInfo) {
492
- userAgentOption = userAgentOption ? `${userAgentOption}; ${clientInfo}; ${osInfo}` : `${clientInfo}; (${osInfo}`;
493
- }
494
- if (userAgentOption) {
495
- userAgentOption += ')';
496
-
497
- return util.format('webex-js-sdk/%s %s', `${process.env.NODE_ENV}-${this.webex.version}`, userAgentOption);
498
- }
499
-
500
- return util.format('webex-js-sdk/%s', `${process.env.NODE_ENV}-${this.webex.version}`);
501
- }
502
-
503
- /**
504
- * Uploads given metric to the Metrics service as an Behavioral metric.
505
- * Metadata about the environment such as browser, OS, SDK and their versions
506
- * are automatically added when the metric is sent.
507
- *
508
- * The Metrics service will send an Behavioral metric to InfluxDB for
509
- * aggregation.
510
- * See https://confluence-eng-gpk2.cisco.com/conf/display/WBXT/Getting+started+with+Metrics+Service.
511
- *
512
- * @param {string} metricName Name of the metric (measurement) to send
513
- * @param {Object} metricFields Key-valye pairs of data or values about this metric
514
- * @param {Object} metricTags Key-value pairs of metric metadata
515
- *
516
- * @returns {void}
517
- */
518
- sendBehavioralMetric(metricName, metricFields = {}, metricTags = {}) {
519
- this.webex.internal.metrics.submitClientMetrics(metricName, {
520
- type: this.webex.config.metrics.type,
521
- fields: metricFields,
522
- tags: metricTags
523
- });
524
- }
525
- }
526
-
527
- // Export Metrics singleton ---------------------------------------------------
528
- const instance = new Metrics();
529
-
530
- export default instance;
@@ -1,92 +0,0 @@
1
- /* eslint-disable import/prefer-default-export */
2
-
3
- import {AUDIO, VIDEO} from '../constants';
4
- import createMuteState from '../meeting/muteState';
5
- import Meeting from '../meeting';
6
-
7
- /**
8
- * Class wrapping all the multistream specific APIs that need to be exposed at meeting level.
9
- *
10
- */
11
- export class MultistreamMedia {
12
- private meeting: Meeting;
13
-
14
- /**
15
- * Constructor
16
- * @param {Meeting} meeting
17
- */
18
- constructor(meeting: Meeting) {
19
- this.meeting = meeting;
20
- }
21
-
22
- /**
23
- * throws if we don't have a media connection created
24
- */
25
- private checkMediaConnection() {
26
- if (this.meeting?.mediaProperties?.webrtcMediaConnection) {
27
- return;
28
- }
29
- throw new Error('Webrtc media connection is missing');
30
- }
31
-
32
- /**
33
- * Publishes a local track in the meeting
34
- *
35
- * @param {MediaStreamTrack} track
36
- * @returns {Promise}
37
- */
38
- publishTrack(track: MediaStreamTrack): Promise<void> {
39
- this.checkMediaConnection();
40
-
41
- /* todo: for now we don't support screen share (waiting for server to support bundling, see SPARK-377812)
42
- for sharing:
43
- we have to call meeting.stopFloorRequest() before unpublishing a track
44
- we have to call meeting.share() after publishing a track
45
- */
46
-
47
- // todo: depending on how muting is done with Local tracks, this code here might need to change...
48
-
49
- if (track.kind === 'audio') {
50
- this.meeting.setLocalAudioTrack(track);
51
- this.meeting.mediaProperties.mediaDirection.sendAudio = true;
52
-
53
- // audio state could be undefined if you have not sent audio before
54
- this.meeting.audio =
55
- this.meeting.audio ||
56
- createMuteState(AUDIO, this.meeting, this.meeting.mediaProperties.mediaDirection);
57
- } else if (track.kind === 'video') {
58
- this.meeting.setLocalVideoTrack(track);
59
- this.meeting.mediaProperties.mediaDirection.sendVideo = true;
60
-
61
- // video state could be undefined if you have not sent video before
62
- this.meeting.video =
63
- this.meeting.video ||
64
- createMuteState(VIDEO, this.meeting, this.meeting.mediaProperties.mediaDirection);
65
- }
66
-
67
- return this.meeting.mediaProperties.webrtcMediaConnection.publishTrack(track);
68
- }
69
-
70
- /**
71
- * Unpublishes a local track in the meeting
72
- *
73
- * @param {MediaStreamTrack} track
74
- * @returns {Promise}
75
- */
76
- unpublishTrack(track: MediaStreamTrack): Promise<void> {
77
- // todo: see todos in publishTrack() - they all apply here too:
78
- // screen sharing - SPARK-377812
79
- // muting etc
80
-
81
- if (track.kind === 'audio') {
82
- this.meeting.setLocalVideoTrack(null);
83
- this.meeting.mediaProperties.mediaDirection.sendAudio = false;
84
- } else if (track.kind === 'video') {
85
- this.meeting.setLocalAudioTrack(null);
86
- this.meeting.mediaProperties.mediaDirection.sendVideo = false;
87
- }
88
- this.checkMediaConnection();
89
-
90
- return this.meeting.mediaProperties.webrtcMediaConnection.unpublishTrack(track);
91
- }
92
- }