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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (512) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/annotation/annotation.types.js +7 -0
  4. package/dist/annotation/annotation.types.js.map +1 -0
  5. package/dist/annotation/constants.js +48 -0
  6. package/dist/annotation/constants.js.map +1 -0
  7. package/dist/annotation/index.js +357 -0
  8. package/dist/annotation/index.js.map +1 -0
  9. package/dist/breakouts/breakout.js +176 -0
  10. package/dist/breakouts/breakout.js.map +1 -0
  11. package/dist/breakouts/collection.js +23 -0
  12. package/dist/breakouts/collection.js.map +1 -0
  13. package/dist/breakouts/edit-lock-error.js +52 -0
  14. package/dist/breakouts/edit-lock-error.js.map +1 -0
  15. package/dist/breakouts/events.js +43 -0
  16. package/dist/breakouts/events.js.map +1 -0
  17. package/dist/breakouts/index.js +919 -0
  18. package/dist/breakouts/index.js.map +1 -0
  19. package/dist/breakouts/request.js +78 -0
  20. package/dist/breakouts/request.js.map +1 -0
  21. package/dist/breakouts/utils.js +67 -0
  22. package/dist/breakouts/utils.js.map +1 -0
  23. package/dist/common/browser-detection.js +1 -20
  24. package/dist/common/browser-detection.js.map +1 -1
  25. package/dist/common/collection.js +5 -20
  26. package/dist/common/collection.js.map +1 -1
  27. package/dist/common/config.js +0 -7
  28. package/dist/common/config.js.map +1 -1
  29. package/dist/common/errors/captcha-error.js +5 -26
  30. package/dist/common/errors/captcha-error.js.map +1 -1
  31. package/dist/common/errors/intent-to-join.js +5 -26
  32. package/dist/common/errors/intent-to-join.js.map +1 -1
  33. package/dist/common/errors/join-meeting.js +6 -27
  34. package/dist/common/errors/join-meeting.js.map +1 -1
  35. package/dist/common/errors/media.js +5 -26
  36. package/dist/common/errors/media.js.map +1 -1
  37. package/dist/common/errors/parameter.js +5 -33
  38. package/dist/common/errors/parameter.js.map +1 -1
  39. package/dist/common/errors/password-error.js +5 -26
  40. package/dist/common/errors/password-error.js.map +1 -1
  41. package/dist/common/errors/permission.js +4 -25
  42. package/dist/common/errors/permission.js.map +1 -1
  43. package/dist/common/errors/reconnection-in-progress.js +0 -17
  44. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  45. package/dist/common/errors/reconnection.js +5 -26
  46. package/dist/common/errors/reconnection.js.map +1 -1
  47. package/dist/common/errors/stats.js +5 -26
  48. package/dist/common/errors/stats.js.map +1 -1
  49. package/dist/common/errors/webex-errors.js +6 -41
  50. package/dist/common/errors/webex-errors.js.map +1 -1
  51. package/dist/common/errors/webex-meetings-error.js +1 -24
  52. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  53. package/dist/common/events/events-scope.js +0 -22
  54. package/dist/common/events/events-scope.js.map +1 -1
  55. package/dist/common/events/events.js +0 -23
  56. package/dist/common/events/events.js.map +1 -1
  57. package/dist/common/events/trigger-proxy.js +0 -12
  58. package/dist/common/events/trigger-proxy.js.map +1 -1
  59. package/dist/common/events/util.js +0 -15
  60. package/dist/common/events/util.js.map +1 -1
  61. package/dist/common/logs/logger-config.js +0 -4
  62. package/dist/common/logs/logger-config.js.map +1 -1
  63. package/dist/common/logs/logger-proxy.js +1 -8
  64. package/dist/common/logs/logger-proxy.js.map +1 -1
  65. package/dist/common/logs/request.js +35 -61
  66. package/dist/common/logs/request.js.map +1 -1
  67. package/dist/common/queue.js +4 -14
  68. package/dist/common/queue.js.map +1 -1
  69. package/dist/config.js +6 -6
  70. package/dist/config.js.map +1 -1
  71. package/dist/constants.js +173 -52
  72. package/dist/constants.js.map +1 -1
  73. package/dist/controls-options-manager/constants.js +14 -0
  74. package/dist/controls-options-manager/constants.js.map +1 -0
  75. package/dist/controls-options-manager/enums.js +25 -0
  76. package/dist/controls-options-manager/enums.js.map +1 -0
  77. package/dist/controls-options-manager/index.js +297 -0
  78. package/dist/controls-options-manager/index.js.map +1 -0
  79. package/dist/controls-options-manager/types.js +7 -0
  80. package/dist/controls-options-manager/types.js.map +1 -0
  81. package/dist/controls-options-manager/util.js +250 -0
  82. package/dist/controls-options-manager/util.js.map +1 -0
  83. package/dist/index.js +72 -17
  84. package/dist/index.js.map +1 -1
  85. package/dist/locus-info/controlsUtils.js +56 -29
  86. package/dist/locus-info/controlsUtils.js.map +1 -1
  87. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  88. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  89. package/dist/locus-info/fullState.js +0 -15
  90. package/dist/locus-info/fullState.js.map +1 -1
  91. package/dist/locus-info/hostUtils.js +4 -12
  92. package/dist/locus-info/hostUtils.js.map +1 -1
  93. package/dist/locus-info/index.js +327 -211
  94. package/dist/locus-info/index.js.map +1 -1
  95. package/dist/locus-info/infoUtils.js +0 -38
  96. package/dist/locus-info/infoUtils.js.map +1 -1
  97. package/dist/locus-info/mediaSharesUtils.js +12 -38
  98. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  99. package/dist/locus-info/parser.js +88 -123
  100. package/dist/locus-info/parser.js.map +1 -1
  101. package/dist/locus-info/selfUtils.js +99 -91
  102. package/dist/locus-info/selfUtils.js.map +1 -1
  103. package/dist/media/index.js +62 -147
  104. package/dist/media/index.js.map +1 -1
  105. package/dist/media/properties.js +71 -117
  106. package/dist/media/properties.js.map +1 -1
  107. package/dist/media/util.js +2 -9
  108. package/dist/media/util.js.map +1 -1
  109. package/dist/mediaQualityMetrics/config.js +505 -495
  110. package/dist/mediaQualityMetrics/config.js.map +1 -1
  111. package/dist/meeting/in-meeting-actions.js +59 -14
  112. package/dist/meeting/in-meeting-actions.js.map +1 -1
  113. package/dist/meeting/index.js +2396 -2388
  114. package/dist/meeting/index.js.map +1 -1
  115. package/dist/meeting/muteState.js +252 -113
  116. package/dist/meeting/muteState.js.map +1 -1
  117. package/dist/meeting/request.js +318 -283
  118. package/dist/meeting/request.js.map +1 -1
  119. package/dist/meeting/request.type.js +7 -0
  120. package/dist/meeting/request.type.js.map +1 -0
  121. package/dist/meeting/state.js +21 -31
  122. package/dist/meeting/state.js.map +1 -1
  123. package/dist/meeting/util.js +58 -217
  124. package/dist/meeting/util.js.map +1 -1
  125. package/dist/meeting-info/collection.js +3 -25
  126. package/dist/meeting-info/collection.js.map +1 -1
  127. package/dist/meeting-info/index.js +10 -33
  128. package/dist/meeting-info/index.js.map +1 -1
  129. package/dist/meeting-info/meeting-info-v2.js +263 -282
  130. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  131. package/dist/meeting-info/request.js +1 -16
  132. package/dist/meeting-info/request.js.map +1 -1
  133. package/dist/meeting-info/util.js +98 -183
  134. package/dist/meeting-info/util.js.map +1 -1
  135. package/dist/meeting-info/utilv2.js +155 -232
  136. package/dist/meeting-info/utilv2.js.map +1 -1
  137. package/dist/meetings/collection.js +24 -20
  138. package/dist/meetings/collection.js.map +1 -1
  139. package/dist/meetings/index.js +675 -593
  140. package/dist/meetings/index.js.map +1 -1
  141. package/dist/meetings/request.js +23 -42
  142. package/dist/meetings/request.js.map +1 -1
  143. package/dist/meetings/util.js +177 -155
  144. package/dist/meetings/util.js.map +1 -1
  145. package/dist/member/index.js +80 -88
  146. package/dist/member/index.js.map +1 -1
  147. package/dist/member/types.js +15 -0
  148. package/dist/member/types.js.map +1 -0
  149. package/dist/member/util.js +90 -69
  150. package/dist/member/util.js.map +1 -1
  151. package/dist/members/collection.js +12 -12
  152. package/dist/members/collection.js.map +1 -1
  153. package/dist/members/index.js +162 -204
  154. package/dist/members/index.js.map +1 -1
  155. package/dist/members/request.js +58 -53
  156. package/dist/members/request.js.map +1 -1
  157. package/dist/members/types.js +15 -0
  158. package/dist/members/types.js.map +1 -0
  159. package/dist/members/util.js +107 -44
  160. package/dist/members/util.js.map +1 -1
  161. package/dist/metrics/config.js +5 -14
  162. package/dist/metrics/config.js.map +1 -1
  163. package/dist/metrics/constants.js +3 -7
  164. package/dist/metrics/constants.js.map +1 -1
  165. package/dist/metrics/index.js +61 -161
  166. package/dist/metrics/index.js.map +1 -1
  167. package/dist/multistream/mediaRequestManager.js +167 -50
  168. package/dist/multistream/mediaRequestManager.js.map +1 -1
  169. package/dist/multistream/receiveSlot.js +58 -65
  170. package/dist/multistream/receiveSlot.js.map +1 -1
  171. package/dist/multistream/receiveSlotManager.js +74 -93
  172. package/dist/multistream/receiveSlotManager.js.map +1 -1
  173. package/dist/multistream/remoteMedia.js +55 -74
  174. package/dist/multistream/remoteMedia.js.map +1 -1
  175. package/dist/multistream/remoteMediaGroup.js +6 -40
  176. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  177. package/dist/multistream/remoteMediaManager.js +466 -442
  178. package/dist/multistream/remoteMediaManager.js.map +1 -1
  179. package/dist/networkQualityMonitor/index.js +32 -59
  180. package/dist/networkQualityMonitor/index.js.map +1 -1
  181. package/dist/personal-meeting-room/index.js +10 -45
  182. package/dist/personal-meeting-room/index.js.map +1 -1
  183. package/dist/personal-meeting-room/request.js +2 -33
  184. package/dist/personal-meeting-room/request.js.map +1 -1
  185. package/dist/personal-meeting-room/util.js +0 -13
  186. package/dist/personal-meeting-room/util.js.map +1 -1
  187. package/dist/reachability/index.js +190 -199
  188. package/dist/reachability/index.js.map +1 -1
  189. package/dist/reachability/request.js +14 -23
  190. package/dist/reachability/request.js.map +1 -1
  191. package/dist/reactions/constants.js +13 -0
  192. package/dist/reactions/constants.js.map +1 -0
  193. package/dist/reactions/reactions.js +109 -0
  194. package/dist/reactions/reactions.js.map +1 -0
  195. package/dist/reactions/reactions.type.js +36 -0
  196. package/dist/reactions/reactions.type.js.map +1 -0
  197. package/dist/reconnection-manager/index.js +326 -465
  198. package/dist/reconnection-manager/index.js.map +1 -1
  199. package/dist/recording-controller/enums.js +17 -0
  200. package/dist/recording-controller/enums.js.map +1 -0
  201. package/dist/recording-controller/index.js +343 -0
  202. package/dist/recording-controller/index.js.map +1 -0
  203. package/dist/recording-controller/util.js +63 -0
  204. package/dist/recording-controller/util.js.map +1 -0
  205. package/dist/roap/index.js +38 -67
  206. package/dist/roap/index.js.map +1 -1
  207. package/dist/roap/request.js +143 -134
  208. package/dist/roap/request.js.map +1 -1
  209. package/dist/roap/turnDiscovery.js +149 -101
  210. package/dist/roap/turnDiscovery.js.map +1 -1
  211. package/dist/statsAnalyzer/global.js +1 -95
  212. package/dist/statsAnalyzer/global.js.map +1 -1
  213. package/dist/statsAnalyzer/index.js +369 -461
  214. package/dist/statsAnalyzer/index.js.map +1 -1
  215. package/dist/statsAnalyzer/mqaUtil.js +144 -94
  216. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  217. package/dist/transcription/index.js +13 -45
  218. package/dist/transcription/index.js.map +1 -1
  219. package/dist/types/annotation/annotation.types.d.ts +34 -0
  220. package/dist/types/annotation/constants.d.ts +31 -0
  221. package/dist/types/annotation/index.d.ts +124 -0
  222. package/dist/types/breakouts/breakout.d.ts +8 -0
  223. package/dist/types/breakouts/collection.d.ts +5 -0
  224. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  225. package/dist/types/breakouts/events.d.ts +2 -0
  226. package/dist/types/breakouts/index.d.ts +5 -0
  227. package/dist/types/breakouts/request.d.ts +22 -0
  228. package/dist/types/breakouts/utils.d.ts +15 -0
  229. package/dist/types/common/browser-detection.d.ts +9 -0
  230. package/dist/types/common/collection.d.ts +48 -0
  231. package/dist/types/common/config.d.ts +2 -0
  232. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  233. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  234. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  235. package/dist/types/common/errors/media.d.ts +15 -0
  236. package/dist/types/common/errors/parameter.d.ts +15 -0
  237. package/dist/types/common/errors/password-error.d.ts +15 -0
  238. package/dist/types/common/errors/permission.d.ts +14 -0
  239. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  240. package/dist/types/common/errors/reconnection.d.ts +15 -0
  241. package/dist/types/common/errors/stats.d.ts +15 -0
  242. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  243. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  244. package/dist/types/common/events/events-scope.d.ts +17 -0
  245. package/dist/types/common/events/events.d.ts +12 -0
  246. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  247. package/dist/types/common/events/util.d.ts +2 -0
  248. package/dist/types/common/logs/logger-config.d.ts +2 -0
  249. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  250. package/dist/types/common/logs/request.d.ts +34 -0
  251. package/dist/types/common/queue.d.ts +32 -0
  252. package/dist/types/config.d.ts +78 -0
  253. package/dist/types/constants.d.ts +968 -0
  254. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  255. package/dist/types/controls-options-manager/enums.d.ts +13 -0
  256. package/dist/types/controls-options-manager/index.d.ts +136 -0
  257. package/dist/types/controls-options-manager/types.d.ts +37 -0
  258. package/dist/types/controls-options-manager/util.d.ts +1 -0
  259. package/dist/types/index.d.ts +7 -0
  260. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  261. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  262. package/dist/types/locus-info/fullState.d.ts +2 -0
  263. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  264. package/dist/types/locus-info/index.d.ts +315 -0
  265. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  266. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  267. package/dist/types/locus-info/parser.d.ts +212 -0
  268. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  269. package/dist/types/media/index.d.ts +34 -0
  270. package/dist/types/media/properties.d.ts +108 -0
  271. package/dist/types/media/util.d.ts +2 -0
  272. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  273. package/dist/types/meeting/in-meeting-actions.d.ts +129 -0
  274. package/dist/types/meeting/index.d.ts +1748 -0
  275. package/dist/types/meeting/muteState.d.ts +185 -0
  276. package/dist/types/meeting/request.d.ts +275 -0
  277. package/dist/types/meeting/request.type.d.ts +11 -0
  278. package/dist/types/meeting/state.d.ts +9 -0
  279. package/dist/types/meeting/util.d.ts +2 -0
  280. package/dist/types/meeting-info/collection.d.ts +20 -0
  281. package/dist/types/meeting-info/index.d.ts +57 -0
  282. package/dist/types/meeting-info/meeting-info-v2.d.ts +112 -0
  283. package/dist/types/meeting-info/request.d.ts +22 -0
  284. package/dist/types/meeting-info/util.d.ts +2 -0
  285. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  286. package/dist/types/meetings/collection.d.ts +31 -0
  287. package/dist/types/meetings/index.d.ts +345 -0
  288. package/dist/types/meetings/request.d.ts +27 -0
  289. package/dist/types/meetings/util.d.ts +18 -0
  290. package/dist/types/member/index.d.ts +156 -0
  291. package/dist/types/member/types.d.ts +21 -0
  292. package/dist/types/member/util.d.ts +2 -0
  293. package/dist/types/members/collection.d.ts +29 -0
  294. package/dist/types/members/index.d.ts +353 -0
  295. package/dist/types/members/request.d.ts +69 -0
  296. package/dist/types/members/types.d.ts +24 -0
  297. package/dist/types/members/util.d.ts +2 -0
  298. package/dist/types/metrics/config.d.ts +172 -0
  299. package/dist/types/metrics/constants.d.ts +54 -0
  300. package/dist/types/metrics/index.d.ts +152 -0
  301. package/dist/types/multistream/mediaRequestManager.d.ts +101 -0
  302. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  303. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  304. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  305. package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
  306. package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
  307. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  308. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  309. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  310. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  311. package/dist/types/reachability/index.d.ts +152 -0
  312. package/dist/types/reachability/request.d.ts +37 -0
  313. package/dist/types/reactions/constants.d.ts +3 -0
  314. package/dist/types/reactions/reactions.d.ts +4 -0
  315. package/dist/types/reactions/reactions.type.d.ts +52 -0
  316. package/dist/types/reconnection-manager/index.d.ts +126 -0
  317. package/dist/types/recording-controller/enums.d.ts +7 -0
  318. package/dist/types/recording-controller/index.d.ts +193 -0
  319. package/dist/types/recording-controller/util.d.ts +13 -0
  320. package/dist/types/roap/index.d.ts +77 -0
  321. package/dist/types/roap/request.d.ts +38 -0
  322. package/dist/types/roap/turnDiscovery.d.ts +88 -0
  323. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  324. package/dist/types/statsAnalyzer/index.d.ts +200 -0
  325. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  326. package/dist/types/transcription/index.d.ts +64 -0
  327. package/internal-README.md +7 -6
  328. package/package.json +28 -21
  329. package/src/annotation/annotation.types.ts +41 -0
  330. package/src/annotation/constants.ts +36 -0
  331. package/src/annotation/index.ts +339 -0
  332. package/src/breakouts/README.md +219 -0
  333. package/src/breakouts/breakout.ts +141 -0
  334. package/src/breakouts/collection.ts +19 -0
  335. package/src/breakouts/edit-lock-error.ts +25 -0
  336. package/src/breakouts/events.ts +37 -0
  337. package/src/breakouts/index.ts +823 -0
  338. package/src/breakouts/request.ts +55 -0
  339. package/src/breakouts/utils.ts +57 -0
  340. package/src/common/browser-detection.ts +9 -6
  341. package/src/common/collection.ts +3 -1
  342. package/src/common/errors/captcha-error.ts +6 -6
  343. package/src/common/errors/intent-to-join.ts +6 -6
  344. package/src/common/errors/join-meeting.ts +12 -8
  345. package/src/common/errors/media.ts +6 -6
  346. package/src/common/errors/parameter.ts +9 -6
  347. package/src/common/errors/password-error.ts +6 -6
  348. package/src/common/errors/permission.ts +5 -5
  349. package/src/common/errors/reconnection.ts +6 -6
  350. package/src/common/errors/stats.ts +6 -6
  351. package/src/common/errors/webex-errors.ts +7 -5
  352. package/src/common/errors/webex-meetings-error.ts +1 -1
  353. package/src/common/events/events-scope.ts +5 -1
  354. package/src/common/events/events.ts +5 -1
  355. package/src/common/events/trigger-proxy.ts +8 -3
  356. package/src/common/events/util.ts +1 -2
  357. package/src/common/logs/logger-proxy.ts +21 -10
  358. package/src/common/logs/request.ts +11 -8
  359. package/src/config.ts +16 -12
  360. package/src/constants.ts +119 -6
  361. package/src/controls-options-manager/constants.ts +5 -0
  362. package/src/controls-options-manager/enums.ts +16 -0
  363. package/src/controls-options-manager/index.ts +278 -0
  364. package/src/controls-options-manager/types.ts +49 -0
  365. package/src/controls-options-manager/util.ts +229 -0
  366. package/src/index.ts +33 -0
  367. package/src/locus-info/controlsUtils.ts +91 -24
  368. package/src/locus-info/fullState.ts +15 -11
  369. package/src/locus-info/hostUtils.ts +4 -3
  370. package/src/locus-info/index.ts +270 -54
  371. package/src/locus-info/infoUtils.ts +12 -4
  372. package/src/locus-info/mediaSharesUtils.ts +4 -4
  373. package/src/locus-info/parser.ts +46 -68
  374. package/src/locus-info/selfUtils.ts +187 -56
  375. package/src/media/index.ts +142 -172
  376. package/src/media/properties.ts +43 -36
  377. package/src/media/util.ts +1 -1
  378. package/src/mediaQualityMetrics/config.ts +380 -378
  379. package/src/meeting/in-meeting-actions.ts +123 -3
  380. package/src/meeting/index.ts +2617 -1545
  381. package/src/meeting/muteState.ts +271 -68
  382. package/src/meeting/request.ts +251 -132
  383. package/src/meeting/request.type.ts +13 -0
  384. package/src/meeting/state.ts +45 -30
  385. package/src/meeting/util.ts +119 -110
  386. package/src/meeting-info/collection.ts +2 -1
  387. package/src/meeting-info/index.ts +32 -30
  388. package/src/meeting-info/meeting-info-v2.ts +181 -109
  389. package/src/meeting-info/request.ts +9 -3
  390. package/src/meeting-info/util.ts +54 -46
  391. package/src/meeting-info/utilv2.ts +70 -55
  392. package/src/meetings/collection.ts +21 -1
  393. package/src/meetings/index.ts +749 -437
  394. package/src/meetings/request.ts +29 -25
  395. package/src/meetings/util.ts +122 -33
  396. package/src/member/index.ts +86 -49
  397. package/src/member/types.ts +24 -0
  398. package/src/member/util.ts +92 -13
  399. package/src/members/collection.ts +8 -1
  400. package/src/members/index.ts +281 -129
  401. package/src/members/request.ts +87 -14
  402. package/src/members/types.ts +28 -0
  403. package/src/members/util.ts +140 -49
  404. package/src/metrics/config.ts +256 -90
  405. package/src/metrics/constants.ts +1 -6
  406. package/src/metrics/index.ts +96 -96
  407. package/src/multistream/mediaRequestManager.ts +203 -45
  408. package/src/multistream/receiveSlot.ts +69 -26
  409. package/src/multistream/receiveSlotManager.ts +62 -38
  410. package/src/multistream/remoteMedia.ts +30 -4
  411. package/src/multistream/remoteMediaGroup.ts +4 -3
  412. package/src/multistream/remoteMediaManager.ts +230 -66
  413. package/src/networkQualityMonitor/index.ts +24 -27
  414. package/src/personal-meeting-room/index.ts +12 -16
  415. package/src/personal-meeting-room/request.ts +10 -3
  416. package/src/personal-meeting-room/util.ts +3 -3
  417. package/src/reachability/index.ts +131 -79
  418. package/src/reachability/request.ts +43 -34
  419. package/src/reactions/constants.ts +4 -0
  420. package/src/reactions/reactions.ts +104 -0
  421. package/src/reactions/reactions.type.ts +62 -0
  422. package/src/reconnection-manager/index.ts +193 -111
  423. package/src/recording-controller/enums.ts +8 -0
  424. package/src/recording-controller/index.ts +315 -0
  425. package/src/recording-controller/util.ts +58 -0
  426. package/src/roap/index.ts +63 -51
  427. package/src/roap/request.ts +86 -53
  428. package/src/roap/turnDiscovery.ts +105 -46
  429. package/src/statsAnalyzer/global.ts +8 -104
  430. package/src/statsAnalyzer/index.ts +624 -376
  431. package/src/statsAnalyzer/mqaUtil.ts +203 -90
  432. package/src/transcription/index.ts +34 -32
  433. package/test/integration/spec/converged-space-meetings.js +177 -0
  434. package/test/integration/spec/journey.js +666 -464
  435. package/test/integration/spec/space-meeting.js +320 -204
  436. package/test/integration/spec/transcription.js +7 -8
  437. package/test/unit/spec/annotation/index.ts +435 -0
  438. package/test/unit/spec/breakouts/breakout.ts +184 -0
  439. package/test/unit/spec/breakouts/collection.ts +15 -0
  440. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  441. package/test/unit/spec/breakouts/events.ts +77 -0
  442. package/test/unit/spec/breakouts/index.ts +1504 -0
  443. package/test/unit/spec/breakouts/request.ts +104 -0
  444. package/test/unit/spec/breakouts/utils.js +72 -0
  445. package/test/unit/spec/common/browser-detection.js +9 -28
  446. package/test/unit/spec/controls-options-manager/index.js +287 -0
  447. package/test/unit/spec/controls-options-manager/util.js +403 -0
  448. package/test/unit/spec/fixture/locus.js +92 -90
  449. package/test/unit/spec/locus-info/controlsUtils.js +177 -32
  450. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  451. package/test/unit/spec/locus-info/index.js +493 -3
  452. package/test/unit/spec/locus-info/infoUtils.js +26 -33
  453. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  454. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  455. package/test/unit/spec/locus-info/parser.js +3 -9
  456. package/test/unit/spec/locus-info/selfConstant.js +110 -103
  457. package/test/unit/spec/locus-info/selfUtils.js +236 -12
  458. package/test/unit/spec/media/index.ts +104 -8
  459. package/test/unit/spec/media/properties.ts +9 -9
  460. package/test/unit/spec/meeting/in-meeting-actions.ts +58 -3
  461. package/test/unit/spec/meeting/index.js +2649 -837
  462. package/test/unit/spec/meeting/muteState.js +368 -70
  463. package/test/unit/spec/meeting/request.js +217 -43
  464. package/test/unit/spec/meeting/utils.js +146 -165
  465. package/test/unit/spec/meeting-info/meetinginfov2.js +268 -74
  466. package/test/unit/spec/meeting-info/request.js +7 -9
  467. package/test/unit/spec/meeting-info/util.js +11 -12
  468. package/test/unit/spec/meeting-info/utilv2.js +131 -74
  469. package/test/unit/spec/meetings/collection.js +15 -1
  470. package/test/unit/spec/meetings/index.js +1052 -329
  471. package/test/unit/spec/meetings/utils.js +163 -14
  472. package/test/unit/spec/member/index.js +24 -1
  473. package/test/unit/spec/member/util.js +359 -32
  474. package/test/unit/spec/members/index.js +402 -54
  475. package/test/unit/spec/members/request.js +76 -20
  476. package/test/unit/spec/members/utils.js +191 -4
  477. package/test/unit/spec/metrics/index.js +46 -20
  478. package/test/unit/spec/multistream/mediaRequestManager.ts +650 -105
  479. package/test/unit/spec/multistream/receiveSlot.ts +76 -17
  480. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  481. package/test/unit/spec/multistream/remoteMedia.ts +32 -2
  482. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  483. package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
  484. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  485. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  486. package/test/unit/spec/reachability/index.ts +176 -27
  487. package/test/unit/spec/reachability/request.js +66 -0
  488. package/test/unit/spec/reconnection-manager/index.js +62 -31
  489. package/test/unit/spec/recording-controller/index.js +231 -0
  490. package/test/unit/spec/recording-controller/util.js +102 -0
  491. package/test/unit/spec/roap/index.ts +21 -16
  492. package/test/unit/spec/roap/request.ts +217 -0
  493. package/test/unit/spec/roap/turnDiscovery.ts +93 -49
  494. package/test/unit/spec/stats-analyzer/index.js +116 -60
  495. package/test/utils/cmr.js +44 -42
  496. package/test/utils/constants.js +9 -0
  497. package/test/utils/integrationTestUtils.js +64 -0
  498. package/test/utils/testUtils.js +63 -99
  499. package/test/utils/webex-config.js +22 -18
  500. package/test/utils/webex-test-users.js +57 -50
  501. package/tsconfig.json +6 -0
  502. package/dist/media/internal-media-core-wrapper.js +0 -22
  503. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  504. package/dist/meeting/effectsState.js +0 -334
  505. package/dist/meeting/effectsState.js.map +0 -1
  506. package/dist/multistream/multistreamMedia.js +0 -116
  507. package/dist/multistream/multistreamMedia.js.map +0 -1
  508. package/src/index.js +0 -15
  509. package/src/media/internal-media-core-wrapper.ts +0 -9
  510. package/src/meeting/effectsState.ts +0 -211
  511. package/src/multistream/multistreamMedia.ts +0 -92
  512. package/test/unit/spec/meeting/effectsState.js +0 -291
