@webex/plugin-meetings 2.36.1 → 2.37.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 (308) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/common/browser-detection.js +1 -20
  4. package/dist/common/browser-detection.js.map +1 -1
  5. package/dist/common/collection.js +5 -20
  6. package/dist/common/collection.js.map +1 -1
  7. package/dist/common/config.js +0 -7
  8. package/dist/common/config.js.map +1 -1
  9. package/dist/common/errors/captcha-error.js +5 -26
  10. package/dist/common/errors/captcha-error.js.map +1 -1
  11. package/dist/common/errors/intent-to-join.js +5 -26
  12. package/dist/common/errors/intent-to-join.js.map +1 -1
  13. package/dist/common/errors/join-meeting.js +6 -27
  14. package/dist/common/errors/join-meeting.js.map +1 -1
  15. package/dist/common/errors/media.js +5 -26
  16. package/dist/common/errors/media.js.map +1 -1
  17. package/dist/common/errors/parameter.js +5 -33
  18. package/dist/common/errors/parameter.js.map +1 -1
  19. package/dist/common/errors/password-error.js +5 -26
  20. package/dist/common/errors/password-error.js.map +1 -1
  21. package/dist/common/errors/permission.js +4 -25
  22. package/dist/common/errors/permission.js.map +1 -1
  23. package/dist/common/errors/reconnection-in-progress.js +0 -17
  24. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  25. package/dist/common/errors/reconnection.js +5 -26
  26. package/dist/common/errors/reconnection.js.map +1 -1
  27. package/dist/common/errors/stats.js +5 -26
  28. package/dist/common/errors/stats.js.map +1 -1
  29. package/dist/common/errors/webex-errors.js +7 -46
  30. package/dist/common/errors/webex-errors.js.map +1 -1
  31. package/dist/common/errors/webex-meetings-error.js +1 -24
  32. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  33. package/dist/common/events/events-scope.js +0 -22
  34. package/dist/common/events/events-scope.js.map +1 -1
  35. package/dist/common/events/events.js +0 -23
  36. package/dist/common/events/events.js.map +1 -1
  37. package/dist/common/events/trigger-proxy.js +0 -12
  38. package/dist/common/events/trigger-proxy.js.map +1 -1
  39. package/dist/common/events/util.js +0 -15
  40. package/dist/common/events/util.js.map +1 -1
  41. package/dist/common/logs/logger-config.js +0 -4
  42. package/dist/common/logs/logger-config.js.map +1 -1
  43. package/dist/common/logs/logger-proxy.js +1 -8
  44. package/dist/common/logs/logger-proxy.js.map +1 -1
  45. package/dist/common/logs/request.js +35 -61
  46. package/dist/common/logs/request.js.map +1 -1
  47. package/dist/common/queue.js +4 -14
  48. package/dist/common/queue.js.map +1 -1
  49. package/dist/config.js +1 -5
  50. package/dist/config.js.map +1 -1
  51. package/dist/constants.js +46 -42
  52. package/dist/constants.js.map +1 -1
  53. package/dist/index.js +1 -17
  54. package/dist/index.js.map +1 -1
  55. package/dist/locus-info/controlsUtils.js +10 -28
  56. package/dist/locus-info/controlsUtils.js.map +1 -1
  57. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  58. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  59. package/dist/locus-info/fullState.js +0 -15
  60. package/dist/locus-info/fullState.js.map +1 -1
  61. package/dist/locus-info/hostUtils.js +4 -12
  62. package/dist/locus-info/hostUtils.js.map +1 -1
  63. package/dist/locus-info/index.js +101 -193
  64. package/dist/locus-info/index.js.map +1 -1
  65. package/dist/locus-info/infoUtils.js +0 -37
  66. package/dist/locus-info/infoUtils.js.map +1 -1
  67. package/dist/locus-info/mediaSharesUtils.js +12 -38
  68. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  69. package/dist/locus-info/parser.js +87 -123
  70. package/dist/locus-info/parser.js.map +1 -1
  71. package/dist/locus-info/selfUtils.js +16 -81
  72. package/dist/locus-info/selfUtils.js.map +1 -1
  73. package/dist/media/index.js +74 -137
  74. package/dist/media/index.js.map +1 -1
  75. package/dist/media/properties.js +64 -110
  76. package/dist/media/properties.js.map +1 -1
  77. package/dist/media/util.js +3 -17
  78. package/dist/media/util.js.map +1 -1
  79. package/dist/mediaQualityMetrics/config.js +10 -12
  80. package/dist/mediaQualityMetrics/config.js.map +1 -1
  81. package/dist/meeting/effectsState.js +120 -192
  82. package/dist/meeting/effectsState.js.map +1 -1
  83. package/dist/meeting/in-meeting-actions.js +0 -13
  84. package/dist/meeting/in-meeting-actions.js.map +1 -1
  85. package/dist/meeting/index.js +812 -1487
  86. package/dist/meeting/index.js.map +1 -1
  87. package/dist/meeting/muteState.js +31 -78
  88. package/dist/meeting/muteState.js.map +1 -1
  89. package/dist/meeting/request.js +157 -227
  90. package/dist/meeting/request.js.map +1 -1
  91. package/dist/meeting/state.js +21 -31
  92. package/dist/meeting/state.js.map +1 -1
  93. package/dist/meeting/util.js +25 -169
  94. package/dist/meeting/util.js.map +1 -1
  95. package/dist/meeting-info/collection.js +3 -25
  96. package/dist/meeting-info/collection.js.map +1 -1
  97. package/dist/meeting-info/index.js +10 -33
  98. package/dist/meeting-info/index.js.map +1 -1
  99. package/dist/meeting-info/meeting-info-v2.js +179 -268
  100. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  101. package/dist/meeting-info/request.js +1 -16
  102. package/dist/meeting-info/request.js.map +1 -1
  103. package/dist/meeting-info/util.js +98 -183
  104. package/dist/meeting-info/util.js.map +1 -1
  105. package/dist/meeting-info/utilv2.js +137 -228
  106. package/dist/meeting-info/utilv2.js.map +1 -1
  107. package/dist/meetings/collection.js +3 -21
  108. package/dist/meetings/collection.js.map +1 -1
  109. package/dist/meetings/index.js +451 -570
  110. package/dist/meetings/index.js.map +1 -1
  111. package/dist/meetings/request.js +7 -30
  112. package/dist/meetings/request.js.map +1 -1
  113. package/dist/meetings/util.js +94 -148
  114. package/dist/meetings/util.js.map +1 -1
  115. package/dist/member/index.js +49 -89
  116. package/dist/member/index.js.map +1 -1
  117. package/dist/member/util.js +17 -68
  118. package/dist/member/util.js.map +1 -1
  119. package/dist/members/collection.js +2 -12
  120. package/dist/members/collection.js.map +1 -1
  121. package/dist/members/index.js +68 -184
  122. package/dist/members/index.js.map +1 -1
  123. package/dist/members/request.js +21 -56
  124. package/dist/members/request.js.map +1 -1
  125. package/dist/members/util.js +9 -38
  126. package/dist/members/util.js.map +1 -1
  127. package/dist/metrics/config.js +0 -2
  128. package/dist/metrics/config.js.map +1 -1
  129. package/dist/metrics/constants.js +1 -2
  130. package/dist/metrics/constants.js.map +1 -1
  131. package/dist/metrics/index.js +48 -136
  132. package/dist/metrics/index.js.map +1 -1
  133. package/dist/networkQualityMonitor/index.js +28 -57
  134. package/dist/networkQualityMonitor/index.js.map +1 -1
  135. package/dist/peer-connection-manager/index.js +60 -190
  136. package/dist/peer-connection-manager/index.js.map +1 -1
  137. package/dist/peer-connection-manager/util.js +10 -24
  138. package/dist/peer-connection-manager/util.js.map +1 -1
  139. package/dist/personal-meeting-room/index.js +10 -45
  140. package/dist/personal-meeting-room/index.js.map +1 -1
  141. package/dist/personal-meeting-room/request.js +2 -33
  142. package/dist/personal-meeting-room/request.js.map +1 -1
  143. package/dist/personal-meeting-room/util.js +0 -13
  144. package/dist/personal-meeting-room/util.js.map +1 -1
  145. package/dist/reachability/index.js +100 -166
  146. package/dist/reachability/index.js.map +1 -1
  147. package/dist/reachability/request.js +2 -18
  148. package/dist/reachability/request.js.map +1 -1
  149. package/dist/reactions/reactions.js +0 -2
  150. package/dist/reactions/reactions.js.map +1 -1
  151. package/dist/reactions/reactions.type.js +0 -5
  152. package/dist/reactions/reactions.type.js.map +1 -1
  153. package/dist/reconnection-manager/index.js +294 -468
  154. package/dist/reconnection-manager/index.js.map +1 -1
  155. package/dist/roap/collection.js +1 -12
  156. package/dist/roap/collection.js.map +1 -1
  157. package/dist/roap/handler.js +15 -85
  158. package/dist/roap/handler.js.map +1 -1
  159. package/dist/roap/index.js +42 -94
  160. package/dist/roap/index.js.map +1 -1
  161. package/dist/roap/request.js +81 -148
  162. package/dist/roap/request.js.map +1 -1
  163. package/dist/roap/state.js +2 -39
  164. package/dist/roap/state.js.map +1 -1
  165. package/dist/roap/turnDiscovery.js +8 -52
  166. package/dist/roap/turnDiscovery.js.map +1 -1
  167. package/dist/roap/util.js +0 -26
  168. package/dist/roap/util.js.map +1 -1
  169. package/dist/statsAnalyzer/global.js +0 -2
  170. package/dist/statsAnalyzer/global.js.map +1 -1
  171. package/dist/statsAnalyzer/index.js +68 -168
  172. package/dist/statsAnalyzer/index.js.map +1 -1
  173. package/dist/statsAnalyzer/mqaUtil.js +54 -53
  174. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  175. package/dist/transcription/index.js +13 -45
  176. package/dist/transcription/index.js.map +1 -1
  177. package/internal-README.md +7 -6
  178. package/package.json +17 -17
  179. package/src/common/browser-detection.ts +9 -6
  180. package/src/common/collection.ts +3 -1
  181. package/src/common/errors/captcha-error.ts +6 -6
  182. package/src/common/errors/intent-to-join.ts +6 -6
  183. package/src/common/errors/join-meeting.ts +12 -8
  184. package/src/common/errors/media.ts +6 -6
  185. package/src/common/errors/parameter.ts +9 -6
  186. package/src/common/errors/password-error.ts +6 -6
  187. package/src/common/errors/permission.ts +5 -5
  188. package/src/common/errors/reconnection.ts +6 -6
  189. package/src/common/errors/stats.ts +6 -6
  190. package/src/common/errors/webex-errors.ts +7 -5
  191. package/src/common/errors/webex-meetings-error.ts +1 -1
  192. package/src/common/events/events-scope.ts +5 -1
  193. package/src/common/events/events.ts +5 -1
  194. package/src/common/events/trigger-proxy.ts +8 -3
  195. package/src/common/events/util.ts +1 -2
  196. package/src/common/logs/logger-proxy.ts +21 -10
  197. package/src/common/logs/request.ts +11 -8
  198. package/src/config.ts +11 -11
  199. package/src/constants.ts +138 -119
  200. package/src/index.js +1 -1
  201. package/src/locus-info/controlsUtils.ts +34 -24
  202. package/src/locus-info/fullState.ts +15 -11
  203. package/src/locus-info/hostUtils.ts +4 -3
  204. package/src/locus-info/index.ts +25 -34
  205. package/src/locus-info/infoUtils.ts +12 -4
  206. package/src/locus-info/mediaSharesUtils.ts +4 -4
  207. package/src/locus-info/parser.ts +45 -68
  208. package/src/locus-info/selfUtils.ts +106 -57
  209. package/src/media/index.ts +118 -109
  210. package/src/media/properties.ts +26 -20
  211. package/src/media/util.ts +2 -2
  212. package/src/mediaQualityMetrics/config.ts +46 -46
  213. package/src/meeting/effectsState.ts +35 -35
  214. package/src/meeting/in-meeting-actions.ts +7 -3
  215. package/src/meeting/index.ts +1435 -1210
  216. package/src/meeting/muteState.ts +62 -31
  217. package/src/meeting/request.ts +160 -113
  218. package/src/meeting/state.ts +45 -30
  219. package/src/meeting/util.ts +131 -90
  220. package/src/meeting-info/collection.ts +2 -1
  221. package/src/meeting-info/index.ts +32 -30
  222. package/src/meeting-info/meeting-info-v2.ts +106 -108
  223. package/src/meeting-info/request.ts +9 -3
  224. package/src/meeting-info/util.ts +54 -46
  225. package/src/meeting-info/utilv2.ts +59 -53
  226. package/src/meetings/collection.ts +1 -1
  227. package/src/meetings/index.ts +513 -441
  228. package/src/meetings/request.ts +26 -24
  229. package/src/meetings/util.ts +26 -23
  230. package/src/member/index.ts +55 -49
  231. package/src/member/util.ts +26 -13
  232. package/src/members/collection.ts +0 -1
  233. package/src/members/index.ts +172 -121
  234. package/src/members/request.ts +46 -14
  235. package/src/members/util.ts +44 -42
  236. package/src/metrics/config.ts +254 -81
  237. package/src/metrics/constants.ts +0 -2
  238. package/src/metrics/index.ts +84 -71
  239. package/src/networkQualityMonitor/index.ts +20 -23
  240. package/src/peer-connection-manager/index.ts +321 -241
  241. package/src/peer-connection-manager/util.ts +4 -2
  242. package/src/personal-meeting-room/index.ts +12 -16
  243. package/src/personal-meeting-room/request.ts +10 -3
  244. package/src/personal-meeting-room/util.ts +3 -3
  245. package/src/reachability/index.ts +61 -59
  246. package/src/reachability/request.ts +36 -32
  247. package/src/reactions/reactions.ts +4 -4
  248. package/src/reactions/reactions.type.ts +2 -3
  249. package/src/reconnection-manager/index.ts +159 -98
  250. package/src/roap/collection.ts +2 -4
  251. package/src/roap/handler.ts +63 -32
  252. package/src/roap/index.ts +78 -58
  253. package/src/roap/request.ts +69 -54
  254. package/src/roap/state.ts +17 -11
  255. package/src/roap/turnDiscovery.ts +60 -31
  256. package/src/roap/util.ts +39 -31
  257. package/src/statsAnalyzer/global.ts +30 -33
  258. package/src/statsAnalyzer/index.ts +397 -169
  259. package/src/statsAnalyzer/mqaUtil.ts +178 -72
  260. package/src/transcription/index.ts +34 -32
  261. package/test/integration/spec/journey.js +666 -462
  262. package/test/integration/spec/space-meeting.js +318 -203
  263. package/test/integration/spec/transcription.js +6 -7
  264. package/test/unit/spec/common/browser-detection.js +9 -28
  265. package/test/unit/spec/fixture/locus.js +92 -90
  266. package/test/unit/spec/locus-info/controlsUtils.js +5 -5
  267. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  268. package/test/unit/spec/locus-info/index.js +1 -2
  269. package/test/unit/spec/locus-info/infoUtils.js +24 -31
  270. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  271. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  272. package/test/unit/spec/locus-info/parser.js +3 -9
  273. package/test/unit/spec/locus-info/selfConstant.js +72 -103
  274. package/test/unit/spec/locus-info/selfUtils.js +21 -12
  275. package/test/unit/spec/meeting/effectsState.js +33 -45
  276. package/test/unit/spec/meeting/in-meeting-actions.ts +2 -3
  277. package/test/unit/spec/meeting/index.js +1141 -649
  278. package/test/unit/spec/meeting/muteState.js +42 -33
  279. package/test/unit/spec/meeting/request.js +56 -45
  280. package/test/unit/spec/meeting/utils.js +66 -49
  281. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  282. package/test/unit/spec/meeting-info/request.js +7 -9
  283. package/test/unit/spec/meeting-info/util.js +11 -12
  284. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  285. package/test/unit/spec/meetings/collection.js +1 -1
  286. package/test/unit/spec/meetings/index.js +438 -257
  287. package/test/unit/spec/meetings/utils.js +14 -12
  288. package/test/unit/spec/member/index.js +0 -1
  289. package/test/unit/spec/member/util.js +5 -6
  290. package/test/unit/spec/members/index.js +84 -35
  291. package/test/unit/spec/members/request.js +29 -20
  292. package/test/unit/spec/members/utils.js +8 -5
  293. package/test/unit/spec/metrics/index.js +16 -21
  294. package/test/unit/spec/networkQualityMonitor/index.js +21 -15
  295. package/test/unit/spec/peerconnection-manager/index.js +88 -58
  296. package/test/unit/spec/peerconnection-manager/utils.js +5 -4
  297. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +7 -8
  298. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  299. package/test/unit/spec/reachability/index.ts +9 -11
  300. package/test/unit/spec/reconnection-manager/index.js +14 -17
  301. package/test/unit/spec/roap/index.ts +18 -8
  302. package/test/unit/spec/roap/turnDiscovery.ts +22 -19
  303. package/test/unit/spec/roap/util.js +3 -3
  304. package/test/unit/spec/stats-analyzer/index.js +29 -24
  305. package/test/utils/cmr.js +44 -42
  306. package/test/utils/testUtils.js +83 -74
  307. package/test/utils/webex-config.js +18 -18
  308. package/test/utils/webex-test-users.js +53 -50
