@webex/plugin-meetings 3.0.0-bnr.4 → 3.0.0-stream-classes.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/README.md +46 -8
  2. package/dist/annotation/annotation.types.js +7 -0
  3. package/dist/annotation/annotation.types.js.map +1 -0
  4. package/dist/annotation/constants.js +49 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +342 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +70 -32
  9. package/dist/breakouts/breakout.js.map +1 -1
  10. package/dist/breakouts/events.js +45 -0
  11. package/dist/breakouts/events.js.map +1 -0
  12. package/dist/breakouts/index.js +422 -217
  13. package/dist/breakouts/index.js.map +1 -1
  14. package/dist/breakouts/utils.js +12 -1
  15. package/dist/breakouts/utils.js.map +1 -1
  16. package/dist/common/errors/webex-errors.js +3 -2
  17. package/dist/common/errors/webex-errors.js.map +1 -1
  18. package/dist/common/logs/logger-proxy.js +1 -1
  19. package/dist/common/logs/logger-proxy.js.map +1 -1
  20. package/dist/common/logs/request.d.ts +1 -1
  21. package/dist/common/queue.js +24 -9
  22. package/dist/common/queue.js.map +1 -1
  23. package/dist/config.js +1 -7
  24. package/dist/config.js.map +1 -1
  25. package/dist/constants.js +118 -24
  26. package/dist/constants.js.map +1 -1
  27. package/dist/controls-options-manager/enums.js +2 -0
  28. package/dist/controls-options-manager/enums.js.map +1 -1
  29. package/dist/controls-options-manager/index.js +19 -14
  30. package/dist/controls-options-manager/index.js.map +1 -1
  31. package/dist/controls-options-manager/types.js.map +1 -1
  32. package/dist/controls-options-manager/util.js +80 -11
  33. package/dist/controls-options-manager/util.js.map +1 -1
  34. package/dist/index.js +62 -20
  35. package/dist/index.js.map +1 -1
  36. package/dist/interpretation/collection.js +23 -0
  37. package/dist/interpretation/collection.js.map +1 -0
  38. package/dist/interpretation/index.js +366 -0
  39. package/dist/interpretation/index.js.map +1 -0
  40. package/dist/interpretation/siLanguage.js +25 -0
  41. package/dist/interpretation/siLanguage.js.map +1 -0
  42. package/dist/locus-info/controlsUtils.js +71 -1
  43. package/dist/locus-info/controlsUtils.js.map +1 -1
  44. package/dist/locus-info/index.js +305 -57
  45. package/dist/locus-info/index.js.map +1 -1
  46. package/dist/locus-info/infoUtils.js +7 -1
  47. package/dist/locus-info/infoUtils.js.map +1 -1
  48. package/dist/locus-info/mediaSharesUtils.js +43 -1
  49. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  50. package/dist/locus-info/parser.js +219 -63
  51. package/dist/locus-info/parser.js.map +1 -1
  52. package/dist/locus-info/selfUtils.js +44 -22
  53. package/dist/locus-info/selfUtils.js.map +1 -1
  54. package/dist/media/index.js +57 -104
  55. package/dist/media/index.js.map +1 -1
  56. package/dist/media/properties.js +60 -121
  57. package/dist/media/properties.js.map +1 -1
  58. package/dist/meeting/in-meeting-actions.js +61 -3
  59. package/dist/meeting/in-meeting-actions.js.map +1 -1
  60. package/dist/meeting/index.js +2530 -2534
  61. package/dist/meeting/index.js.map +1 -1
  62. package/dist/meeting/locusMediaRequest.js +292 -0
  63. package/dist/meeting/locusMediaRequest.js.map +1 -0
  64. package/dist/meeting/muteState.js +125 -205
  65. package/dist/meeting/muteState.js.map +1 -1
  66. package/dist/meeting/request.js +150 -150
  67. package/dist/meeting/request.js.map +1 -1
  68. package/dist/meeting/util.js +568 -438
  69. package/dist/meeting/util.js.map +1 -1
  70. package/dist/meeting-info/index.js +48 -7
  71. package/dist/meeting-info/index.js.map +1 -1
  72. package/dist/meeting-info/meeting-info-v2.js +94 -38
  73. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  74. package/dist/meeting-info/utilv2.js +4 -2
  75. package/dist/meeting-info/utilv2.js.map +1 -1
  76. package/dist/meetings/index.d.ts +0 -2
  77. package/dist/meetings/index.js +260 -85
  78. package/dist/meetings/index.js.map +1 -1
  79. package/dist/meetings/meetings.types.js +7 -0
  80. package/dist/meetings/meetings.types.js.map +1 -0
  81. package/dist/meetings/util.js +42 -7
  82. package/dist/meetings/util.js.map +1 -1
  83. package/dist/member/index.d.ts +2 -0
  84. package/dist/member/index.js +26 -0
  85. package/dist/member/index.js.map +1 -1
  86. package/dist/member/member.types.d.ts +11 -0
  87. package/dist/member/member.types.js +18 -0
  88. package/dist/member/member.types.js.map +1 -0
  89. package/dist/member/types.js +11 -1
  90. package/dist/member/types.js.map +1 -1
  91. package/dist/member/util.js +60 -23
  92. package/dist/member/util.js.map +1 -1
  93. package/dist/members/index.js +4 -1
  94. package/dist/members/index.js.map +1 -1
  95. package/dist/members/request.js +75 -45
  96. package/dist/members/request.js.map +1 -1
  97. package/dist/members/util.js +308 -317
  98. package/dist/members/util.js.map +1 -1
  99. package/dist/metrics/config.js +1 -3
  100. package/dist/metrics/config.js.map +1 -1
  101. package/dist/metrics/constants.js +1 -0
  102. package/dist/metrics/constants.js.map +1 -1
  103. package/dist/metrics/index.d.ts +1 -1
  104. package/dist/metrics/index.js +1 -451
  105. package/dist/metrics/index.js.map +1 -1
  106. package/dist/multistream/mediaRequestManager.js +136 -40
  107. package/dist/multistream/mediaRequestManager.js.map +1 -1
  108. package/dist/multistream/receiveSlot.js.map +1 -1
  109. package/dist/multistream/receiveSlotManager.js +4 -4
  110. package/dist/multistream/receiveSlotManager.js.map +1 -1
  111. package/dist/multistream/remoteMedia.js.map +1 -1
  112. package/dist/multistream/remoteMediaGroup.js +60 -3
  113. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  114. package/dist/multistream/remoteMediaManager.js +36 -0
  115. package/dist/multistream/remoteMediaManager.js.map +1 -1
  116. package/dist/multistream/sendSlotManager.js +233 -0
  117. package/dist/multistream/sendSlotManager.js.map +1 -0
  118. package/dist/reachability/index.js +18 -3
  119. package/dist/reachability/index.js.map +1 -1
  120. package/dist/reachability/request.js +5 -3
  121. package/dist/reachability/request.js.map +1 -1
  122. package/dist/reconnection-manager/index.js +181 -153
  123. package/dist/reconnection-manager/index.js.map +1 -1
  124. package/dist/recording-controller/index.js +21 -2
  125. package/dist/recording-controller/index.js.map +1 -1
  126. package/dist/recording-controller/util.js +9 -8
  127. package/dist/recording-controller/util.js.map +1 -1
  128. package/dist/roap/index.js +25 -32
  129. package/dist/roap/index.js.map +1 -1
  130. package/dist/roap/request.js +42 -51
  131. package/dist/roap/request.js.map +1 -1
  132. package/dist/roap/turnDiscovery.js +97 -38
  133. package/dist/roap/turnDiscovery.js.map +1 -1
  134. package/dist/rtcMetrics/constants.js +12 -0
  135. package/dist/rtcMetrics/constants.js.map +1 -0
  136. package/dist/rtcMetrics/index.js +117 -0
  137. package/dist/rtcMetrics/index.js.map +1 -0
  138. package/dist/statsAnalyzer/index.js +0 -1
  139. package/dist/statsAnalyzer/index.js.map +1 -1
  140. package/dist/types/annotation/annotation.types.d.ts +43 -0
  141. package/dist/types/annotation/constants.d.ts +31 -0
  142. package/dist/types/annotation/index.d.ts +124 -0
  143. package/dist/types/breakouts/events.d.ts +2 -0
  144. package/dist/types/breakouts/utils.d.ts +7 -0
  145. package/dist/types/common/errors/webex-errors.d.ts +1 -1
  146. package/dist/types/config.d.ts +0 -6
  147. package/dist/types/constants.d.ts +51 -21
  148. package/dist/types/controls-options-manager/enums.d.ts +2 -0
  149. package/dist/types/controls-options-manager/index.d.ts +1 -1
  150. package/dist/types/controls-options-manager/types.d.ts +7 -1
  151. package/dist/types/index.d.ts +1 -1
  152. package/dist/types/interpretation/collection.d.ts +5 -0
  153. package/dist/types/interpretation/index.d.ts +5 -0
  154. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  155. package/dist/types/locus-info/index.d.ts +39 -1
  156. package/dist/types/media/index.d.ts +2 -0
  157. package/dist/types/media/properties.d.ts +16 -38
  158. package/dist/types/meeting/in-meeting-actions.d.ts +46 -2
  159. package/dist/types/meeting/index.d.ts +179 -379
  160. package/dist/types/meeting/locusMediaRequest.d.ts +70 -0
  161. package/dist/types/meeting/muteState.d.ts +39 -40
  162. package/dist/types/meeting/request.d.ts +25 -26
  163. package/dist/types/meeting/util.d.ts +74 -1
  164. package/dist/types/meeting-info/meeting-info-v2.d.ts +14 -3
  165. package/dist/types/meetings/index.d.ts +49 -1
  166. package/dist/types/meetings/meetings.types.d.ts +4 -0
  167. package/dist/types/member/index.d.ts +2 -0
  168. package/dist/types/members/request.d.ts +56 -11
  169. package/dist/types/members/util.d.ts +209 -1
  170. package/dist/types/metrics/config.d.ts +26 -2
  171. package/dist/types/metrics/constants.d.ts +1 -0
  172. package/dist/types/metrics/index.d.ts +17 -0
  173. package/dist/types/multistream/mediaRequestManager.d.ts +27 -10
  174. package/dist/types/multistream/receiveSlot.d.ts +3 -3
  175. package/dist/types/multistream/remoteMedia.d.ts +2 -2
  176. package/dist/types/multistream/remoteMediaManager.d.ts +14 -0
  177. package/dist/types/roap/request.d.ts +6 -8
  178. package/dist/types/roap/turnDiscovery.d.ts +18 -1
  179. package/package.json +3 -2
  180. package/src/annotation/annotation.types.ts +50 -0
  181. package/src/annotation/constants.ts +36 -0
  182. package/src/annotation/index.ts +328 -0
  183. package/src/breakouts/README.md +3 -2
  184. package/src/breakouts/breakout.ts +62 -27
  185. package/src/breakouts/events.ts +56 -0
  186. package/src/breakouts/index.ts +244 -64
  187. package/src/breakouts/utils.ts +13 -0
  188. package/src/common/errors/webex-errors.ts +6 -2
  189. package/src/common/logs/logger-proxy.ts +1 -1
  190. package/src/common/queue.ts +22 -8
  191. package/src/config.ts +0 -6
  192. package/src/constants.ts +111 -19
  193. package/src/controls-options-manager/enums.ts +2 -0
  194. package/src/controls-options-manager/index.ts +13 -10
  195. package/src/controls-options-manager/types.ts +10 -0
  196. package/src/controls-options-manager/util.ts +82 -11
  197. package/src/index.ts +18 -11
  198. package/src/interpretation/README.md +60 -0
  199. package/src/interpretation/collection.ts +19 -0
  200. package/src/interpretation/index.ts +332 -0
  201. package/src/interpretation/siLanguage.ts +18 -0
  202. package/src/locus-info/controlsUtils.ts +81 -0
  203. package/src/locus-info/index.ts +318 -57
  204. package/src/locus-info/infoUtils.ts +10 -2
  205. package/src/locus-info/mediaSharesUtils.ts +48 -0
  206. package/src/locus-info/parser.ts +224 -39
  207. package/src/locus-info/selfUtils.ts +32 -20
  208. package/src/media/index.ts +94 -108
  209. package/src/media/properties.ts +69 -109
  210. package/src/meeting/in-meeting-actions.ts +120 -4
  211. package/src/meeting/index.ts +1967 -2120
  212. package/src/meeting/locusMediaRequest.ts +314 -0
  213. package/src/meeting/muteState.ts +119 -194
  214. package/src/meeting/request.ts +122 -115
  215. package/src/meeting/util.ts +549 -413
  216. package/src/meeting-info/index.ts +54 -8
  217. package/src/meeting-info/meeting-info-v2.ts +89 -24
  218. package/src/meeting-info/utilv2.ts +6 -2
  219. package/src/meetings/index.ts +247 -87
  220. package/src/meetings/meetings.types.ts +12 -0
  221. package/src/meetings/util.ts +47 -12
  222. package/src/member/index.ts +28 -1
  223. package/src/member/types.ts +14 -0
  224. package/src/member/util.ts +75 -26
  225. package/src/members/index.ts +7 -1
  226. package/src/members/request.ts +61 -21
  227. package/src/members/util.ts +316 -326
  228. package/src/metrics/constants.ts +1 -0
  229. package/src/metrics/index.ts +1 -474
  230. package/src/multistream/mediaRequestManager.ts +183 -67
  231. package/src/multistream/receiveSlot.ts +4 -4
  232. package/src/multistream/receiveSlotManager.ts +4 -4
  233. package/src/multistream/remoteMedia.ts +2 -2
  234. package/src/multistream/remoteMediaGroup.ts +59 -0
  235. package/src/multistream/remoteMediaManager.ts +33 -0
  236. package/src/multistream/sendSlotManager.ts +170 -0
  237. package/src/reachability/index.ts +15 -4
  238. package/src/reachability/request.ts +7 -3
  239. package/src/reconnection-manager/index.ts +36 -29
  240. package/src/recording-controller/index.ts +20 -3
  241. package/src/recording-controller/util.ts +26 -9
  242. package/src/roap/index.ts +25 -30
  243. package/src/roap/request.ts +44 -51
  244. package/src/roap/turnDiscovery.ts +51 -25
  245. package/src/rtcMetrics/constants.ts +3 -0
  246. package/src/rtcMetrics/index.ts +100 -0
  247. package/src/statsAnalyzer/index.ts +0 -1
  248. package/test/integration/spec/converged-space-meetings.js +60 -3
  249. package/test/integration/spec/journey.js +336 -259
  250. package/test/integration/spec/space-meeting.js +76 -3
  251. package/test/unit/spec/annotation/index.ts +418 -0
  252. package/test/unit/spec/breakouts/breakout.ts +85 -26
  253. package/test/unit/spec/breakouts/events.ts +89 -0
  254. package/test/unit/spec/breakouts/index.ts +636 -98
  255. package/test/unit/spec/breakouts/utils.js +19 -1
  256. package/test/unit/spec/common/queue.js +31 -2
  257. package/test/unit/spec/controls-options-manager/index.js +8 -1
  258. package/test/unit/spec/controls-options-manager/util.js +576 -397
  259. package/test/unit/spec/fixture/locus.js +1 -0
  260. package/test/unit/spec/interpretation/collection.ts +15 -0
  261. package/test/unit/spec/interpretation/index.ts +589 -0
  262. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  263. package/test/unit/spec/locus-info/controlsUtils.js +195 -1
  264. package/test/unit/spec/locus-info/index.js +950 -45
  265. package/test/unit/spec/locus-info/infoUtils.js +37 -15
  266. package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
  267. package/test/unit/spec/locus-info/parser.js +62 -22
  268. package/test/unit/spec/locus-info/selfConstant.js +19 -0
  269. package/test/unit/spec/locus-info/selfUtils.js +131 -26
  270. package/test/unit/spec/media/index.ts +82 -79
  271. package/test/unit/spec/meeting/in-meeting-actions.ts +60 -2
  272. package/test/unit/spec/meeting/index.js +3208 -1734
  273. package/test/unit/spec/meeting/locusMediaRequest.ts +443 -0
  274. package/test/unit/spec/meeting/muteState.js +328 -417
  275. package/test/unit/spec/meeting/request.js +393 -48
  276. package/test/unit/spec/meeting/utils.js +552 -76
  277. package/test/unit/spec/meeting-info/index.js +181 -0
  278. package/test/unit/spec/meeting-info/meetinginfov2.js +258 -20
  279. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  280. package/test/unit/spec/meetings/index.js +631 -145
  281. package/test/unit/spec/meetings/utils.js +164 -9
  282. package/test/unit/spec/member/index.js +44 -14
  283. package/test/unit/spec/member/util.js +296 -155
  284. package/test/unit/spec/members/index.js +23 -3
  285. package/test/unit/spec/members/request.js +167 -35
  286. package/test/unit/spec/metrics/index.js +1 -50
  287. package/test/unit/spec/multistream/mediaRequestManager.ts +366 -8
  288. package/test/unit/spec/multistream/receiveSlot.ts +1 -1
  289. package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
  290. package/test/unit/spec/multistream/remoteMediaManager.ts +123 -0
  291. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  292. package/test/unit/spec/reachability/index.ts +66 -5
  293. package/test/unit/spec/reachability/request.js +3 -1
  294. package/test/unit/spec/reconnection-manager/index.js +55 -5
  295. package/test/unit/spec/recording-controller/index.js +294 -218
  296. package/test/unit/spec/recording-controller/util.js +223 -96
  297. package/test/unit/spec/roap/index.ts +21 -48
  298. package/test/unit/spec/roap/request.ts +74 -60
  299. package/test/unit/spec/roap/turnDiscovery.ts +30 -6
  300. package/test/unit/spec/rtcMetrics/index.ts +68 -0
  301. package/test/utils/integrationTestUtils.js +46 -0
  302. package/test/utils/testUtils.js +0 -60
  303. package/src/metrics/config.ts +0 -487
