@webex/plugin-meetings 3.0.0-beta.11 → 3.0.0-beta.111

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 +944 -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 +193 -53
  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 +27 -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 +286 -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 +94 -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 +383 -212
  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 +67 -14
  112. package/dist/meeting/in-meeting-actions.js.map +1 -1
  113. package/dist/meeting/index.js +2477 -2417
  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 +296 -289
  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 +278 -281
  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 +89 -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 +101 -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 +50 -16
  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 +93 -162
  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 +2 -4
  194. package/dist/reactions/reactions.js.map +1 -1
  195. package/dist/reactions/reactions.type.js +19 -23
  196. package/dist/reactions/reactions.type.js.map +1 -1
  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 +984 -0
  254. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  255. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  256. package/dist/types/controls-options-manager/index.d.ts +136 -0
  257. package/dist/types/controls-options-manager/types.d.ts +43 -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 +137 -0
  274. package/dist/types/meeting/index.d.ts +1753 -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 +115 -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 +157 -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 +195 -0
  299. package/dist/types/metrics/constants.d.ts +54 -0
  300. package/dist/types/metrics/index.d.ts +169 -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 +220 -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 +835 -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 +141 -6
  361. package/src/controls-options-manager/constants.ts +5 -0
  362. package/src/controls-options-manager/enums.ts +18 -0
  363. package/src/controls-options-manager/index.ts +278 -0
  364. package/src/controls-options-manager/types.ts +59 -0
  365. package/src/controls-options-manager/util.ts +274 -0
  366. package/src/index.ts +33 -0
  367. package/src/locus-info/controlsUtils.ts +145 -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 +326 -55
  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 +139 -3
  380. package/src/meeting/index.ts +2674 -1543
  381. package/src/meeting/muteState.ts +271 -68
  382. package/src/meeting/request.ts +231 -135
  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 +201 -113
  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 +95 -49
  397. package/src/member/types.ts +24 -0
  398. package/src/member/util.ts +106 -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 +302 -90
  405. package/src/metrics/constants.ts +1 -6
  406. package/src/metrics/index.ts +124 -95
  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 +8 -8
  421. package/src/reactions/reactions.type.ts +31 -5
  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 +670 -466
  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 +1542 -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 +504 -0
  448. package/test/unit/spec/fixture/locus.js +93 -90
  449. package/test/unit/spec/locus-info/controlsUtils.js +289 -32
  450. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  451. package/test/unit/spec/locus-info/index.js +585 -5
  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 +66 -3
  461. package/test/unit/spec/meeting/index.js +2934 -946
  462. package/test/unit/spec/meeting/muteState.js +368 -70
  463. package/test/unit/spec/meeting/request.js +194 -44
  464. package/test/unit/spec/meeting/utils.js +146 -165
  465. package/test/unit/spec/meeting-info/meetinginfov2.js +333 -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 +383 -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 +104 -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,24 @@
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';
9
+ import {eventType} from '../metrics/config';
3
10
  import BEHAVIORAL_METRICS from '../metrics/constants';
4
11
 
5
12
  import MeetingInfoUtil from './utilv2';
6
13
 
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 ';
14
+ const PASSWORD_ERROR_DEFAULT_MESSAGE =
15
+ 'Password required. Call fetchMeetingInfo() with password argument';
16
+ const CAPTCHA_ERROR_DEFAULT_MESSAGE =
17
+ 'Captcha required. Call fetchMeetingInfo() with captchaInfo argument';
18
+ const ADHOC_MEETING_DEFAULT_ERROR =
19
+ 'Failed starting the adhoc meeting, Please contact support team ';
10
20
  const CAPTCHA_ERROR_REQUIRES_PASSWORD_CODES = [423005, 423006];
21
+ const POLICY_ERROR_CODES = [403049, 403104, 403103, 403048, 403102, 403101];
11
22
 
