@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
@@ -0,0 +1,210 @@
1
+ /*!
2
+ * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
+ */
4
+
5
+ import {_MEETING_LINK_, _SIP_URI_, _PERSONAL_ROOM_} from '../constants';
6
+ import LoggerProxy from '../common/logs/logger-proxy';
7
+
8
+ import MeetingInfoCollection from './collection';
9
+ import MeetingInfoRequest from './request';
10
+ import MeetingInfoUtil from './util';
11
+
12
+ /**
13
+ * @class MeetingInfo
14
+ */
15
+ export default class MeetingInfo {
16
+ meetingInfoCollection: any;
17
+ meetingInfoRequest: any;
18
+ webex: any;
19
+
20
+ /**
21
+ *
22
+ * @param {WebexSDK} webex
23
+ */
24
+ constructor(webex: any) {
25
+ this.webex = webex;
26
+
27
+ /**
28
+ * The meeting info request server interface
29
+ * @instance
30
+ * @type {Object}
31
+ * @private
32
+ * @memberof MeetingInfo
33
+ */
34
+ this.meetingInfoRequest = new MeetingInfoRequest(this.webex);
35
+ /**
36
+ * The meeting information collection interface
37
+ * @instance
38
+ * @type {Object}
39
+ * @private
40
+ * @memberof MeetingInfo
41
+ */
42
+ this.meetingInfoCollection = new MeetingInfoCollection();
43
+ }
44
+
45
+ /**
46
+ * @param {string} id
47
+ * @returns {object}
48
+ * @public
49
+ * @memberof MeetingInfo
50
+ */
51
+ public getMeetingInfo(id: string) {
52
+ return this.meetingInfoCollection.get(id);
53
+ }
54
+
55
+ /**
56
+ * @param {string} id
57
+ * @param {object} info
58
+ * @returns {null}
59
+ * @public
60
+ * @memberof MeetingInfo
61
+ */
62
+ public setMeetingInfo(id: string, info: object) {
63
+ this.meetingInfoCollection.set(id, info);
64
+ }
65
+
66
+ /**
67
+ * Helper to make the actual MeetingInfo request and set the meetingInfo if successful, else reject
68
+ * @param {Object} options
69
+ * @returns {Promise}
70
+ * @private
71
+ * @memberof MeetingInfo
72
+ */
73
+ private requestFetchInfo(options: any) {
74
+ const {meetingId, sendCAevents} = options;
75
+ if (meetingId && sendCAevents) {
76
+ this.webex.internal.newMetrics.submitInternalEvent({
77
+ name: 'internal.client.meetinginfo.request',
78
+ });
79
+ this.webex.internal.newMetrics.submitClientEvent({
80
+ name: 'client.meetinginfo.request',
81
+ options: {
82
+ meetingId,
83
+ },
84
+ });
85
+ }
86
+
87
+ return this.meetingInfoRequest
88
+ .fetchMeetingInfo(options)
89
+ .then((info) => {
90
+ if (meetingId && sendCAevents) {
91
+ this.webex.internal.newMetrics.submitInternalEvent({
92
+ name: 'internal.client.meetinginfo.response',
93
+ });
94
+ this.webex.internal.newMetrics.submitClientEvent({
95
+ name: 'client.meetinginfo.response',
96
+ payload: {
97
+ identifiers: {
98
+ meetingLookupUrl: info?.url,
99
+ },
100
+ },
101
+ options: {
102
+ meetingId,
103
+ webexConferenceIdStr: info?.body?.confIdStr || info?.body?.confID,
104
+ globalMeetingId: info?.body?.meetingId,
105
+ },
106
+ });
107
+ }
108
+ if (info && info.body) {
109
+ this.setMeetingInfo(info.body.sipMeetingUri || info.body.meetingLink, info.body);
110
+ }
111
+
112
+ return info;
113
+ })
114
+ .catch((error) => {
115
+ LoggerProxy.logger.error(
116
+ `Meeting-info:index#requestFetchInfo --> ${error} fetch meetingInfo`
117
+ );
118
+ if (meetingId && sendCAevents) {
119
+ this.webex.internal.newMetrics.submitInternalEvent({
120
+ name: 'internal.client.meetinginfo.response',
121
+ });
122
+ this.webex.internal.newMetrics.submitClientEvent({
123
+ name: 'client.meetinginfo.response',
124
+ payload: {
125
+ identifiers: {
126
+ meetingLookupUrl: error?.url,
127
+ },
128
+ },
129
+ options: {
130
+ meetingId,
131
+ rawError: error,
132
+ },
133
+ });
134
+ }
135
+
136
+ return Promise.reject(error);
137
+ });
138
+ }
139
+
140
+ /**
141
+ * Helper to generate the options for the MeetingInfo request
142
+ * @param {String} destination
143
+ * @param {String} type
144
+ * @returns {Promise}
145
+ * @private
146
+ * @memberof MeetingInfo
147
+ */
148
+ private fetchInfoOptions(destination: string, type: string) {
149
+ return MeetingInfoUtil.generateOptions({
150
+ destination,
151
+ type,
152
+ webex: this.webex,
153
+ });
154
+ }
155
+
156
+ // eslint-disable-next-line valid-jsdoc
157
+ /**
158
+ * Fetches meeting info from the server
159
+ * @param {String} destination one of many different types of destinations to look up info for
160
+ * @param {String} [type] to match up with the destination value
161
+ * @param {String} [password] meeting password
162
+ * @param {Object} [captchaInfo] captcha code and id
163
+ * @param {String} [installedOrgID]
164
+ * @param {String} [locusId]
165
+ * @param {Object} [extraParams]
166
+ * @param {Boolean} [options] meeting Id and whether Call Analyzer events should be sent
167
+ * @returns {Promise} returns a meeting info object
168
+ * @public
169
+ * @memberof MeetingInfo
170
+ */
171
+ public fetchMeetingInfo(
172
+ destination: string,
173
+ type: string = null,
174
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
175
+ password: string = null,
176
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
177
+ captchaInfo: {
178
+ code: string;
179
+ id: string;
180
+ } = null,
181
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
182
+ installedOrgID = null,
183
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
184
+ locusId = null,
185
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
186
+ extraParams: object = {},
187
+ options: {meetingId?: string; sendCAevents?: boolean} = {}
188
+ ) {
189
+ if (type === _PERSONAL_ROOM_ && !destination) {
190
+ destination = this.webex.internal.device.userId;
191
+ }
192
+
193
+ return this.fetchInfoOptions(MeetingInfoUtil.extractDestination(destination, type), type).then(
194
+ (infoOptions) =>
195
+ // fetch meeting info
196
+ this.requestFetchInfo({...infoOptions, ...options}).catch((error) => {
197
+ // if it failed the first time as meeting link
198
+ if (infoOptions.type === _MEETING_LINK_) {
199
+ // convert the meeting link to sip URI and retry
200
+ return this.requestFetchInfo({
201
+ ...this.fetchInfoOptions(MeetingInfoUtil.convertLinkToSip(destination), _SIP_URI_),
202
+ ...options,
203
+ });
204
+ }
205
+
206
+ return Promise.reject(error);
207
+ })
208
+ );
209
+ }
210
+ }
@@ -0,0 +1,429 @@
1
+ import lodash from 'lodash';
2
+ import {
3
+ HTTP_VERBS,
4
+ _CONVERSATION_URL_,
5
+ WBXAPPAPI_SERVICE,
6
+ DEFAULT_MEETING_INFO_REQUEST_BODY,
7
+ } from '../constants';
8
+ import Metrics from '../metrics';
9
+ import BEHAVIORAL_METRICS from '../metrics/constants';
10
+
11
+ import MeetingInfoUtil from './utilv2';
12
+
13
+ const PASSWORD_ERROR_DEFAULT_MESSAGE =
14
+ 'Password required. Call fetchMeetingInfo() with password argument';
15
+ const CAPTCHA_ERROR_DEFAULT_MESSAGE =
16
+ 'Captcha required. Call fetchMeetingInfo() with captchaInfo argument';
17
+ const ADHOC_MEETING_DEFAULT_ERROR =
18
+ 'Failed starting the adhoc meeting, Please contact support team ';
19
+ const CAPTCHA_ERROR_REQUIRES_PASSWORD_CODES = [423005, 423006];
20
+ const POLICY_ERROR_CODES = [403049, 403104, 403103, 403048, 403102, 403101];
21
+ /**
22
+ * Error to indicate that wbxappapi requires a password
23
+ */
24
+ export class MeetingInfoV2PasswordError extends Error {
25
+ meetingInfo: any;
26
+ sdkMessage: any;
27
+ wbxAppApiCode: any;
28
+ body: any;
29
+
30
+ /**
31
+ *
32
+ * @constructor
33
+ * @param {Number} [wbxAppApiErrorCode]
34
+ * @param {Object} [meetingInfo]
35
+ * @param {String} [message]
36
+ */
37
+ constructor(
38
+ wbxAppApiErrorCode?: number,
39
+ meetingInfo?: object,
40
+ message: string = PASSWORD_ERROR_DEFAULT_MESSAGE
41
+ ) {
42
+ super(`${message}, code=${wbxAppApiErrorCode}`);
43
+ this.name = 'MeetingInfoV2PasswordError';
44
+ this.sdkMessage = message;
45
+ this.stack = new Error().stack;
46
+ this.wbxAppApiCode = wbxAppApiErrorCode;
47
+ this.meetingInfo = meetingInfo;
48
+ }
49
+ }
50
+
51
+ /**
52
+ * Error generating a adhoc space meeting
53
+ */
54
+ export class MeetingInfoV2AdhocMeetingError extends Error {
55
+ sdkMessage: any;
56
+ wbxAppApiCode: any;
57
+ /**
58
+ *
59
+ * @constructor
60
+ * @param {Number} [wbxAppApiErrorCode]
61
+ * @param {String} [message]
62
+ */
63
+ constructor(wbxAppApiErrorCode?: number, message: string = ADHOC_MEETING_DEFAULT_ERROR) {
64
+ super(`${message}, code=${wbxAppApiErrorCode}`);
65
+ this.name = 'MeetingInfoV2AdhocMeetingError';
66
+ this.sdkMessage = message;
67
+ this.stack = new Error().stack;
68
+ this.wbxAppApiCode = wbxAppApiErrorCode;
69
+ }
70
+ }
71
+
72
+ /**
73
+ * Error preventing join because of a meeting policy
74
+ */
75
+ export class MeetingInfoV2PolicyError extends Error {
76
+ meetingInfo: object;
77
+ sdkMessage: string;
78
+ wbxAppApiCode: number;
79
+ /**
80
+ *
81
+ * @constructor
82
+ * @param {Number} [wbxAppApiErrorCode]
83
+ * @param {Object} [meetingInfo]
84
+ * @param {String} [message]
85
+ */
86
+ constructor(wbxAppApiErrorCode?: number, meetingInfo?: object, message?: string) {
87
+ super(`${message}, code=${wbxAppApiErrorCode}`);
88
+ this.name = 'MeetingInfoV2AdhocMeetingError';
89
+ this.sdkMessage = message;
90
+ this.stack = new Error().stack;
91
+ this.wbxAppApiCode = wbxAppApiErrorCode;
92
+ this.meetingInfo = meetingInfo;
93
+ }
94
+ }
95
+
96
+ /**
97
+ * Error to indicate that preferred webex site not present to start adhoc meeting
98
+ */
99
+ export class MeetingInfoV2CaptchaError extends Error {
100
+ captchaInfo: any;
101
+ isPasswordRequired: any;
102
+ sdkMessage: any;
103
+ wbxAppApiCode: any;
104
+ body: any;
105
+ /**
106
+ *
107
+ * @constructor
108
+ * @param {Number} [wbxAppApiErrorCode]
109
+ * @param {Object} [captchaInfo]
110
+ * @param {String} [message]
111
+ */
112
+ constructor(
113
+ wbxAppApiErrorCode?: number,
114
+ captchaInfo?: object,
115
+ message: string = CAPTCHA_ERROR_DEFAULT_MESSAGE
116
+ ) {
117
+ super(`${message}, code=${wbxAppApiErrorCode}`);
118
+ this.name = 'MeetingInfoV2PasswordError';
119
+ this.sdkMessage = message;
120
+ this.stack = new Error().stack;
121
+ this.wbxAppApiCode = wbxAppApiErrorCode;
122
+ this.isPasswordRequired = CAPTCHA_ERROR_REQUIRES_PASSWORD_CODES.includes(wbxAppApiErrorCode);
123
+ this.captchaInfo = captchaInfo;
124
+ }
125
+ }
126
+
127
+ /**
128
+ * @class MeetingInfo
129
+ */
130
+ export default class MeetingInfoV2 {
131
+ webex: any;
132
+
133
+ /**
134
+ *
135
+ * @param {WebexSDK} webex
136
+ */
137
+ constructor(webex) {
138
+ this.webex = webex;
139
+ }
140
+
141
+ /**
142
+ * converts hydra id into conversation url and persons Id
143
+ * @param {String} destination one of many different types of destinations to look up info for
144
+ * @param {String} [type] to match up with the destination value
145
+ * @returns {Promise} destination and type
146
+ * @public
147
+ * @memberof MeetingInfo
148
+ */
149
+ fetchInfoOptions(destination: string, type: string = null) {
150
+ return MeetingInfoUtil.getDestinationType({
151
+ destination,
152
+ type,
153
+ webex: this.webex,
154
+ });
155
+ }
156
+
157
+ /**
158
+ * Raises a MeetingInfoV2PolicyError for policy error codes
159
+ * @param {any} err the error from the request
160
+ * @returns {void}
161
+ */
162
+ handlePolicyError = (err) => {
163
+ if (!err.body) {
164
+ return;
165
+ }
166
+
167
+ if (POLICY_ERROR_CODES.includes(err.body?.code)) {
168
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_INFO_POLICY_ERROR, {
169
+ code: err.body?.code,
170
+ });
171
+
172
+ throw new MeetingInfoV2PolicyError(
173
+ err.body?.code,
174
+ err.body?.data?.meetingInfo,
175
+ err.body?.message
176
+ );
177
+ }
178
+ };
179
+
180
+ /**
181
+ * Creates adhoc space meetings for a space by fetching the conversation infomation
182
+ * @param {String} conversationUrl conversationUrl to start adhoc meeting on
183
+ * @param {String} installedOrgID org ID of user's machine
184
+ * @returns {Promise} returns a meeting info object
185
+ * @public
186
+ * @memberof MeetingInfo
187
+ */
188
+ async createAdhocSpaceMeeting(conversationUrl: string, installedOrgID?: string) {
189
+ if (!this.webex.meetings.preferredWebexSite) {
190
+ throw Error('No preferred webex site found');
191
+ }
192
+ const getInvitees = (particpants = []) => {
193
+ const invitees = [];
194
+
195
+ if (particpants) {
196
+ particpants.forEach((participant) => {
197
+ invitees.push({
198
+ email: participant.emailAddress,
199
+ ciUserUuid: participant.entryUUID,
200
+ });
201
+ });
202
+ }
203
+
204
+ return invitees;
205
+ };
206
+
207
+ return this.webex.internal.conversation
208
+ .get({url: conversationUrl}, {includeParticipants: true, disableTransform: true})
209
+ .then((conversation) => {
210
+ const body: {
211
+ title: string;
212
+ spaceUrl: string;
213
+ keyUrl: string;
214
+ kroUrl: string;
215
+ invitees: any[];
216
+ installedOrgID?: string;
217
+ } = {
218
+ title: conversation.displayName,
219
+ spaceUrl: conversation.url,
220
+ keyUrl: conversation.encryptionKeyUrl,
221
+ kroUrl: conversation.kmsResourceObjectUrl,
222
+ invitees: getInvitees(conversation.participants?.items),
223
+ };
224
+
225
+ if (installedOrgID) {
226
+ body.installedOrgID = installedOrgID;
227
+ }
228
+
229
+ const uri = this.webex.meetings.preferredWebexSite
230
+ ? `https://${this.webex.meetings.preferredWebexSite}/wbxappapi/v2/meetings/spaceInstant`
231
+ : '';
232
+
233
+ return this.webex.request({
234
+ method: HTTP_VERBS.POST,
235
+ uri,
236
+ body,
237
+ });
238
+ })
239
+ .then((requestResult) => {
240
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADHOC_MEETING_SUCCESS);
241
+
242
+ return requestResult;
243
+ })
244
+ .catch((err) => {
245
+ this.handlePolicyError(err);
246
+
247
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADHOC_MEETING_FAILURE, {
248
+ reason: err.message,
249
+ stack: err.stack,
250
+ });
251
+ throw new MeetingInfoV2AdhocMeetingError(err.body?.code, err.body?.message);
252
+ });
253
+ }
254
+
255
+ /**
256
+ * Fetches meeting info from the server
257
+ * @param {String} destination one of many different types of destinations to look up info for
258
+ * @param {String} [type] to match up with the destination value
259
+ * @param {String} password
260
+ * @param {Object} captchaInfo
261
+ * @param {String} captchaInfo.code
262
+ * @param {String} captchaInfo.id
263
+ * @param {String} installedOrgID org ID of user's machine
264
+ * @param {String} locusId
265
+ * @param {Object} extraParams
266
+ * @param {Object} options
267
+ * @returns {Promise} returns a meeting info object
268
+ * @public
269
+ * @memberof MeetingInfo
270
+ */
271
+ async fetchMeetingInfo(
272
+ destination: string,
273
+ type: string = null,
274
+ password: string = null,
275
+ captchaInfo: {
276
+ code: string;
277
+ id: string;
278
+ } = null,
279
+ installedOrgID = null,
280
+ locusId = null,
281
+ extraParams: object = {},
282
+ options: {meetingId?: string; sendCAevents?: boolean} = {}
283
+ ) {
284
+ const {meetingId, sendCAevents} = options;
285
+
286
+ const destinationType = await MeetingInfoUtil.getDestinationType({
287
+ destination,
288
+ type,
289
+ webex: this.webex,
290
+ });
291
+
292
+ if (
293
+ destinationType.type === _CONVERSATION_URL_ &&
294
+ this.webex.config.meetings.experimental.enableAdhocMeetings &&
295
+ this.webex.meetings.preferredWebexSite
296
+ ) {
297
+ return this.createAdhocSpaceMeeting(destinationType.destination, installedOrgID);
298
+ }
299
+
300
+ const body = await MeetingInfoUtil.getRequestBody({
301
+ ...destinationType,
302
+ password,
303
+ captchaInfo,
304
+ installedOrgID,
305
+ locusId,
306
+ extraParams,
307
+ });
308
+
309
+ // If the body only contains the default properties, we don't have enough to
310
+ // fetch the meeting info so don't bother trying.
311
+ if (
312
+ !lodash.difference(Object.keys(body), Object.keys(DEFAULT_MEETING_INFO_REQUEST_BODY)).length
313
+ ) {
314
+ const err = new Error('Not enough information to fetch meeting info');
315
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_FAILURE, {
316
+ reason: err.message,
317
+ destinationType: destinationType?.type,
318
+ webExMeetingId: destinationType?.info?.webExMeetingId,
319
+ sipUri: destinationType?.info?.sipUri,
320
+ });
321
+
322
+ throw err;
323
+ }
324
+
325
+ const requestOptions: any = {
326
+ method: HTTP_VERBS.POST,
327
+ body,
328
+ };
329
+
330
+ const directURI = await MeetingInfoUtil.getDirectMeetingInfoURI(destinationType);
331
+
332
+ if (directURI) {
333
+ requestOptions.uri = directURI;
334
+ } else {
335
+ requestOptions.service = WBXAPPAPI_SERVICE;
336
+ requestOptions.resource = 'meetingInfo';
337
+ }
338
+
339
+ if (meetingId && sendCAevents) {
340
+ this.webex.internal.newMetrics.submitInternalEvent({
341
+ name: 'internal.client.meetinginfo.request',
342
+ });
343
+
344
+ this.webex.internal.newMetrics.submitClientEvent({
345
+ name: 'client.meetinginfo.request',
346
+ options: {
347
+ meetingId,
348
+ },
349
+ });
350
+ }
351
+
352
+ return this.webex
353
+ .request(requestOptions)
354
+ .then((response) => {
355
+ if (meetingId && sendCAevents) {
356
+ this.webex.internal.newMetrics.submitInternalEvent({
357
+ name: 'internal.client.meetinginfo.response',
358
+ });
359
+
360
+ this.webex.internal.newMetrics.submitClientEvent({
361
+ name: 'client.meetinginfo.response',
362
+ payload: {
363
+ identifiers: {
364
+ meetingLookupUrl: response?.url,
365
+ },
366
+ },
367
+ options: {
368
+ meetingId,
369
+ webexConferenceIdStr: response?.body?.confIdStr || response?.body?.confID,
370
+ globalMeetingId: response?.body?.meetingId,
371
+ },
372
+ });
373
+ }
374
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_SUCCESS);
375
+
376
+ return response;
377
+ })
378
+ .catch((err) => {
379
+ if (meetingId && sendCAevents) {
380
+ this.webex.internal.newMetrics.submitInternalEvent({
381
+ name: 'internal.client.meetinginfo.response',
382
+ });
383
+
384
+ this.webex.internal.newMetrics.submitClientEvent({
385
+ name: 'client.meetinginfo.response',
386
+ payload: {
387
+ identifiers: {
388
+ meetingLookupUrl: err?.url,
389
+ },
390
+ },
391
+ options: {
392
+ meetingId,
393
+ rawError: err,
394
+ },
395
+ });
396
+ }
397
+
398
+ if (err?.statusCode === 403) {
399
+ this.handlePolicyError(err);
400
+
401
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.VERIFY_PASSWORD_ERROR, {
402
+ reason: err.message,
403
+ stack: err.stack,
404
+ });
405
+
406
+ throw new MeetingInfoV2PasswordError(err.body?.code, err.body?.data?.meetingInfo);
407
+ }
408
+ if (err?.statusCode === 423) {
409
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.VERIFY_CAPTCHA_ERROR, {
410
+ reason: err.message,
411
+ stack: err.stack,
412
+ });
413
+
414
+ throw new MeetingInfoV2CaptchaError(err.body?.code, {
415
+ captchaId: err.body.captchaID,
416
+ verificationImageURL: err.body.verificationImageURL,
417
+ verificationAudioURL: err.body.verificationAudioURL,
418
+ refreshURL: err.body.refreshURL,
419
+ });
420
+ }
421
+
422
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_FAILURE, {
423
+ reason: err.message,
424
+ stack: err.stack,
425
+ });
426
+ throw err;
427
+ });
428
+ }
429
+ }
@@ -2,15 +2,18 @@ import {API} from '../constants';
2
2
  import ParameterError from '../common/errors/parameter';