@@ -2,11 +2,7 @@
2
2
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
3
  */
4
4
 
5
- import {
6
- _MEETING_LINK_,
7
- _SIP_URI_,
8
- _PERSONAL_ROOM_
9
- } from '../constants';
5
+ import {_MEETING_LINK_, _SIP_URI_, _PERSONAL_ROOM_} from '../constants';
10
6
  import LoggerProxy from '../common/logs/logger-proxy';
11
7
 
12
8
  import MeetingInfoCollection from './collection';
@@ -34,7 +30,7 @@ export default class MeetingInfo {
34
30
  * @type {Object}
35
31
  * @private
36
32
  * @memberof MeetingInfo
37
- */
33
+ */
38
34
  this.meetingInfoRequest = new MeetingInfoRequest(this.webex);
39
35
  /**
40
36
  * The meeting information collection interface
@@ -42,7 +38,7 @@ export default class MeetingInfo {
42
38
  * @type {Object}
43
39
  * @private
44
40
  * @memberof MeetingInfo
45
- */
41
+ */
46
42
  this.meetingInfoCollection = new MeetingInfoCollection();
47
43
  }
48
44
 
@@ -75,17 +71,22 @@ export default class MeetingInfo {
75
71
  * @memberof MeetingInfo
76
72
  */
77
73
  private requestFetchInfo(options: object) {
78
- return this.meetingInfoRequest.fetchMeetingInfo(options).then((info) => {
79
- if (info && info.body) {
80
- this.setMeetingInfo(info.body.sipMeetingUri || info.body.meetingLink, info.body);
81
- }
74
+ return this.meetingInfoRequest
75
+ .fetchMeetingInfo(options)
76
+ .then((info) => {
77
+ if (info && info.body) {
78
+ this.setMeetingInfo(info.body.sipMeetingUri || info.body.meetingLink, info.body);
79
+ }
82
80
 
83
- return info;
84
- }).catch((error) => {
85
- LoggerProxy.logger.error(`Meeting-info:index#requestFetchInfo --> ${error} fetch meetingInfo`);
81
+ return info;
82
+ })
83
+ .catch((error) => {
84
+ LoggerProxy.logger.error(
85
+ `Meeting-info:index#requestFetchInfo --> ${error} fetch meetingInfo`
86
+ );
86
87
 
87
- return Promise.reject(error);
88
- });
88
+ return Promise.reject(error);
89
+ });
89
90
  }
90
91
 
91
92
  /**
@@ -100,7 +101,7 @@ export default class MeetingInfo {
100
101
  return MeetingInfoUtil.generateOptions({
101
102
  destination,
102
103
  type,
103
- webex: this.webex
104
+ webex: this.webex,
104
105
  });
105
106
  }
106
107
 
@@ -117,19 +118,20 @@ export default class MeetingInfo {
117
118
  destination = this.webex.internal.device.userId;
118
119
  }
119
120
 
120
- return this.fetchInfoOptions(
121
- MeetingInfoUtil.extractDestination(destination, type),
122
- type
123
- ).then((options) =>
124
- // fetch meeting info
125
- this.requestFetchInfo(options).catch((error) => {
126
- // if it failed the first time as meeting link
127
- if (options.type === _MEETING_LINK_) {
128
- // convert the meeting link to sip URI and retry
129
- return this.requestFetchInfo(this.fetchInfoOptions(MeetingInfoUtil.convertLinkToSip(destination), _SIP_URI_));
130
- }
121
+ return this.fetchInfoOptions(MeetingInfoUtil.extractDestination(destination, type), type).then(
122
+ (options) =>
123
+ // fetch meeting info
124
+ this.requestFetchInfo(options).catch((error) => {
125
+ // if it failed the first time as meeting link
126
+ if (options.type === _MEETING_LINK_) {
127
+ // convert the meeting link to sip URI and retry
128
+ return this.requestFetchInfo(
129
+ this.fetchInfoOptions(MeetingInfoUtil.convertLinkToSip(destination), _SIP_URI_)
130
+ );
131
+ }
131
132
 
132
- return Promise.reject(error);
133
- }));
133
+ return Promise.reject(error);
134
+ })
135
+ );
134
136
  }
135
137
  }
@@ -1,13 +1,23 @@
1
- import { HTTP_VERBS, _CONVERSATION_URL_, WBXAPPAPI_SERVICE } from '../constants';
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';
2
8
  import Metrics from '../metrics';
3
9
  import BEHAVIORAL_METRICS from '../metrics/constants';
4
10
 
5
11
  import MeetingInfoUtil from './utilv2';
6
12
 
7
- const PASSWORD_ERROR_DEFAULT_MESSAGE = 'Password required. Call fetchMeetingInfo() with password argument';
8
- const CAPTCHA_ERROR_DEFAULT_MESSAGE = 'Captcha required. Call fetchMeetingInfo() with captchaInfo argument';
9
- const ADHOC_MEETING_DEFAULT_ERROR = 'Failed starting the adhoc meeting, Please contact support team ';
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 ';
10
19
  const CAPTCHA_ERROR_REQUIRES_PASSWORD_CODES = [423005, 423006];
20
+ const POLICY_ERROR_CODES = [403049, 403104, 403103, 403048, 403102, 403101];
11
21
 
12
22
  /**
13
23
  * Error to indicate that wbxappapi requires a password
@@ -16,19 +26,24 @@ export class MeetingInfoV2PasswordError extends Error {
16
26
  meetingInfo: any;
17
27
  sdkMessage: any;
18
28
  wbxAppApiCode: any;
29
+ body: any;
19
30
 
20
31
  /**
21
- *
22
- * @constructor
23
- * @param {Number} [wbxAppApiErrorCode]
24
- * @param {Object} [meetingInfo]
25
- * @param {String} [message]
26
- */
27
- constructor(wbxAppApiErrorCode?: number, meetingInfo?: object, message: string = PASSWORD_ERROR_DEFAULT_MESSAGE) {
32
+ *
33
+ * @constructor
34
+ * @param {Number} [wbxAppApiErrorCode]
35
+ * @param {Object} [meetingInfo]
36
+ * @param {String} [message]
37
+ */
38
+ constructor(
39
+ wbxAppApiErrorCode?: number,
40
+ meetingInfo?: object,
41
+ message: string = PASSWORD_ERROR_DEFAULT_MESSAGE
42
+ ) {
28
43
  super(`${message}, code=${wbxAppApiErrorCode}`);
29
44
  this.name = 'MeetingInfoV2PasswordError';
30
45
  this.sdkMessage = message;
31
- this.stack = (new Error()).stack;
46
+ this.stack = new Error().stack;
32
47
  this.wbxAppApiCode = wbxAppApiErrorCode;
33
48
  this.meetingInfo = meetingInfo;
34
49
  }
@@ -41,40 +56,69 @@ export class MeetingInfoV2AdhocMeetingError extends Error {
41
56
  sdkMessage: any;
42
57
  wbxAppApiCode: any;
43
58
  /**
44
- *
45
- * @constructor
46
- * @param {Number} [wbxAppApiErrorCode]
47
- * @param {String} [message]
48
- */
59
+ *
60
+ * @constructor
61
+ * @param {Number} [wbxAppApiErrorCode]
62
+ * @param {String} [message]
63
+ */
49
64
  constructor(wbxAppApiErrorCode?: number, message: string = ADHOC_MEETING_DEFAULT_ERROR) {
50
65
  super(`${message}, code=${wbxAppApiErrorCode}`);
51
66
  this.name = 'MeetingInfoV2AdhocMeetingError';
52
67
  this.sdkMessage = message;
53
- this.stack = (new Error()).stack;
68
+ this.stack = new Error().stack;
54
69
  this.wbxAppApiCode = wbxAppApiErrorCode;
55
70
  }
56
71
  }
57
72
 
58
73
  /**
59
- * Error to indicate that preferred webex site not present to start adhoc meeting
74
+ * Error preventing join because of a meeting policy
75
+ */
76
+ export class MeetingInfoV2PolicyError extends Error {
77
+ meetingInfo: object;
78
+ sdkMessage: string;
79
+ wbxAppApiCode: number;
80
+ /**
81
+ *
82
+ * @constructor
83
+ * @param {Number} [wbxAppApiErrorCode]
84
+ * @param {Object} [meetingInfo]
85
+ * @param {String} [message]
60
86
  */
87
+ constructor(wbxAppApiErrorCode?: number, meetingInfo?: object, message?: string) {
88
+ super(`${message}, code=${wbxAppApiErrorCode}`);
89
+ this.name = 'MeetingInfoV2AdhocMeetingError';
90
+ this.sdkMessage = message;
91
+ this.stack = new Error().stack;
92
+ this.wbxAppApiCode = wbxAppApiErrorCode;
93
+ this.meetingInfo = meetingInfo;
94
+ }
95
+ }
96
+
97
+ /**
98
+ * Error to indicate that preferred webex site not present to start adhoc meeting
99
+ */
61
100
  export class MeetingInfoV2CaptchaError extends Error {
62
101
  captchaInfo: any;
63
102
  isPasswordRequired: any;
64
103
  sdkMessage: any;
65
104
  wbxAppApiCode: any;
105
+ body: any;
66
106
  /**
67
- *
68
- * @constructor
69
- * @param {Number} [wbxAppApiErrorCode]
70
- * @param {Object} [captchaInfo]
71
- * @param {String} [message]
72
- */
73
- constructor(wbxAppApiErrorCode?: number, captchaInfo?: object, message: string = CAPTCHA_ERROR_DEFAULT_MESSAGE) {
107
+ *
108
+ * @constructor
109
+ * @param {Number} [wbxAppApiErrorCode]
110
+ * @param {Object} [captchaInfo]
111
+ * @param {String} [message]
112
+ */
113
+ constructor(
114
+ wbxAppApiErrorCode?: number,
115
+ captchaInfo?: object,
116
+ message: string = CAPTCHA_ERROR_DEFAULT_MESSAGE
117
+ ) {
74
118
  super(`${message}, code=${wbxAppApiErrorCode}`);
75
119
  this.name = 'MeetingInfoV2PasswordError';
76
120
  this.sdkMessage = message;
77
- this.stack = (new Error()).stack;
121
+ this.stack = new Error().stack;
78
122
  this.wbxAppApiCode = wbxAppApiErrorCode;
79
123
  this.isPasswordRequired = CAPTCHA_ERROR_REQUIRES_PASSWORD_CODES.includes(wbxAppApiErrorCode);
80
124
  this.captchaInfo = captchaInfo;
@@ -82,42 +126,42 @@ export class MeetingInfoV2CaptchaError extends Error {
82
126
  }
83
127
 
84
128
  /**
85
- * @class MeetingInfo
86
- */
129
+ * @class MeetingInfo
130
+ */
87
131
  export default class MeetingInfoV2 {
88
132
  webex: any;
89
133
 
90
134
  /**
91
- *
92
- * @param {WebexSDK} webex
93
- */
135
+ *
136
+ * @param {WebexSDK} webex
137
+ */
94
138
  constructor(webex) {
95
139
  this.webex = webex;
96
140
  }
97
141
 
98
142
  /**
99
- * converts hydra id into conversation url and persons Id
100
- * @param {String} destination one of many different types of destinations to look up info for
101
- * @param {String} [type] to match up with the destination value
102
- * @returns {Promise} destination and type
103
- * @public
104
- * @memberof MeetingInfo
105
- */
143
+ * converts hydra id into conversation url and persons Id
144
+ * @param {String} destination one of many different types of destinations to look up info for
145
+ * @param {String} [type] to match up with the destination value
146
+ * @returns {Promise} destination and type
147
+ * @public
148
+ * @memberof MeetingInfo
149
+ */
106
150
  fetchInfoOptions(destination: string, type: string = null) {
107
151
  return MeetingInfoUtil.getDestinationType({
108
152
  destination,
109
153
  type,
110
- webex: this.webex
154
+ webex: this.webex,
111
155
  });
112
156
  }
113
157
 
114
158
  /**
115
- * Creates adhoc space meetings for a space by fetching the conversation infomation
116
- * @param {String} conversationUrl conversationUrl to start adhoc meeting on
117
- * @returns {Promise} returns a meeting info object
118
- * @public
119
- * @memberof MeetingInfo
120
- */
159
+ * Creates adhoc space meetings for a space by fetching the conversation infomation
160
+ * @param {String} conversationUrl conversationUrl to start adhoc meeting on
161
+ * @returns {Promise} returns a meeting info object
162
+ * @public
163
+ * @memberof MeetingInfo
164
+ */
121
165
  async createAdhocSpaceMeeting(conversationUrl: string) {
122
166
  if (!this.webex.meetings.preferredWebexSite) {
123
167
  throw Error('No preferred webex site found');
@@ -129,7 +173,7 @@ export default class MeetingInfoV2 {
129
173
  particpants.forEach((participant) => {
130
174
  invitees.push({
131
175
  email: participant.emailAddress,
132
- ciUserUuid: participant.entryUUID
176
+ ciUserUuid: participant.entryUUID,
133
177
  });
134
178
  });
135
179
  }
@@ -137,56 +181,53 @@ export default class MeetingInfoV2 {
137
181
  return invitees;
138
182
  };
139
183
 
140
- return this.webex.internal.conversation.get(
141
- {url: conversationUrl},
142
- {includeParticipants: true, disableTransform: true}
143
- )
184
+ return this.webex.internal.conversation
185
+ .get({url: conversationUrl}, {includeParticipants: true, disableTransform: true})
144
186
  .then((conversation) => {
145
187
  const body = {
146
188
  title: conversation.displayName,
147
189
  spaceUrl: conversation.url,
148
190
  keyUrl: conversation.encryptionKeyUrl,
149
191
  kroUrl: conversation.kmsResourceObjectUrl,
150
- invitees: getInvitees(conversation.participants?.items)
192
+ invitees: getInvitees(conversation.participants?.items),
151
193
  };
152
194
 
153
- const uri = this.webex.meetings.preferredWebexSite ?
154
- `https://${this.webex.meetings.preferredWebexSite}/wbxappapi/v2/meetings/spaceInstant` : '';
195
+ const uri = this.webex.meetings.preferredWebexSite
196
+ ? `https://${this.webex.meetings.preferredWebexSite}/wbxappapi/v2/meetings/spaceInstant`
197
+ : '';
155
198
 
156
- Metrics.sendBehavioralMetric(
157
- BEHAVIORAL_METRICS.ADHOC_MEETING_SUCCESS
158
- );
199
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADHOC_MEETING_SUCCESS);
159
200
 
160
201
  return this.webex.request({
161
202
  method: HTTP_VERBS.POST,
162
203
  uri,
163
- body
204
+ body,
164
205
  });
165
206
  })
166
207
  .catch((err) => {
167
- Metrics.sendBehavioralMetric(
168
- BEHAVIORAL_METRICS.ADHOC_MEETING_FAILURE,
169
- {
170
- reason: err.message,
171
- stack: err.stack
172
- }
173
- );
208
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADHOC_MEETING_FAILURE, {
209
+ reason: err.message,
210
+ stack: err.stack,
211
+ });
174
212
  throw new MeetingInfoV2AdhocMeetingError(err.body?.code, err.body?.message);
175
213
  });
176
214
  }
177
215
 
178
216
  /**
179
- * Fetches meeting info from the server
180
- * @param {String} destination one of many different types of destinations to look up info for
181
- * @param {String} [type] to match up with the destination value
182
- * @param {String} password
183
- * @param {Object} captchaInfo
184
- * @param {String} captchaInfo.code
185
- * @param {String} captchaInfo.id
186
- * @returns {Promise} returns a meeting info object
187
- * @public
188
- * @memberof MeetingInfo
189
- */
217
+ * Fetches meeting info from the server
218
+ * @param {String} destination one of many different types of destinations to look up info for
219
+ * @param {String} [type] to match up with the destination value
220
+ * @param {String} password
221
+ * @param {Object} captchaInfo
222
+ * @param {String} captchaInfo.code
223
+ * @param {String} captchaInfo.id
224
+ * @param {String} installedOrgID
225
+ * @param {String} locusId
226
+ * @param {Object} extraParams
227
+ * @returns {Promise} returns a meeting info object
228
+ * @public
229
+ * @memberof MeetingInfo
230
+ */
190
231
  async fetchMeetingInfo(
191
232
  destination: string,
192
233
  type: string = null,
@@ -194,79 +235,110 @@ export default class MeetingInfoV2 {
194
235
  captchaInfo: {
195
236
  code: string;
196
237
  id: string;
197
- } = null
238
+ } = null,
239
+ installedOrgID = null,
240
+ locusId = null,
241
+ extraParams = {}
198
242
  ) {
199
243
  const destinationType = await MeetingInfoUtil.getDestinationType({
200
244
  destination,
201
245
  type,
202
- webex: this.webex
246
+ webex: this.webex,
203
247
  });
204
248
 
205
- if (destinationType.type === _CONVERSATION_URL_ && this.webex.config.meetings.experimental.enableAdhocMeetings && this.webex.meetings.preferredWebexSite) {
249
+ if (
250
+ destinationType.type === _CONVERSATION_URL_ &&
251
+ this.webex.config.meetings.experimental.enableAdhocMeetings &&
252
+ this.webex.meetings.preferredWebexSite
253
+ ) {
206
254
  return this.createAdhocSpaceMeeting(destinationType.destination);
207
255
  }
208
256
 
209
- const body = await MeetingInfoUtil.getRequestBody({...destinationType, password, captchaInfo});
257
+ const body = await MeetingInfoUtil.getRequestBody({
258
+ ...destinationType,
259
+ password,
260
+ captchaInfo,
261
+ installedOrgID,
262
+ locusId,
263
+ extraParams,
264
+ });
265
+
266
+ // If the body only contains the default properties, we don't have enough to
267
+ // fetch the meeting info so don't bother trying.
268
+ if (
269
+ !lodash.difference(Object.keys(body), Object.keys(DEFAULT_MEETING_INFO_REQUEST_BODY)).length
270
+ ) {
271
+ const err = new Error('Not enough information to fetch meeting info');
272
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_FAILURE, {
273
+ reason: err.message,
274
+ destinationType: destinationType?.type,
275
+ webExMeetingId: destinationType?.info?.webExMeetingId,
276
+ sipUri: destinationType?.info?.sipUri,
277
+ });
278
+
279
+ throw err;
280
+ }
210
281
 
211
282
  const options: any = {
212
283
  method: HTTP_VERBS.POST,
213
- body
284
+ body,
214
285
  };
215
286
 
216
287
  const directURI = await MeetingInfoUtil.getDirectMeetingInfoURI(destinationType);
217
288
 
218
289
  if (directURI) {
219
290
  options.uri = directURI;
220
- }
221
- else {
291
+ } else {
222
292
  options.service = WBXAPPAPI_SERVICE;
223
293
  options.resource = 'meetingInfo';
224
294
  }
225
295
 
226
- return this.webex.request(options)
296
+ return this.webex
297
+ .request(options)
227
298
  .then((response) => {
228
- Metrics.sendBehavioralMetric(
229
- BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_SUCCESS
230
- );
299
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_SUCCESS);
231
300
 
232
301
  return response;
233
302
  })
234
303
  .catch((err) => {
235
304
  if (err?.statusCode === 403) {
236
- Metrics.sendBehavioralMetric(
237
- BEHAVIORAL_METRICS.VERIFY_PASSWORD_ERROR,
238
- {
239
- reason: err.message,
240
- stack: err.stack
241
- }
242
- );
305
+ if (POLICY_ERROR_CODES.includes(err.body?.code)) {
306
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_INFO_POLICY_ERROR, {
307
+ code: err.body?.code,
308
+ });
309
+
310
+ throw new MeetingInfoV2PolicyError(
311
+ err.body?.code,
312
+ err.body?.data?.meetingInfo,
313
+ err.body?.message
314
+ );
315
+ }
316
+
317
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.VERIFY_PASSWORD_ERROR, {
318
+ reason: err.message,
319
+ stack: err.stack,
320
+ });
243
321
 
244
322
  throw new MeetingInfoV2PasswordError(err.body?.code, err.body?.data?.meetingInfo);
245
323
  }
246
324
  if (err?.statusCode === 423) {
247
- Metrics.sendBehavioralMetric(
248
- BEHAVIORAL_METRICS.VERIFY_CAPTCHA_ERROR,
249
- {
250
- reason: err.message,
251
- stack: err.stack
252
- }
253
- );
325
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.VERIFY_CAPTCHA_ERROR, {
326
+ reason: err.message,
327
+ stack: err.stack,
328
+ });
254
329
 
255
330
  throw new MeetingInfoV2CaptchaError(err.body?.code, {
256
331
  captchaId: err.body.captchaID,
257
332
  verificationImageURL: err.body.verificationImageURL,
258
333
  verificationAudioURL: err.body.verificationAudioURL,
259
- refreshURL: err.body.refreshURL
334
+ refreshURL: err.body.refreshURL,
260
335
  });
261
336
  }
262
337
 
263
- Metrics.sendBehavioralMetric(
264
- BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_FAILURE,
265
- {
266
- reason: err.message,
267
- stack: err.stack
268
- }
269
- );
338
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_FAILURE, {
339
+ reason: err.message,
340
+ stack: err.stack,
341
+ });
270
342
  throw err;
271
343
  });
272
344
  }
@@ -3,7 +3,6 @@ import ParameterError from '../common/errors/parameter';
3
3
 
4
4
  import MeetingInfoUtil from './util';
5
5
 
6
-
7
6
  /**
8
7
  * @class MeetingInfoRequest
9
8
  */
@@ -30,10 +29,17 @@ export default class MeetingInfoRequest {
30
29
  */
31
30
  fetchMeetingInfo(options: any) {
32
31
  if (!options || !options.type || !options.destination) {
33
- 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
+ );
34
35
  }
35
36
  const resourceUrl = MeetingInfoUtil.getResourceUrl(options.type, options.destination);
36
- 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
+ );
37
43
 
38
44
  return this.webex.request(requestParams);
39
45
  }