@@ -2,19 +2,24 @@
2
2
 
3
3
  var _typeof = require("@babel/runtime-corejs2/helpers/typeof");
4
4
  var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
5
- var _WeakMap = require("@babel/runtime-corejs2/core-js/weak-map");
6
- var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
5
+ var _Object$keys2 = require("@babel/runtime-corejs2/core-js/object/keys");
6
+ var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
7
7
  var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
8
+ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
9
+ var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
10
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
11
+ var _WeakMap = require("@babel/runtime-corejs2/core-js/weak-map");
8
12
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
9
13
  _Object$defineProperty(exports, "__esModule", {
10
14
  value: true
11
15
  });
12
16
  exports.default = void 0;
13
- var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
14
17
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
15
18
  var _now = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/date/now"));
16
19
  var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
17
20
  var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
21
+ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
22
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/toConsumableArray"));
18
23
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
19
24
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
20
25
  var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
@@ -25,14 +30,14 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/he
25
30
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
26
31
  require("@webex/internal-plugin-mercury");
27
32
  require("@webex/internal-plugin-conversation");
33
+ require("@webex/internal-plugin-metrics");
28
34
  var _webexCore = require("@webex/webex-core");
29
35
  var _internalMediaCore = require("@webex/internal-media-core");
30
36
  var mediaHelpersModule = _interopRequireWildcard(require("@webex/media-helpers"));