12
23
  /**
13
24
  * Error to indicate that wbxappapi requires a password
@@ -16,19 +27,24 @@ export class MeetingInfoV2PasswordError extends Error {
16
27
  meetingInfo: any;
17
28
  sdkMessage: any;
18
29
  wbxAppApiCode: any;
30
+ body: any;
19
31
 
20
32
  /**
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) {
33
+ *
34
+ * @constructor
35
+ * @param {Number} [wbxAppApiErrorCode]
36
+ * @param {Object} [meetingInfo]
37
+ * @param {String} [message]
38
+ */
39
+ constructor(
40
+ wbxAppApiErrorCode?: number,
41
+ meetingInfo?: object,
42
+ message: string = PASSWORD_ERROR_DEFAULT_MESSAGE
43
+ ) {
28
44
  super(`${message}, code=${wbxAppApiErrorCode}`);
29
45
  this.name = 'MeetingInfoV2PasswordError';
30
46
  this.sdkMessage = message;
31
- this.stack = (new Error()).stack;
47
+ this.stack = new Error().stack;
32
48
  this.wbxAppApiCode = wbxAppApiErrorCode;
33
49
  this.meetingInfo = meetingInfo;
34
50
  }
@@ -41,40 +57,69 @@ export class MeetingInfoV2AdhocMeetingError extends Error {
41
57
  sdkMessage: any;
42
58
  wbxAppApiCode: any;
43
59
  /**
44
- *
45
- * @constructor
46
- * @param {Number} [wbxAppApiErrorCode]
47
- * @param {String} [message]
48
- */
60
+ *
61
+ * @constructor
62
+ * @param {Number} [wbxAppApiErrorCode]
63
+ * @param {String} [message]
64
+ */
49
65
  constructor(wbxAppApiErrorCode?: number, message: string = ADHOC_MEETING_DEFAULT_ERROR) {
50
66
  super(`${message}, code=${wbxAppApiErrorCode}`);
51
67
  this.name = 'MeetingInfoV2AdhocMeetingError';
52
68
  this.sdkMessage = message;
53
- this.stack = (new Error()).stack;
69
+ this.stack = new Error().stack;
54
70
  this.wbxAppApiCode = wbxAppApiErrorCode;
55
71
  }
56
72
  }
57
73
 