@@ -13,7 +13,7 @@ import {
13
13
  SHARE_STOPPED_REASON,
14
14
  _CALL_,
15
15
  _LEFT_,
16
- _ID_
16
+ _ID_,
17
17
  } from '../constants';
18
18
  import BEHAVIORAL_METRICS from '../metrics/constants';
19
19
  import ReconnectionError from '../common/errors/reconnection';
@@ -66,7 +66,7 @@ class NeedsRejoinError extends Error {
66
66
  /**
67
67
  * @export
68
68
  * @class ReconnectionManager
69
- */
69
+ */
70
70
  export default class ReconnectionManager {
71
71
  autoRejoinEnabled: any;
72
72
  iceState: any;
@@ -94,7 +94,7 @@ export default class ReconnectionManager {
94
94
  resolve: () => {},
95
95
  timer: undefined,
96
96
  // @ts-ignore
97
- timeoutDuration: meeting.config.reconnection.iceReconnectionTimeout
97
+ timeoutDuration: meeting.config.reconnection.iceReconnectionTimeout,
98
98
  };
99
99
 
100
100
  /**
@@ -102,21 +102,21 @@ export default class ReconnectionManager {
102
102
  * @type {String}
103
103
  * @private
104
104
  * @memberof ReconnectionManager
105
- */
105
+ */
106
106
  this.status = RECONNECTION.STATE.DEFAULT_STATUS;
107
107
  /**
108
108
  * @instance
109
109
  * @type {Number}
110
110
  * @private
111
111
  * @memberof ReconnectionManager
112
- */
112
+ */
113
113
  this.tryCount = RECONNECTION.STATE.DEFAULT_TRY_COUNT;
114
114
  /**
115
115
  * @instance
116
116
  * @type {Object}
117
117
  * @private
118
118
  * @memberof ReconnectionManager
119
- */
119
+ */
120
120
  // TODO : change this logic to not save the meeting instance
121
121
  // It gets complicated when meeting ends on remote side , We have a old meeting instance which is not up to date
122
122
  // @ts-ignore
@@ -137,7 +137,6 @@ export default class ReconnectionManager {
137
137
  // @ts-ignore
138
138
  this.autoRejoinEnabled = meeting.config.reconnection.autoRejoin;
139
139
 
140
-
141
140
  // Make sure reconnection state is in default
142
141
  this.reset();
143
142
  }
@@ -178,7 +177,9 @@ export default class ReconnectionManager {
178
177
  */
179
178
  public waitForIceReconnect() {
180
179
  if (!this.iceState.disconnected) {
181
- LoggerProxy.logger.log('ReconnectionManager:index#waitForIceReconnect --> waiting for ice reconnect');
180
+ LoggerProxy.logger.log(
181
+ 'ReconnectionManager:index#waitForIceReconnect --> waiting for ice reconnect'
182
+ );
182
183
 
183
184
  this.iceState.disconnected = true;
184
185
 
@@ -186,10 +187,11 @@ export default class ReconnectionManager {
186
187
  this.iceState.timer = setTimeout(() => {
187
188
  if (this.iceState.disconnected === false) {
188
189
  resolve();
189
- }
190
- else {
190
+ } else {
191
191
  this.iceState.disconnected = false;
192
- reject(new Error(`ice reconnection did not occur in ${this.iceState.timeoutDuration}ms`));
192
+ reject(
193
+ new Error(`ice reconnection did not occur in ${this.iceState.timeoutDuration}ms`)
194
+ );
193
195
  }
194
196
  }, this.iceState.timeoutDuration);
195
197
 
@@ -237,7 +239,9 @@ export default class ReconnectionManager {
237
239
  return true;
238
240
  }
239
241
 
240
- LoggerProxy.logger.info('ReconnectionManager:index#validate --> Reconnection already in progress.');
242
+ LoggerProxy.logger.info(
243
+ 'ReconnectionManager:index#validate --> Reconnection already in progress.'
244
+ );
241
245
 
242
246
  throw new ReconnectInProgress('Reconnection already in progress.');
243
247
  }
@@ -263,38 +267,48 @@ export default class ReconnectionManager {
263
267
  networkDisconnect?: boolean;
264
268
  networkRetry?: boolean;
265
269
  } = {}) {
266
- LoggerProxy.logger.info(`ReconnectionManager:index#reconnect --> Reconnection start for meeting ${this.meeting.id}.`);
270
+ LoggerProxy.logger.info(
271
+ `ReconnectionManager:index#reconnect --> Reconnection start for meeting ${this.meeting.id}.`
272
+ );
267
273
  // First, validate that we can reconnect, if not, it will throw an error
268
274
  try {
269
275
  this.validate();
270
- }
271
- catch (error) {
272
- LoggerProxy.logger.info('ReconnectionManager:index#reconnect --> Reconnection unable to begin.', error);
276
+ } catch (error) {
277
+ LoggerProxy.logger.info(
278
+ 'ReconnectionManager:index#reconnect --> Reconnection unable to begin.',
279
+ error
280
+ );
273
281
  throw error;
274
282
  }
275
283
 
276
284
  if (!networkRetry) {
277
285
  // Only log START metrics on the initial reconnect
278
- LoggerProxy.logger.info('ReconnectionManager:index#reconnect --> Sending reconnect start metric.');
286
+ LoggerProxy.logger.info(
287
+ 'ReconnectionManager:index#reconnect --> Sending reconnect start metric.'
288
+ );
279
289
  Metrics.postEvent({
280
290
  event: eventType.MEDIA_RECONNECTING,
281
- meeting: this.meeting
291
+ meeting: this.meeting,
282
292
  });
283
293
  }
284
294
 
285
295
  return this.executeReconnection({networkDisconnect})
286
296
  .then(() => {
287
297
  LoggerProxy.logger.info('ReconnectionManager:index#reconnect --> Reconnection successful.');
288
- LoggerProxy.logger.info('ReconnectionManager:index#reconnect --> Sending reconnect success metric.');
298
+ LoggerProxy.logger.info(
299
+ 'ReconnectionManager:index#reconnect --> Sending reconnect success metric.'
300
+ );
289
301
  Metrics.postEvent({
290
302
  event: eventType.MEDIA_RECOVERED,
291
303
  meeting: this.meeting,
292
- data: {recoveredBy: reconnection.RECOVERED_BY_NEW}
304
+ data: {recoveredBy: reconnection.RECOVERED_BY_NEW},
293
305
  });
294
306
  })
295
307
  .catch((reconnectError) => {
296
308
  if (reconnectError instanceof NeedsRetryError) {
297
- LoggerProxy.logger.info('ReconnectionManager:index#reconnect --> Reconnection not successful, retrying.');
309
+ LoggerProxy.logger.info(
310
+ 'ReconnectionManager:index#reconnect --> Reconnection not successful, retrying.'
311
+ );
298
312
  // Reset our reconnect status since we are looping back to the beginning
299
313
  this.status = RECONNECTION.STATE.DEFAULT_STATUS;
300
314
 
@@ -303,8 +317,13 @@ export default class ReconnectionManager {
303
317
  }
304
318
 
305
319
  // Reconnect has failed
306
- LoggerProxy.logger.error('ReconnectionManager:index#reconnect --> Reconnection failed.', reconnectError.message);
307
- LoggerProxy.logger.info('ReconnectionManager:index#reconnect --> Sending reconnect abort metric.');
320
+ LoggerProxy.logger.error(
321
+ 'ReconnectionManager:index#reconnect --> Reconnection failed.',
322
+ reconnectError.message
323
+ );
324
+ LoggerProxy.logger.info(
325
+ 'ReconnectionManager:index#reconnect --> Sending reconnect abort metric.'
326
+ );
308
327
 
309
328
  const reconnectMetric = {
310
329
  event: eventType.CALL_ABORTED,
@@ -316,10 +335,10 @@ export default class ReconnectionManager {
316
335
  errorCode: 2008,
317
336
  fatal: true,
318
337
  name: errorObjects.name.mediaEngine,
319
- shownToUser: false
320
- }
321
- ]
322
- }
338
+ shownToUser: false,
339
+ },
340
+ ],
341
+ },
323
342
  };
324
343
 
325
344
  Metrics.postEvent(reconnectMetric);
@@ -331,7 +350,6 @@ export default class ReconnectionManager {
331
350
  }
332
351
  }
333
352
 
334
-
335
353
  throw reconnectError;
336
354
  });