31
37
  require("webrtc-adapter");
32
38
  var _metrics = _interopRequireDefault(require("../metrics"));
33
- var _config = require("../metrics/config");
34
39
  var _loggerConfig = _interopRequireDefault(require("../common/logs/logger-config"));
35
- var _config2 = _interopRequireDefault(require("../common/config"));
40
+ var _config = _interopRequireDefault(require("../common/config"));
36
41
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
37
42
  var _request = _interopRequireDefault(require("../common/logs/request"));
38
43
  var _triggerProxy = _interopRequireDefault(require("../common/events/trigger-proxy"));
@@ -53,6 +58,8 @@ var _util2 = _interopRequireDefault(require("./util"));
53
58
  var _permission = _interopRequireDefault(require("../common/errors/permission"));
54
59
  function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
55
60
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
61
+ function ownKeys(object, enumerableOnly) { var keys = _Object$keys2(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
62
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
56
63
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
57
64
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
58
65
  var mediaLogger;
@@ -183,7 +190,50 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
183
190
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "geoHintInfo", void 0);
184
191
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "meetingInfo", void 0);
185
192
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mediaHelpers", void 0);
193
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "breakoutLocusForHandleLater", void 0);
186
194
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "namespace", _constants.MEETINGS);
195
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "createNoiseReductionEffect", /*#__PURE__*/function () {
196
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(options) {
197
+ var authToken;
198
+ return _regenerator.default.wrap(function _callee$(_context) {
199
+ while (1) switch (_context.prev = _context.next) {
200
+ case 0:
201
+ // @ts-ignore
202
+ authToken = _this.webex.credentials.supertoken.access_token;
203
+ return _context.abrupt("return", new mediaHelpersModule.NoiseReductionEffect(_objectSpread({
204
+ authToken: authToken
205
+ }, options)));
206
+ case 2:
207
+ case "end":
208
+ return _context.stop();
209
+ }
210
+ }, _callee);
211
+ }));
212
+ return function (_x) {
213
+ return _ref.apply(this, arguments);
214
+ };
215
+ }());
216
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "createVirtualBackgroundEffect", /*#__PURE__*/function () {
217
+ var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(options) {
218
+ var authToken;
219
+ return _regenerator.default.wrap(function _callee2$(_context2) {
220
+ while (1) switch (_context2.prev = _context2.next) {
221
+ case 0:
222
+ // @ts-ignore
223
+ authToken = _this.webex.credentials.supertoken.access_token;
224
+ return _context2.abrupt("return", new mediaHelpersModule.VirtualBackgroundEffect(_objectSpread({
225
+ authToken: authToken
226
+ }, options)));
227
+ case 2:
228
+ case "end":
229
+ return _context2.stop();
230
+ }
231
+ }, _callee2);
232
+ }));
233
+ return function (_x2) {
234
+ return _ref2.apply(this, arguments);
235
+ };
236
+ }());
187
237
  _this.mediaHelpers = mediaHelpersModule;