58
74
  /**
59
- * Error to indicate that preferred webex site not present to start adhoc meeting
75
+ * Error preventing join because of a meeting policy
76
+ */
77
+ export class MeetingInfoV2PolicyError extends Error {
78
+ meetingInfo: object;
79
+ sdkMessage: string;
80
+ wbxAppApiCode: number;
81
+ /**
82
+ *
83
+ * @constructor
84
+ * @param {Number} [wbxAppApiErrorCode]
85
+ * @param {Object} [meetingInfo]
86
+ * @param {String} [message]
60
87
  */
88
+ constructor(wbxAppApiErrorCode?: number, meetingInfo?: object, message?: string) {
89
+ super(`${message}, code=${wbxAppApiErrorCode}`);
90
+ this.name = 'MeetingInfoV2AdhocMeetingError';
91
+ this.sdkMessage = message;
92
+ this.stack = new Error().stack;
93
+ this.wbxAppApiCode = wbxAppApiErrorCode;
94
+ this.meetingInfo = meetingInfo;
95
+ }
96
+ }
97
+
98
+ /**
99
+ * Error to indicate that preferred webex site not present to start adhoc meeting
100
+ */
61
101
  export class MeetingInfoV2CaptchaError extends Error {
62
102
  captchaInfo: any;
63
103
  isPasswordRequired: any;
64
104
  sdkMessage: any;
65
105
  wbxAppApiCode: any;
106
+ body: any;
66
107
  /**
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) {
108
+ *
109
+ * @constructor
110
+ * @param {Number} [wbxAppApiErrorCode]
111
+ * @param {Object} [captchaInfo]
112
+ * @param {String} [message]
113
+ */
114
+ constructor(
115
+ wbxAppApiErrorCode?: number,
116
+ captchaInfo?: object,
117
+ message: string = CAPTCHA_ERROR_DEFAULT_MESSAGE
118
+ ) {
74
119
  super(`${message}, code=${wbxAppApiErrorCode}`);
75
120
  this.name = 'MeetingInfoV2PasswordError';
76
121
  this.sdkMessage = message;
77
- this.stack = (new Error()).stack;
122
+ this.stack = new Error().stack;
78
123
  this.wbxAppApiCode = wbxAppApiErrorCode;
79
124
  this.isPasswordRequired = CAPTCHA_ERROR_REQUIRES_PASSWORD_CODES.includes(wbxAppApiErrorCode);
80
125
  this.captchaInfo = captchaInfo;
@@ -82,42 +127,42 @@ export class MeetingInfoV2CaptchaError extends Error {
82
127
  }
83
128
 
84
129
  /**
85
- * @class MeetingInfo
86
- */
130
+ * @class MeetingInfo
131
+ */
87
132
  export default class MeetingInfoV2 {
88
133
  webex: any;
89
134
 
90
135
  /**
91
- *
92
- * @param {WebexSDK} webex
93
- */
136
+ *
137
+ * @param {WebexSDK} webex
138
+ */
94
139
  constructor(webex) {
95
140
  this.webex = webex;
96
141
  }
97
142
 
98
143
  /**
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
- */
144
+ * converts hydra id into conversation url and persons Id
145
+ * @param {String} destination one of many different types of destinations to look up info for
146
+ * @param {String} [type] to match up with the destination value
147
+ * @returns {Promise} destination and type
148
+ * @public
149
+ * @memberof MeetingInfo
150
+ */
106
151
  fetchInfoOptions(destination: string, type: string = null) {
107
152
  return MeetingInfoUtil.getDestinationType({
108
153
  destination,
109
154
  type,
110
- webex: this.webex
155
+ webex: this.webex,
111
156
  });
112
157
  }
113
158
 
114
159
  /**
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
- */
160
+ * Creates adhoc space meetings for a space by fetching the conversation infomation
161
+ * @param {String} conversationUrl conversationUrl to start adhoc meeting on
162
+ * @returns {Promise} returns a meeting info object
163
+ * @public
164
+ * @memberof MeetingInfo
165
+ */
121
166
  async createAdhocSpaceMeeting(conversationUrl: string) {
122
167
  if (!this.webex.meetings.preferredWebexSite) {
123
168
  throw Error('No preferred webex site found');
@@ -129,7 +174,7 @@ export default class MeetingInfoV2 {
129
174
  particpants.forEach((participant) => {
130
175
  invitees.push({
131
176
  email: participant.emailAddress,
132
- ciUserUuid: participant.entryUUID
177
+ ciUserUuid: participant.entryUUID,
133
178
  });
134
179
  });
135
180
  }
@@ -137,56 +182,54 @@ export default class MeetingInfoV2 {
137
182
  return invitees;
138
183
  };
139
184
 
140
- return this.webex.internal.conversation.get(
141
- {url: conversationUrl},
142
- {includeParticipants: true, disableTransform: true}
143
- )
185
+ return this.webex.internal.conversation
186
+ .get({url: conversationUrl}, {includeParticipants: true, disableTransform: true})
144
187
  .then((conversation) => {
145
188
  const body = {
146
189
  title: conversation.displayName,
147
190
  spaceUrl: conversation.url,
148
191
  keyUrl: conversation.encryptionKeyUrl,
149
192
  kroUrl: conversation.kmsResourceObjectUrl,
150
- invitees: getInvitees(conversation.participants?.items)
193
+ invitees: getInvitees(conversation.participants?.items),
151
194
  };
152
195
 
153
- const uri = this.webex.meetings.preferredWebexSite ?
154
- `https://${this.webex.meetings.preferredWebexSite}/wbxappapi/v2/meetings/spaceInstant` : '';
196
+ const uri = this.webex.meetings.preferredWebexSite
197
+ ? `https://${this.webex.meetings.preferredWebexSite}/wbxappapi/v2/meetings/spaceInstant`
198
+ : '';
155
199
 
156
- Metrics.sendBehavioralMetric(
157
- BEHAVIORAL_METRICS.ADHOC_MEETING_SUCCESS
158
- );
200
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADHOC_MEETING_SUCCESS);
159
201
 
160
202
  return this.webex.request({
161
203
  method: HTTP_VERBS.POST,
162
204
  uri,
163
- body
205
+ body,
164
206
  });
165
207
  })
166
208
  .catch((err) => {
167
- Metrics.sendBehavioralMetric(
168
- BEHAVIORAL_METRICS.ADHOC_MEETING_FAILURE,
169
- {
170
- reason: err.message,
171
- stack: err.stack
172
- }
173
- );
209
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADHOC_MEETING_FAILURE, {
210
+ reason: err.message,
211
+ stack: err.stack,
212
+ });
174
213
  throw new MeetingInfoV2AdhocMeetingError(err.body?.code, err.body?.message);
175
214
  });
176
215
  }
177
216
 
178
217
  /**
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
- */
218
+ * Fetches meeting info from the server
219
+ * @param {String} destination one of many different types of destinations to look up info for
220
+ * @param {String} [type] to match up with the destination value
221
+ * @param {String} password
222
+ * @param {Object} captchaInfo
223
+ * @param {String} captchaInfo.code
224
+ * @param {String} captchaInfo.id
225
+ * @param {String} installedOrgID
226
+ * @param {String} locusId
227
+ * @param {Object} extraParams
228
+ * @param {Object} options
229
+ * @returns {Promise} returns a meeting info object
230
+ * @public
231
+ * @memberof MeetingInfo
232
+ */
190
233
  async fetchMeetingInfo(
191
234
  destination: string,
192
235
  type: string = null,
@@ -194,79 +237,124 @@ export default class MeetingInfoV2 {
194
237
  captchaInfo: {
195
238
  code: string;
196
239
  id: string;
197
- } = null
240
+ } = null,
241
+ installedOrgID = null,
242
+ locusId = null,
243
+ extraParams: object = {},
244
+ options: {meetingId?: string} = {}
198
245
  ) {
246
+ const {meetingId} = options;
247
+
199
248
  const destinationType = await MeetingInfoUtil.getDestinationType({
200
249
  destination,
201
250
  type,
202
- webex: this.webex
251
+ webex: this.webex,
203
252
  });
204
253
 
205
- if (destinationType.type === _CONVERSATION_URL_ && this.webex.config.meetings.experimental.enableAdhocMeetings && this.webex.meetings.preferredWebexSite) {
254
+ if (
255
+ destinationType.type === _CONVERSATION_URL_ &&
256
+ this.webex.config.meetings.experimental.enableAdhocMeetings &&
257
+ this.webex.meetings.preferredWebexSite
258
+ ) {
206
259
  return this.createAdhocSpaceMeeting(destinationType.destination);
207
260
  }
208
261
 
209
- const body = await MeetingInfoUtil.getRequestBody({...destinationType, password, captchaInfo});
262
+ const body = await MeetingInfoUtil.getRequestBody({
263
+ ...destinationType,
264
+ password,
265
+ captchaInfo,
266
+ installedOrgID,
267
+ locusId,
268
+ extraParams,
269
+ });
270
+
271
+ // If the body only contains the default properties, we don't have enough to
272
+ // fetch the meeting info so don't bother trying.
273
+ if (
274
+ !lodash.difference(Object.keys(body), Object.keys(DEFAULT_MEETING_INFO_REQUEST_BODY)).length
275
+ ) {
276
+ const err = new Error('Not enough information to fetch meeting info');
277
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_FAILURE, {
278
+ reason: err.message,
279
+ destinationType: destinationType?.type,
280
+ webExMeetingId: destinationType?.info?.webExMeetingId,
281
+ sipUri: destinationType?.info?.sipUri,
282
+ });
283
+
284
+ throw err;
285
+ }
210
286
 
211
- const options: any = {
287
+ const requestOptions: any = {
212
288
  method: HTTP_VERBS.POST,
213
- body
289
+ body,
214
290
  };
215
291
 
216
292
  const directURI = await MeetingInfoUtil.getDirectMeetingInfoURI(destinationType);
217
293
 
218
294
  if (directURI) {
219
- options.uri = directURI;
220
- }
221
- else {
222
- options.service = WBXAPPAPI_SERVICE;
223
- options.resource = 'meetingInfo';
295
+ requestOptions.uri = directURI;
296
+ } else {
297
+ requestOptions.service = WBXAPPAPI_SERVICE;
298
+ requestOptions.resource = 'meetingInfo';
224
299
  }
225
300
 
226
- return this.webex.request(options)
301
+ return this.webex
302
+ .request(requestOptions)
227
303
  .then((response) => {
228
- Metrics.sendBehavioralMetric(
229
- BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_SUCCESS
230
- );
304
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_SUCCESS);
231
305
 
232
306
  return response;
233
307
  })
234
308
  .catch((err) => {
309
+ if (meetingId) {
310
+ Metrics.postEvent({
311
+ event: eventType.MEETING_INFO_RESPONSE,
312
+ meetingId,
313
+ data: {
314
+ errors: [Metrics.parseWebexApiError(err, true)],
315
+ meetingLookupUrl: err?.url,
316
+ },
317
+ });
318
+ }
319
+
235
320
  if (err?.statusCode === 403) {
236
- Metrics.sendBehavioralMetric(
237
- BEHAVIORAL_METRICS.VERIFY_PASSWORD_ERROR,
238
- {
239
- reason: err.message,
240
- stack: err.stack
241
- }
242
- );
321
+ if (POLICY_ERROR_CODES.includes(err.body?.code)) {
322
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_INFO_POLICY_ERROR, {
323
+ code: err.body?.code,
324
+ });
325
+
326
+ throw new MeetingInfoV2PolicyError(
327
+ err.body?.code,
328
+ err.body?.data?.meetingInfo,
329
+ err.body?.message
330
+ );
331
+ }
332
+
333
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.VERIFY_PASSWORD_ERROR, {
334
+ reason: err.message,
335
+ stack: err.stack,
336
+ });
243
337
 
244
338
  throw new MeetingInfoV2PasswordError(err.body?.code, err.body?.data?.meetingInfo);
245
339
  }
246
340
  if (err?.statusCode === 423) {
247
- Metrics.sendBehavioralMetric(
248
- BEHAVIORAL_METRICS.VERIFY_CAPTCHA_ERROR,
249
- {
250
- reason: err.message,
251
- stack: err.stack
252
- }
253
- );
341
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.VERIFY_CAPTCHA_ERROR, {
342
+ reason: err.message,
343
+ stack: err.stack,
344
+ });
254
345
 
255
346
  throw new MeetingInfoV2CaptchaError(err.body?.code, {
256
347
  captchaId: err.body.captchaID,
257
348
  verificationImageURL: err.body.verificationImageURL,
258
349
  verificationAudioURL: err.body.verificationAudioURL,
259
- refreshURL: err.body.refreshURL
350
+ refreshURL: err.body.refreshURL,
260
351
  });
261
352
  }
262
353
 
263
- Metrics.sendBehavioralMetric(
264
- BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_FAILURE,
265
- {
266
- reason: err.message,
267
- stack: err.stack
268
- }
269
- );
354
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_FAILURE, {
355
+ reason: err.message,
356
+ stack: err.stack,
357
+ });
270
358
  throw err;
271
359
  });
272
360
  }
@@ -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
  }