3
3
 
4
4
  import MeetingInfoUtil from './util';
5
+
5
6
  /**
6
7
  * @class MeetingInfoRequest
7
8
  */
8
9
  export default class MeetingInfoRequest {
10
+ webex: any;
11
+
9
12
  /**
10
13
  * Meeting Info Request Constructor
11
14
  * @param {WebexSDK} webex
12
15
  */
13
- constructor(webex) {
16
+ constructor(webex: any) {
14
17
  this.webex = webex;
15
18
  }
16
19
 
@@ -24,12 +27,19 @@ export default class MeetingInfoRequest {
24
27
  * @throws {Error} if the options are not valid and complete
25
28
  * @memberof MeetingInfoRequest
26
29
  */
27
- fetchMeetingInfo(options) {
30
+ fetchMeetingInfo(options: any) {
28
31
  if (!options || !options.type || !options.destination) {
29
- throw new ParameterError('MeetingInfo should be fetched with a type and destination specified, see list of valid types and their corresponding values in constants');
32
+ throw new ParameterError(
33
+ 'MeetingInfo should be fetched with a type and destination specified, see list of valid types and their corresponding values in constants'
34
+ );
30
35
  }
31
36
  const resourceUrl = MeetingInfoUtil.getResourceUrl(options.type, options.destination);
32
- const requestParams = MeetingInfoUtil.getRequestParams(resourceUrl, options.type, options.destination, API.LOCUS);
37
+ const requestParams = MeetingInfoUtil.getRequestParams(
38
+ resourceUrl,
39
+ options.type,
40
+ options.destination,
41
+ API.LOCUS
42
+ );
33
43
 
34
44
  return this.webex.request(requestParams);
35
45
  }