188
238
 
189
239
  /**
@@ -217,15 +267,17 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
217
267
  * @memberof Meetings
218
268
  */
219
269
  _this.personalMeetingRoom = null;
270
+
220
271
  /**
221
- * The Reachability object to interact with server, starts as null until {@link Meeting#setReachability} is called
272
+ * The Reachability object to interact with server
222
273
  * starts as null
223
274
  * @instance
224
275
  * @type {Object}
225
276
  * @private
226
277
  * @memberof Meetings
227
278
  */
228
- _this.reachability = null;
279
+ // @ts-ignore
280
+ _this.reachability = new _reachability.default(_this.webex);
229
281
 
230
282
  /**
231
283
  * If the meetings plugin has been registered and listening via {@link Meetings#register}
@@ -254,8 +306,7 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
254
306
  * @memberof Meetings
255
307
  */
256
308
  _this.media = {
257
- getUserMedia: _media.default.getUserMedia,
258
- getSupportedDevice: _media.default.getSupportedDevice
309
+ getUserMedia: _media.default.getUserMedia
259
310
  };
260
311
  _this.onReady();
261
312
  return _this;
@@ -277,8 +328,12 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
277
328
  var breakoutLocus = this.meetingCollection.getActiveBreakoutLocus(breakoutUrl);
278
329
  var isSelfJoined = (newLocus === null || newLocus === void 0 ? void 0 : (_newLocus$self = newLocus.self) === null || _newLocus$self === void 0 ? void 0 : _newLocus$self.state) === _constants._JOINED_;
279
330
  var isSelfMoved = (newLocus === null || newLocus === void 0 ? void 0 : (_newLocus$self2 = newLocus.self) === null || _newLocus$self2 === void 0 ? void 0 : _newLocus$self2.state) === _constants._LEFT_ && (newLocus === null || newLocus === void 0 ? void 0 : (_newLocus$self3 = newLocus.self) === null || _newLocus$self3 === void 0 ? void 0 : _newLocus$self3.reason) === _constants._MOVED_;
280
- var deviceFromNewLocus = _util2.default.getThisDevice(newLocus);
281
- var isNewLocusJoinThisDevice = _util2.default.joinedOnThisDevice(meeting, newLocus);
331
+ // @ts-ignore
332
+ var deviceFromNewLocus = _util2.default.getThisDevice(newLocus, this.webex.internal.device.url);
333
+ var isResourceMovedOnThisDevice = (deviceFromNewLocus === null || deviceFromNewLocus === void 0 ? void 0 : deviceFromNewLocus.state) === _constants._LEFT_ && (deviceFromNewLocus === null || deviceFromNewLocus === void 0 ? void 0 : deviceFromNewLocus.reason) === _constants._MOVED_;
334
+ var isNewLocusJoinThisDevice = _util2.default.joinedOnThisDevice(meeting, newLocus,
335
+ // @ts-ignore
336
+ this.webex.internal.device.url);
282
337
  var isBreakoutLocusJoinThisDevice = (breakoutLocus === null || breakoutLocus === void 0 ? void 0 : (_breakoutLocus$joined = breakoutLocus.joinedWith) === null || _breakoutLocus$joined === void 0 ? void 0 : _breakoutLocus$joined.correlationId) && breakoutLocus.joinedWith.correlationId === (meeting === null || meeting === void 0 ? void 0 : meeting.correlationId);
283
338
  if (isSelfJoined && isNewLocusJoinThisDevice) {
284
339
  _loggerProxy.default.logger.log('Meetings:index#isNeedHandleMainLocus --> self this device shown as JOINED in the main session');
@@ -297,8 +352,12 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
297
352
  _loggerProxy.default.logger.log("Meetings:index#isNeedHandleMainLocus --> there is active breakout session and joined on this device, and don't need to handle main session: ".concat(breakoutUrl));
298
353
  return false;
299
354
  }