337
355
  }
@@ -344,43 +362,57 @@ export default class ReconnectionManager {
344
362
  * @private
345
363
  * @memberof ReconnectionManager
346
364
  */
347
- private async executeReconnection({ networkDisconnect = false }: { networkDisconnect?: boolean }) {
365
+ private async executeReconnection({networkDisconnect = false}: {networkDisconnect?: boolean}) {
348
366
  this.status = RECONNECTION.STATE.IN_PROGRESS;
349
367
 
350
- LoggerProxy.logger.info('ReconnectionManager:index#executeReconnection --> Attempting to reconnect to meeting.');
368
+ LoggerProxy.logger.info(
369
+ 'ReconnectionManager:index#executeReconnection --> Attempting to reconnect to meeting.'
370
+ );
351
371
 
352
372
  if (networkDisconnect) {
353
373
  try {
354
374
  await this.reconnectMercuryWebSocket();
355
- LoggerProxy.logger.error('ReconnectionManager:index#executeReconnection --> Websocket reconnected.', this.webex.internal.device.url);
356
- }
357
- catch (error) {
358
- LoggerProxy.logger.error('ReconnectionManager:index#executeReconnection --> Unable to reconnect to websocket, giving up.');
375
+ LoggerProxy.logger.error(
376
+ 'ReconnectionManager:index#executeReconnection --> Websocket reconnected.',
377
+ this.webex.internal.device.url
378
+ );
379
+ } catch (error) {
380
+ LoggerProxy.logger.error(
381
+ 'ReconnectionManager:index#executeReconnection --> Unable to reconnect to websocket, giving up.'
382
+ );
359
383
  this.status = RECONNECTION.STATE.FAILURE;
360
- throw (error);
384
+ throw error;
361
385
  }
362
386
  }
363
387
 
364
388
  const wasSharing = this.meeting.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE;
365
389
 
366
390
  try {
367
- LoggerProxy.logger.info('ReconnectionManager:index#executeReconnection --> Updating meeting data from server.');
391
+ LoggerProxy.logger.info(
392
+ 'ReconnectionManager:index#executeReconnection --> Updating meeting data from server.'
393
+ );
368
394
  await this.webex.meetings.syncMeetings();
369
- }
370
- catch (syncError) {
371
- LoggerProxy.logger.info('ReconnectionManager:index#executeReconnection --> Unable to sync meetings, reconnecting.', syncError);
372
- throw (new NeedsRetryError(syncError));
395
+ } catch (syncError) {
396
+ LoggerProxy.logger.info(
397
+ 'ReconnectionManager:index#executeReconnection --> Unable to sync meetings, reconnecting.',
398
+ syncError
399
+ );
400
+ throw new NeedsRetryError(syncError);
373
401
  }
374
402
 
375
403
  // TODO: try to improve this logic as the reconnection manager saves the instance of deleted meeting object
376
404
  // So that on rejoin it known what parametrs it was using
377
405
  if (!this.meeting || !this.webex.meetings.getMeetingByType(_ID_, this.meeting.id)) {
378
- LoggerProxy.logger.info('ReconnectionManager:index#executeReconnection --> Meeting got deleted due to inactivity or ended remotely ');
406
+ LoggerProxy.logger.info(
407
+ 'ReconnectionManager:index#executeReconnection --> Meeting got deleted due to inactivity or ended remotely '
408
+ );
379
409
 
380
410
  throw new Error('Unable to rejoin a meeting already ended or inactive .');
381
411
  }
382
412
 
383
- LoggerProxy.logger.info(`ReconnectionManager:index#executeReconnection --> Current state of meeting is ${this.meeting.state}`);
413
+ LoggerProxy.logger.info(
414
+ `ReconnectionManager:index#executeReconnection --> Current state of meeting is ${this.meeting.state}`
415
+ );
384
416
 
385
417
  // If the meeting state was left, no longer reconnect media
386
418
  if (this.meeting.state === _LEFT_) {
@@ -388,22 +420,25 @@ export default class ReconnectionManager {
388
420
  throw new Error('Unable to rejoin a call in LEFT state.');
389
421
  }
390
422
 
391
- throw (new NeedsRejoinError({wasSharing}));
423
+ throw new NeedsRejoinError({wasSharing});
392
424
  }
393
425
 
394
426
  try {
395
427
  const media = await this.reconnectMedia();
396
428
 
397
- LoggerProxy.logger.log('ReconnectionManager:index#executeReconnection --> Media reestablished');
429
+ LoggerProxy.logger.log(
430
+ 'ReconnectionManager:index#executeReconnection --> Media reestablished'
431
+ );
398
432
  this.status = RECONNECTION.STATE.COMPLETE;
399
433
 
400
434
  return media;
401
- }
402
- catch (error) {
403
- LoggerProxy.logger.error('ReconnectionManager:index#executeReconnection --> Media reestablishment failed');
435
+ } catch (error) {
436
+ LoggerProxy.logger.error(
437
+ 'ReconnectionManager:index#executeReconnection --> Media reestablishment failed'
438
+ );
404
439
  this.status = RECONNECTION.STATE.FAILURE;
405
440
 
406
- throw (error);
441
+ throw error;
407
442
  }
408
443
  }
409
444
 
@@ -414,9 +449,11 @@ export default class ReconnectionManager {
414
449
  * @param {boolean} wasSharing
415
450
  * @returns {Promise}
416
451
  */
417
- async rejoinMeeting(wasSharing: boolean = false) {
452
+ async rejoinMeeting(wasSharing = false) {
418
453
  try {
419
- LoggerProxy.logger.info('ReconnectionManager:index#rejoinMeeting --> attemping meeting rejoin');
454
+ LoggerProxy.logger.info(
455
+ 'ReconnectionManager:index#rejoinMeeting --> attemping meeting rejoin'
456
+ );
420
457
  const previousCorrelationId = this.meeting.correlationId;
421
458
 
422
459
  await this.meeting.join({rejoin: true});
@@ -436,31 +473,32 @@ export default class ReconnectionManager {
436
473
  this.meeting,
437
474
  {
438
475
  file: 'reconnection-manager/index',
439
- function: 'rejoinMeeting'
476
+ function: 'rejoinMeeting',
440
477
  },
441
478
  EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL,
442
479
  {
443
- reason: SHARE_STOPPED_REASON.MEETING_REJOIN
480
+ reason: SHARE_STOPPED_REASON.MEETING_REJOIN,
444
481
  }
445
482
  );
446
483
  }
447
- }
448
- catch (joinError) {
484
+ } catch (joinError) {
449
485
  this.rejoinAttempts += 1;
450
486
  if (this.rejoinAttempts <= this.maxRejoinAttempts) {
451
- LoggerProxy.logger.info(`ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting, attempt #${this.rejoinAttempts}, retrying.`, joinError);
487
+ LoggerProxy.logger.info(
488
+ `ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting, attempt #${this.rejoinAttempts}, retrying.`,
489
+ joinError
490
+ );
452
491
  this.rejoinMeeting();
453
- }
454
- else {
455
- LoggerProxy.logger.error('ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting after max attempts.', joinError);
456
- Metrics.sendBehavioralMetric(
457
- BEHAVIORAL_METRICS.MEETING_MAX_REJOIN_FAILURE,
458
- {
459
- locus_id: this.meeting.locusUrl.split('/').pop(),
460
- reason: joinError.message,
461
- stack: joinError.stack
462
- }
492
+ } else {
493
+ LoggerProxy.logger.error(
494
+ 'ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting after max attempts.',
495
+ joinError
463
496
  );
497
+ Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_MAX_REJOIN_FAILURE, {
498
+ locus_id: this.meeting.locusUrl.split('/').pop(),
499
+ reason: joinError.message,
500
+ stack: joinError.stack,
501
+ });
464
502
  this.status = RECONNECTION.STATE.FAILURE;
465
503
  throw joinError;
466
504
  }
@@ -468,9 +506,11 @@ export default class ReconnectionManager {
468
506
 
469
507
  try {
470
508
  await this.reconnectMedia();
471
- }
472
- catch (mediaError) {
473
- LoggerProxy.logger.error('ReconnectionManager:index#rejoinMeeting --> Unable to reestablish media after rejoining.', mediaError);
509
+ } catch (mediaError) {
510
+ LoggerProxy.logger.error(
511
+ 'ReconnectionManager:index#rejoinMeeting --> Unable to reestablish media after rejoining.',
512
+ mediaError
513
+ );
474
514
  throw mediaError;
475
515
  }
476
516
  }
@@ -481,26 +521,31 @@ export default class ReconnectionManager {
481
521
  * @memberof ReconnectionManager
482
522
  */
483
523
  reconnectMedia() {
484
- LoggerProxy.logger.log('ReconnectionManager:index#reconnectMedia --> Begin reestablishment of media');
524
+ LoggerProxy.logger.log(
525
+ 'ReconnectionManager:index#reconnectMedia --> Begin reestablishment of media'
526
+ );
485
527
 
486
528
  return ReconnectionManager.setupPeerConnection(this.meeting)
487
- .then(() => Media.attachMedia(this.meeting.mediaProperties, {
488
- meetingId: this.meeting.id,
489
- remoteQualityLevel: this.meeting.mediaProperties.remoteQualityLevel,
490
- enableRtx: this.meeting.config.enableRtx,
491
- enableExtmap: this.meeting.config.enableExtmap
492
- }))
529
+ .then(() =>
530
+ Media.attachMedia(this.meeting.mediaProperties, {
531
+ meetingId: this.meeting.id,
532
+ remoteQualityLevel: this.meeting.mediaProperties.remoteQualityLevel,
533
+ enableRtx: this.meeting.config.enableRtx,
534
+ enableExtmap: this.meeting.config.enableExtmap,
535
+ })
536
+ )
493
537
  .then((peerConnection) => this.meeting.setRemoteStream(peerConnection))
494
538
  .then(() => {
495
- LoggerProxy.logger.log('ReconnectionManager:index#reconnectMedia --> Sending ROAP media request');
496
-
497
- return this.meeting.roap
498
- .sendRoapMediaRequest({
499
- sdp: this.meeting.mediaProperties.peerConnection.sdp,
500
- roapSeq: this.meeting.roapSeq,
501
- meeting: this.meeting,
502
- reconnect: true
503
- });
539
+ LoggerProxy.logger.log(
540
+ 'ReconnectionManager:index#reconnectMedia --> Sending ROAP media request'
541
+ );
542
+
543
+ return this.meeting.roap.sendRoapMediaRequest({
544
+ sdp: this.meeting.mediaProperties.peerConnection.sdp,
545
+ roapSeq: this.meeting.roapSeq,
546
+ meeting: this.meeting,
547
+ reconnect: true,
548
+ });
504
549
  });
505
550
  }
506
551
 
@@ -511,30 +556,44 @@ export default class ReconnectionManager {
511
556
  * @memberof ReconnectionManager
512
557
  */
513
558
  private async reconnectMercuryWebSocket() {
514
- LoggerProxy.logger.info('ReconnectionManager:index#reconnectMercuryWebSocket --> Reconnecting websocket.');
559
+ LoggerProxy.logger.info(
560
+ 'ReconnectionManager:index#reconnectMercuryWebSocket --> Reconnecting websocket.'
561
+ );
515
562
  // First, attempt to disconnect if we think we are already connected.
516
563
  if (this.webex.internal.mercury.connected) {
517
- LoggerProxy.logger.info('ReconnectionManager:index#reconnectMercuryWebSocket --> Disconnecting existing websocket.');
564
+ LoggerProxy.logger.info(
565
+ 'ReconnectionManager:index#reconnectMercuryWebSocket --> Disconnecting existing websocket.'
566
+ );
518
567
  try {
519
568
  await this.webex.internal.mercury.disconnect();
520
- LoggerProxy.logger.info('ReconnectionManager:index#reconnectMercuryWebSocket --> Websocket disconnected successfully.');
521
- }
522
- catch (disconnectError) {
569
+ LoggerProxy.logger.info(
570
+ 'ReconnectionManager:index#reconnectMercuryWebSocket --> Websocket disconnected successfully.'
571
+ );
572
+ } catch (disconnectError) {
523
573
  // If we can't disconnect, the sdk is in such a bad state that reconnecting is not going to happen.
524
- LoggerProxy.logger.error('ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to disconnect from websocket, giving up.', disconnectError);
574
+ LoggerProxy.logger.error(
575
+ 'ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to disconnect from websocket, giving up.',
576
+ disconnectError
577
+ );
525
578
  throw disconnectError;
526
579
  }
527
580
  }
528
581
 
529
582
  try {
530
- LoggerProxy.logger.info('ReconnectionManager:index#reconnectMercuryWebSocket --> Connecting websocket.');
583
+ LoggerProxy.logger.info(
584
+ 'ReconnectionManager:index#reconnectMercuryWebSocket --> Connecting websocket.'
585
+ );
531
586
  await this.webex.internal.mercury.connect();
532
- LoggerProxy.logger.info('ReconnectionManager:index#reconnectMercuryWebSocket --> Websocket connected successfully.');
533
- }
534
- catch (connectError) {
535
- LoggerProxy.logger.error('ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to connect to websocket, giving up.', connectError);
536
-
537
- throw (connectError);
587
+ LoggerProxy.logger.info(
588
+ 'ReconnectionManager:index#reconnectMercuryWebSocket --> Websocket connected successfully.'
589
+ );
590
+ } catch (connectError) {
591
+ LoggerProxy.logger.error(
592
+ 'ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to connect to websocket, giving up.',
593
+ connectError
594
+ );
595
+
596
+ throw connectError;
538
597
  }
539
598
  }
540
599
 
@@ -545,7 +604,9 @@ export default class ReconnectionManager {
545
604
  * @memberof ReconnectionManager
546
605
  */
547
606
  private static async setupPeerConnection(meeting: Meeting) {
548
- LoggerProxy.logger.log('ReconnectionManager:index#setupPeerConnection --> Begin resetting peer connection');
607
+ LoggerProxy.logger.log(
608
+ 'ReconnectionManager:index#setupPeerConnection --> Begin resetting peer connection'
609
+ );
549
610
  // close pcs, unset to null and create a new one with out closing any streams
550
611
  PeerConnectionManager.close(meeting.mediaProperties.peerConnection);
551
612
  meeting.mediaProperties.unsetPeerConnection();
@@ -1,4 +1,4 @@
1
- import RoapStateMachine from '../roap/state';
1
+ import RoapStateMachine from './state';
2
2
 
3
3
  /* eslint-disable */
4
4
  const RoapCollection = {
@@ -27,7 +27,6 @@ const RoapCollection = {
27
27
  finished: false,
28
28
  };
29
29
  session.activeSequences += 1;
30
-
31
30
  }
32
31
  return session[seqId];
33
32
  },
@@ -57,8 +56,7 @@ const RoapCollection = {
57
56
  seq.finished = true;
58
57
  session.activeSequences -= 1;
59
58
  }
60
- }
61
-
59
+ },
62
60
  };
63
61
 
64
62
  export default RoapCollection;