300
- if (isSelfMoved && newLocus !== null && newLocus !== void 0 && (_newLocus$self4 = newLocus.self) !== null && _newLocus$self4 !== void 0 && _newLocus$self4.removed) {
301
- _loggerProxy.default.logger.log('Meetings:index#isNeedHandleMainLocus --> self moved main locus with self removed status, not need to handle');
355
+ if (isSelfMoved && (newLocus !== null && newLocus !== void 0 && (_newLocus$self4 = newLocus.self) !== null && _newLocus$self4 !== void 0 && _newLocus$self4.removed || isResourceMovedOnThisDevice)) {
356
+ _loggerProxy.default.logger.log('Meetings:index#isNeedHandleMainLocus --> self moved main locus with self removed status or with device resource moved, not need to handle');
357
+ return false;
358
+ }
359
+ if (isSelfJoined && isResourceMovedOnThisDevice) {
360
+ _loggerProxy.default.logger.log('Meetings:index#isNeedHandleMainLocus --> self device left&moved in main locus with self joined status, not need to handle');
302
361
  return false;
303
362
  }
304
363
  _loggerProxy.default.logger.log('Meetings:index#isNeedHandleMainLocus --> this is a normal main session locusDTO update case');
@@ -317,8 +376,8 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
317
376
  key: "isNeedHandleLocusDTO",
318
377
  value: function isNeedHandleLocusDTO(meeting, newLocus) {
319
378
  if (newLocus) {
320
- var _newLocus$controls2, _newLocus$controls2$b, _newLocus$self5, _newLocus$self6;
321
- var isNewLocusAsBreakout = ((_newLocus$controls2 = newLocus.controls) === null || _newLocus$controls2 === void 0 ? void 0 : (_newLocus$controls2$b = _newLocus$controls2.breakout) === null || _newLocus$controls2$b === void 0 ? void 0 : _newLocus$controls2$b.sessionType) === _constants.BREAKOUTS.SESSION_TYPES.BREAKOUT;
379
+ var _newLocus$self5, _newLocus$self6;
380
+ var isNewLocusAsBreakout = _util2.default.isBreakoutLocusDTO(newLocus);
322
381
  var isSelfMoved = (newLocus === null || newLocus === void 0 ? void 0 : (_newLocus$self5 = newLocus.self) === null || _newLocus$self5 === void 0 ? void 0 : _newLocus$self5.state) === _constants._LEFT_ && (newLocus === null || newLocus === void 0 ? void 0 : (_newLocus$self6 = newLocus.self) === null || _newLocus$self6 === void 0 ? void 0 : _newLocus$self6.reason) === _constants._MOVED_;
323
382
  if (!meeting) {
324
383
  if (isNewLocusAsBreakout) {
@@ -336,6 +395,29 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
336
395
  return true;
337
396
  }
338
397
 
398
+ /**
399
+ * get corresponding meeting object by locus data
400
+ * @param {Object} data a locus event
401
+ * @param {String} data.locusUrl
402
+ * @param {Object} data.locus
403
+ * @returns {Object}
404
+ * @private
405
+ * @memberof Meetings
406
+ */
407
+ }, {
408
+ key: "getCorrespondingMeetingByLocus",
409
+ value: function getCorrespondingMeetingByLocus(data) {
410
+ var _data$locus$info, _data$locus, _data$locus$info2;
411
+ // getting meeting by correlationId. This will happen for the new event
412
+ // Either the locus
413
+ // TODO : Add check for the callBack Address
414
+ return this.meetingCollection.getByKey(_constants.LOCUS_URL, data.locusUrl) ||
415
+ // @ts-ignore
416
+ this.meetingCollection.getByKey(_constants.CORRELATION_ID,
417
+ // @ts-ignore
418
+ _util2.default.checkForCorrelationId(this.webex.internal.device.url, data.locus)) || this.meetingCollection.getByKey(_constants.SIP_URI, data.locus.self && data.locus.self.callbackInfo && data.locus.self.callbackInfo.callbackAddress) || ((_data$locus$info = data.locus.info) !== null && _data$locus$info !== void 0 && _data$locus$info.isUnifiedSpaceMeeting ? undefined : this.meetingCollection.getByKey(_constants.CONVERSATION_URL, data.locus.conversationUrl)) || this.meetingCollection.getByKey(_constants.MEETINGNUMBER, (_data$locus = data.locus) === null || _data$locus === void 0 ? void 0 : (_data$locus$info2 = _data$locus.info) === null || _data$locus$info2 === void 0 ? void 0 : _data$locus$info2.webExMeetingId);
419
+ }
420
+
339
421
  /**
340
422
  * handle locus events and takes meeting actions with them as they come in
341
423
  * @param {Object} data a locus event
@@ -350,22 +432,11 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
350
432
  }, {
351
433
  key: "handleLocusEvent",
352
434
  value: function handleLocusEvent(data) {
353
- var _data$locus$info,
354
- _data$locus,
355
- _data$locus$info2,
356
- _data$locus2,
435
+ var _data$locus2,
357
436
  _data$locus2$replaces,
358
437
  _this2 = this;
359
438
  var useRandomDelayForInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
360
- var meeting = null;
361
- // getting meeting by correlationId. This will happen for the new event
362
- // Either the locus
363
- // TODO : Add check for the callBack Address
364
- meeting = this.meetingCollection.getByKey(_constants.LOCUS_URL, data.locusUrl) ||
365
- // @ts-ignore
366
- this.meetingCollection.getByKey(_constants.CORRELATION_ID,
367
- // @ts-ignore
368
- _util2.default.checkForCorrelationId(this.webex.internal.device.url, data.locus)) || this.meetingCollection.getByKey(_constants.SIP_URI, data.locus.self && data.locus.self.callbackInfo && data.locus.self.callbackInfo.callbackAddress) || ((_data$locus$info = data.locus.info) !== null && _data$locus$info !== void 0 && _data$locus$info.isUnifiedSpaceMeeting ? undefined : this.meetingCollection.getByKey(_constants.CONVERSATION_URL, data.locus.conversationUrl)) || this.meetingCollection.getByKey(_constants.MEETINGNUMBER, (_data$locus = data.locus) === null || _data$locus === void 0 ? void 0 : (_data$locus$info2 = _data$locus.info) === null || _data$locus$info2 === void 0 ? void 0 : _data$locus$info2.webExMeetingId);
439
+ var meeting = this.getCorrespondingMeetingByLocus(data);
369
440
 
370
441
  // Special case when locus has got replaced, This only happend once if a replace locus exists
371
442
  // https://sqbu-github.cisco.com/WebExSquared/locus/wiki/Locus-changing-mid-call
@@ -374,6 +445,9 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
374
445
  // Always the last element in the replace is the active one
375
446
  meeting = this.meetingCollection.getByKey(_constants.LOCUS_URL, data.locus.replaces[data.locus.replaces.length - 1].locusUrl);
376
447
  }
448
+ if (meeting && !_util2.default.isBreakoutLocusDTO(data.locus)) {
449
+ meeting.locusInfo.updateMainSessionLocusCache(data.locus);
450
+ }
377
451
  if (!this.isNeedHandleLocusDTO(meeting, data.locus)) {
378
452
  _loggerProxy.default.logger.log("Meetings:index#handleLocusEvent --> doesn't need to process locus event");
379
453
  return;
@@ -417,6 +491,7 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
417
491
 
418
492
  // It's a new meeting so initialize the locus data
419
493
  meeting.locusInfo.initialSetup(data.locus);
494
+ _this2.checkHandleBreakoutLocus(data.locus);
420
495
  }).catch(function (e) {
421
496
  _loggerProxy.default.logger.error(e);
422
497
  }).finally(function () {
@@ -424,11 +499,14 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
424
499
  // because the other user left so before sending 'added' event make sure it exists in the collection
425
500
 
426
501
  if (_this2.getMeetingByType(_constants._ID_, meeting.id)) {
427
- _metrics.default.postEvent({
428
- event: _config.eventType.REMOTE_STARTED,
429
- meeting: meeting,
430
- data: {
431
- trigger: _config.trigger.MERCURY_EVENT
502
+ // @ts-ignore
503
+ _this2.webex.internal.newMetrics.submitClientEvent({
504
+ name: 'client.call.remote-started',
505
+ payload: {
506
+ trigger: 'mercury-event'
507
+ },
508
+ options: {
509
+ meetingId: meeting.id
432
510
  }
433
511
  });
434
512
  _triggerProxy.default.trigger(_this2, {
@@ -542,7 +620,7 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
542
620
  // @ts-ignore
543
621
  this.webex.once(_constants.READY, function () {
544
622
  // @ts-ignore
545
- _config2.default.set(_this4.config);
623
+ _config.default.set(_this4.config);
546
624
  // @ts-ignore
547
625
  _loggerConfig.default.set(_this4.config.logging);
548
626
  // @ts-ignore
@@ -579,7 +657,7 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
579
657
  disableNotifications: true
580
658
  });
581
659
  // @ts-ignore
582
- _metrics.default.initialSetup(_this4.meetingCollection, _this4.webex);
660
+ _metrics.default.initialSetup(_this4.webex);
583
661
  });
584
662
  }
585
663
 
@@ -729,6 +807,17 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
729
807
  );
730
808
  }
731
809
 
810
+ /**
811
+ * Creates a noise reduction effect
812
+ *
813
+ * @param {INoiseReductionEffect} options optional custom effect options
814
+ * @returns {Promise<effect>} noise reduction effect.
815
+ * @public
816
+ * @memberof Meetings
817
+ */
818
+ }, {
819
+ key: "uploadLogs",
820
+ value:
732
821
  /**
733
822
  * Uploads logs to the webex services for tracking
734
823
  * @param {Object} [options={}]
@@ -741,9 +830,7 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
741
830
  * @param {String} [options.orgId] org id
742
831
  * @returns {String} feedback ID logs were submitted under
743
832
  */
744
- }, {
745
- key: "uploadLogs",
746
- value: function uploadLogs() {
833
+ function uploadLogs() {
747
834
  var _this7 = this;
748
835
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
749
836
  _loggerProxy.default.logger.info('Meetings:index#uploadLogs --> uploading logs');
@@ -776,19 +863,6 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
776
863
  });
777
864
  }
778
865
 
779
- /**
780
- * initializes the reachability instance for Meetings
781
- * @returns {undefined}
782
- * @public
783
- * @memberof Meetings
784
- */
785
- }, {
786
- key: "setReachability",
787
- value: function setReachability() {
788
- // @ts-ignore
789
- this.reachability = new _reachability.default(this.webex);
790
- }
791
-
792
866
  /**
793
867
  * gets the reachability instance for Meetings
794
868
  * @returns {Reachability}
@@ -810,9 +884,6 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
810
884
  }, {
811
885
  key: "startReachability",
812
886
  value: function startReachability() {
813
- if (!this.reachability) {
814
- this.setReachability();
815
- }
816
887
  return this.getReachability().gatherReachability();
817
888
  }
818
889
 
@@ -846,6 +917,23 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
846
917
  if (res) {
847
918
  _this9.preferredWebexSite = _util2.default.parseDefaultSiteFromMeetingPreferences(res);
848
919
  }
920
+
921
+ // fall back to getting the preferred site from the user information
922
+ if (!_this9.preferredWebexSite) {
923
+ // @ts-ignore
924
+ return _this9.webex.internal.user.get().then(function (user) {
925
+ var _user$userPreferences, _user$userPreferences2;
926
+ var preferredWebexSite = user === null || user === void 0 ? void 0 : (_user$userPreferences = user.userPreferences) === null || _user$userPreferences === void 0 ? void 0 : (_user$userPreferences2 = _user$userPreferences.userPreferencesItems) === null || _user$userPreferences2 === void 0 ? void 0 : _user$userPreferences2.preferredWebExSite;
927
+ if (preferredWebexSite) {
928
+ _this9.preferredWebexSite = preferredWebexSite;
929
+ } else {
930
+ throw new Error('site not found');
931
+ }
932
+ }).catch(function () {
933
+ _loggerProxy.default.logger.error('Failed to fetch preferred site from user - no site will be set');
934
+ });
935
+ }
936
+ return _promise.default.resolve();
849
937
  });
850
938
  }
851
939
 
@@ -888,6 +976,8 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
888
976
  * @param {string} destination - sipURL, spaceId, phonenumber, or locus object}
889
977
  * @param {string} [type] - the optional specified type, such as locusId
890
978
  * @param {Boolean} useRandomDelayForInfo - whether a random delay should be added to fetching meeting info
979
+ * @param {Object} infoExtraParams extra parameters to be provided when fetching meeting info
980
+ * @param {string} correlationId - the optional specified correlationId
891
981
  * @returns {Promise<Meeting>} A new Meeting.
892
982
  * @public
893
983
  * @memberof Meetings
@@ -898,6 +988,8 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
898
988
  var _this10 = this;
899
989
  var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
900
990
  var useRandomDelayForInfo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
991
+ var infoExtraParams = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
992
+ var correlationId = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : undefined;
901
993
  // TODO: type should be from a dictionary
902
994
 
903
995
  // Validate meeting information based on the provided destination and
@@ -936,7 +1028,7 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
936
1028
  // Validate if a meeting was found.
937
1029
  if (!meeting) {
938
1030
  // Create a meeting based on the normalized destination and type.
939
- return _this10.createMeeting(targetDest, type, useRandomDelayForInfo).then(function (createdMeeting) {
1031
+ return _this10.createMeeting(targetDest, type, useRandomDelayForInfo, infoExtraParams, correlationId).then(function (createdMeeting) {
940
1032
  // If the meeting was successfully created.
941
1033
  if (createdMeeting && createdMeeting.on) {
942
1034
  // Create a destruction event for the meeting.
@@ -988,6 +1080,8 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
988
1080
  * @param {String} destination see create()
989
1081
  * @param {String} type see create()
990
1082
  * @param {Boolean} useRandomDelayForInfo whether a random delay should be added to fetching meeting info
1083
+ * @param {Object} infoExtraParams extra parameters to be provided when fetching meeting info
1084
+ * @param {String} correlationId the optional specified correlationId
991
1085
  * @returns {Promise} a new meeting instance complete with meeting info and destination
992
1086
  * @private
993
1087
  * @memberof Meetings
@@ -995,9 +1089,11 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
995
1089
  }, {
996
1090
  key: "createMeeting",
997
1091
  value: function () {
998
- var _createMeeting = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(destination) {
1092
+ var _createMeeting = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(destination) {
999
1093
  var type,
1000
1094
  useRandomDelayForInfo,
1095
+ infoExtraParams,
1096
+ correlationId,
1001
1097
  meeting,
1002
1098
  _destination$fullStat,
1003
1099
  waitingTime,
@@ -1009,12 +1105,14 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
1009
1105
  isMeetingActive,
1010
1106
  enableUnifiedMeetings,
1011
1107
  meetingAddedType,
1012
- _args = arguments;
1013
- return _regenerator.default.wrap(function _callee$(_context) {
1014
- while (1) switch (_context.prev = _context.next) {
1108
+ _args3 = arguments;
1109
+ return _regenerator.default.wrap(function _callee3$(_context3) {
1110
+ while (1) switch (_context3.prev = _context3.next) {
1015
1111
  case 0:
1016
- type = _args.length > 1 && _args[1] !== undefined ? _args[1] : null;
1017
- useRandomDelayForInfo = _args.length > 2 && _args[2] !== undefined ? _args[2] : false;
1112
+ type = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : null;
1113
+ useRandomDelayForInfo = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : false;
1114
+ infoExtraParams = _args3.length > 3 && _args3[3] !== undefined ? _args3[3] : {};
1115
+ correlationId = _args3.length > 4 && _args3[4] !== undefined ? _args3[4] : undefined;
1018
1116
  meeting = new _meeting.default({
1019
1117
  // @ts-ignore
1020
1118
  userId: this.webex.internal.device.userId,
@@ -1026,13 +1124,14 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
1026
1124
  // pass the locus object if present
1027
1125
  meetingInfoProvider: this.meetingInfo,
1028
1126
  destination: destination,
1029
- destinationType: type
1127
+ destinationType: type,
1128
+ correlationId: correlationId
1030
1129
  }, {
1031
1130
  // @ts-ignore
1032
1131
  parent: this.webex
1033
1132
  });
1034
1133
  this.meetingCollection.set(meeting);
1035
- _context.prev = 4;
1134
+ _context3.prev = 6;
1036
1135
  // if no participant has joined the scheduled meeting (meaning meeting is not active) and we get a locusEvent,
1037
1136
  // it means the meeting will start in 5-6 min. In that case, we want to fetchMeetingInfo
1038
1137
  // between 5 and 2 min (random between 3 minutes) before the meeting starts
@@ -1049,32 +1148,36 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
1049
1148
  isMeetingActive = !!((_destination$fullStat = destination.fullState) !== null && _destination$fullStat !== void 0 && _destination$fullStat.active); // @ts-ignore
1050
1149
  enableUnifiedMeetings = this.config.experimental.enableUnifiedMeetings;
1051
1150
  if (!(enableUnifiedMeetings && !isMeetingActive && useRandomDelayForInfo && waitingTime > 0)) {
1052
- _context.next = 14;
1151
+ _context3.next = 16;
1053
1152
  break;
1054
1153
  }
1055
1154
  meeting.fetchMeetingInfoTimeoutId = setTimeout(function () {
1056
- return meeting.fetchMeetingInfo({});
1155
+ return meeting.fetchMeetingInfo({
1156
+ extraParams: infoExtraParams
1157
+ });
1057
1158
  }, waitingTime);
1058
1159
  meeting.parseMeetingInfo(undefined, destination);
1059
- _context.next = 16;
1160
+ _context3.next = 18;
1060
1161
  break;
1061
- case 14:
1062
- _context.next = 16;
1063
- return meeting.fetchMeetingInfo({});
1064
1162
  case 16:
1065
- _context.next = 22;
1066
- break;
1163
+ _context3.next = 18;
1164
+ return meeting.fetchMeetingInfo({
1165
+ extraParams: infoExtraParams
1166
+ });
1067
1167
  case 18:
1068
- _context.prev = 18;
1069
- _context.t0 = _context["catch"](4);
1070
- if (!(_context.t0 instanceof _captchaError.default) && !(_context.t0 instanceof _passwordError.default) && !(_context.t0 instanceof _permission.default)) {
1168
+ _context3.next = 24;
1169
+ break;
1170
+ case 20:
1171
+ _context3.prev = 20;
1172
+ _context3.t0 = _context3["catch"](6);
1173
+ if (!(_context3.t0 instanceof _captchaError.default) && !(_context3.t0 instanceof _passwordError.default) && !(_context3.t0 instanceof _permission.default)) {
1071
1174
  // if there is no meeting info we assume its a 1:1 call or wireless share
1072
1175
  _loggerProxy.default.logger.info("Meetings:index#createMeeting --> Info Unable to fetch meeting info for ".concat(destination, "."));
1073
1176
  _loggerProxy.default.logger.info('Meetings:index#createMeeting --> Info assuming this destination is a 1:1 or wireless share');
1074
1177
  }
1075
- _loggerProxy.default.logger.debug("Meetings:index#createMeeting --> Debug ".concat(_context.t0, " fetching /meetingInfo for creation."));
1076
- case 22:
1077
- _context.prev = 22;
1178
+ _loggerProxy.default.logger.debug("Meetings:index#createMeeting --> Debug ".concat(_context3.t0, " fetching /meetingInfo for creation."));
1179
+ case 24:
1180
+ _context3.prev = 24;
1078
1181
  // For type LOCUS_ID we need to parse the locus object to get the information
1079
1182
  // about the caller and callee
1080
1183
  // Meeting Added event will be created in `handleLocusEvent`
@@ -1094,16 +1197,16 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
1094
1197
  type: meetingAddedType
1095
1198
  });
1096
1199
  }
1097
- return _context.finish(22);
1098
- case 25:
1099
- return _context.abrupt("return", meeting);
1100
- case 26:
1200
+ return _context3.finish(24);
1201
+ case 27:
1202
+ return _context3.abrupt("return", meeting);
1203
+ case 28:
1101
1204
  case "end":
1102
- return _context.stop();
1205
+ return _context3.stop();
1103
1206
  }
1104
- }, _callee, this, [[4, 18, 22, 25]]);
1207
+ }, _callee3, this, [[6, 20, 24, 27]]);
1105
1208
  }));
1106
- function createMeeting(_x) {
1209
+ function createMeeting(_x3) {
1107
1210
  return _createMeeting.apply(this, arguments);
1108
1211
  }
1109
1212
  return createMeeting;
@@ -1153,7 +1256,8 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
1153
1256
  return this.request.getActiveMeetings().then(function (locusArray) {
1154
1257
  var activeLocusUrl = [];
1155
1258
  if (locusArray !== null && locusArray !== void 0 && locusArray.loci && locusArray.loci.length > 0) {
1156
- locusArray.loci.forEach(function (locus) {
1259
+ var lociToUpdate = _this11.sortLocusArrayToUpdate(locusArray.loci);
1260
+ lociToUpdate.forEach(function (locus) {
1157
1261
  activeLocusUrl.push(locus.url);
1158
1262
  _this11.handleLocusEvent({
1159
1263
  locus: locus,
@@ -1181,6 +1285,77 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
1181
1285
  });
1182
1286
  }
1183
1287
 
1288
+ /**
1289
+ * sort out locus array for initial creating
1290
+ * @param {Array} loci original locus array
1291
+ * @returns {undefined}
1292
+ * @public
1293
+ * @memberof Meetings
1294
+ */
1295
+ }, {
1296
+ key: "sortLocusArrayToUpdate",
1297
+ value: function sortLocusArrayToUpdate(loci) {
1298
+ var _this12 = this;
1299
+ var mainLoci = loci.filter(function (locus) {
1300
+ return !_util2.default.isBreakoutLocusDTO(locus);
1301
+ });
1302
+ var breakoutLoci = loci.filter(function (locus) {
1303
+ return _util2.default.isValidBreakoutLocus(locus);
1304
+ });
1305
+ this.breakoutLocusForHandleLater = [];
1306
+ var lociToUpdate = (0, _toConsumableArray2.default)(mainLoci);
1307
+ breakoutLoci.forEach(function (breakoutLocus) {
1308
+ var associateMainLocus = mainLoci.find(function (mainLocus) {
1309
+ var _mainLocus$controls, _mainLocus$controls$b, _breakoutLocus$contro, _breakoutLocus$contro2;
1310
+ return ((_mainLocus$controls = mainLocus.controls) === null || _mainLocus$controls === void 0 ? void 0 : (_mainLocus$controls$b = _mainLocus$controls.breakout) === null || _mainLocus$controls$b === void 0 ? void 0 : _mainLocus$controls$b.url) === ((_breakoutLocus$contro = breakoutLocus.controls) === null || _breakoutLocus$contro === void 0 ? void 0 : (_breakoutLocus$contro2 = _breakoutLocus$contro.breakout) === null || _breakoutLocus$contro2 === void 0 ? void 0 : _breakoutLocus$contro2.url);
1311
+ });
1312
+ var existCorrespondingMeeting = _this12.getCorrespondingMeetingByLocus({
1313
+ locus: breakoutLocus,
1314
+ locusUrl: breakoutLocus.url
1315
+ });
1316
+ if (associateMainLocus && !existCorrespondingMeeting) {
1317
+ // if exists both main session and breakout session locus of the same non-exist meeting, handle main locus first,
1318
+ // after meeting create with main locus, then handle the associate breakout locus.
1319
+ // if only handle breakout locus, will miss some date
1320
+ _this12.breakoutLocusForHandleLater.push(breakoutLocus);
1321
+ } else {
1322
+ lociToUpdate.push(breakoutLocus);
1323
+ }
1324
+ });
1325
+ return lociToUpdate;
1326
+ }
1327
+
1328
+ /**
1329
+ * check breakout locus which waiting for main locus's meeting to be created, then handle the breakout locus
1330
+ * @param {Object} newCreatedLocus the locus which just create meeting object of it
1331
+ * @returns {undefined}
1332
+ * @public
1333
+ * @memberof Meetings
1334
+ */
1335
+ }, {
1336
+ key: "checkHandleBreakoutLocus",
1337
+ value: function checkHandleBreakoutLocus(newCreatedLocus) {
1338
+ if (!newCreatedLocus || !this.breakoutLocusForHandleLater || !this.breakoutLocusForHandleLater.length) {
1339
+ return;
1340
+ }
1341
+ if (_util2.default.isBreakoutLocusDTO(newCreatedLocus)) {
1342
+ return;
1343
+ }
1344
+ var existIndex = this.breakoutLocusForHandleLater.findIndex(function (breakoutLocus) {
1345
+ var _breakoutLocus$contro3, _breakoutLocus$contro4, _newCreatedLocus$cont, _newCreatedLocus$cont2;
1346
+ return ((_breakoutLocus$contro3 = breakoutLocus.controls) === null || _breakoutLocus$contro3 === void 0 ? void 0 : (_breakoutLocus$contro4 = _breakoutLocus$contro3.breakout) === null || _breakoutLocus$contro4 === void 0 ? void 0 : _breakoutLocus$contro4.url) === ((_newCreatedLocus$cont = newCreatedLocus.controls) === null || _newCreatedLocus$cont === void 0 ? void 0 : (_newCreatedLocus$cont2 = _newCreatedLocus$cont.breakout) === null || _newCreatedLocus$cont2 === void 0 ? void 0 : _newCreatedLocus$cont2.url);
1347
+ });
1348
+ if (existIndex < 0) {
1349
+ return;
1350
+ }
1351
+ var associateBreakoutLocus = this.breakoutLocusForHandleLater[existIndex];
1352
+ this.handleLocusEvent({
1353
+ locus: associateBreakoutLocus,
1354
+ locusUrl: associateBreakoutLocus.url
1355
+ });
1356
+ this.breakoutLocusForHandleLater.splice(existIndex, 1);
1357
+ }
1358
+
1184
1359
  /**
1185
1360
  * Get all scheduled meetings.
1186
1361
  * @param {object} options