@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,8 +13,13 @@ import {MEETING_ERRORS} from '../constants';
13
13
  import BrowserDetection from '../common/browser-detection';
14
14
 
15
15
  import {
16
- error, eventType, errorCodes as ERROR_CODE, OS_NAME, UNKNOWN, CLIENT_NAME,
17
- mediaType
16
+ error,
17
+ eventType,
18
+ errorCodes as ERROR_CODE,
19
+ OS_NAME,
20
+ UNKNOWN,
21
+ CLIENT_NAME,
22
+ mediaType,
18
23
  } from './config';
19
24
 
20
25
  const OSMap = {
@@ -24,15 +29,10 @@ const OSMap = {
24
29
  Windows: OS_NAME.WINDOWS,
25
30
  iOS: OS_NAME.IOS,
26
31
  Android: OS_NAME.ANDROID,
27
- Linux: OS_NAME.LINUX
32
+ Linux: OS_NAME.LINUX,
28
33
  };
29
34
 
30
- const {
31
- getOSName,
32
- getOSVersion,
33
- getBrowserName,
34
- getBrowserVersion
35
- } = BrowserDetection();
35
+ const {getOSName, getOSVersion, getBrowserName, getBrowserVersion} = BrowserDetection();
36
36
 
37
37
  // Apply a CIDR /28 format to the IPV4 and /96 to the IPV6 addresses
38
38
  // For reference : https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing
@@ -85,33 +85,33 @@ class Metrics {
85
85
  webex: any;
86
86
 
87
87
  /**
88
- * Create Metrics Object
89
- * @constructor
90
- * @public
91
- * @memberof Meetings
92
- */
88
+ * Create Metrics Object
89
+ * @constructor
90
+ * @public
91
+ * @memberof Meetings
92
+ */
93
93
  constructor() {
94
94
  if (!Metrics.instance) {
95
- /**
96
- * @instance
97
- * @type {Array}
98
- * @private
99
- * @memberof Metrics
100
- */
95
+ /**
96
+ * @instance
97
+ * @type {Array}
98
+ * @private
99
+ * @memberof Metrics
100
+ */
101
101
  this._events = [];
102
102
  /**
103
- * @instance
104
- * @type {MeetingCollection}
105
- * @private
106
- * @memberof Metrics
107
- */
103
+ * @instance
104
+ * @type {MeetingCollection}
105
+ * @private
106
+ * @memberof Metrics
107
+ */
108
108
  this.meetingCollection = null;
109
109
  /**
110
- * @instance
111
- * @type {MeetingCollection}
112
- * @private
113
- * @memberof Metrics
114
- */
110
+ * @instance
111
+ * @type {MeetingCollection}
112
+ * @private
113
+ * @memberof Metrics
114
+ */
115
115
  this.keys = Object.values(eventType);
116
116
  /**
117
117
  * @instance
@@ -122,6 +122,7 @@ class Metrics {
122
122
  Metrics.instance = this;
123
123
  }
124
124
 
125
+ // eslint-disable-next-line no-constructor-return
125
126
  return Metrics.instance;
126
127
  }
127
128
 
@@ -147,12 +148,14 @@ class Metrics {
147
148
  * @param {object} options.event
148
149
  * @returns {object} null
149
150
  */
150
- postEvent(options: { meeting?: any; meetingId?: string; data?: object; event?: any } | any) {
151
+ postEvent(options: {meeting?: any; meetingId?: string; data?: object; event?: any} | any) {
151
152
  const {meetingId, data = {}, event} = options;
152
153
  let {meeting} = options;
153
154
 
154
155
  if (this.keys.indexOf(event) === -1) {
155
- LoggerProxy.logger.error(`Metrics:index#postEvent --> Event ${event} doesn't exist in dictionary`);
156
+ LoggerProxy.logger.error(
157
+ `Metrics:index#postEvent --> Event ${event} doesn't exist in dictionary`
158
+ );
156
159
  }
157
160
 
158
161
  if (!meeting && meetingId) {
@@ -169,25 +172,25 @@ class Metrics {
169
172
  if (event === eventType.MEDIA_QUALITY) {
170
173
  data.event = event;
171
174
  meeting.sendMediaQualityAnalyzerMetrics(data);
172
- }
173
- else {
175
+ } else {
174
176
  meeting.callEvents.push(event);
175
177
  data.event = event;
176
178
  meeting.sendCallAnalyzerMetrics(data);
177
179
  }
178
- }
179
-
180
- else {
181
- LoggerProxy.logger.info(`Metrics:index#postEvent --> Event received for meetingId:${meetingId}, but meeting not found in collection.`);
180
+ } else {
181
+ LoggerProxy.logger.info(
182
+ `Metrics:index#postEvent --> Event received for meetingId:${meetingId}, but meeting not found in collection.`
183
+ );
182
184
  }
183
185
  }
184
186
 
185
187
  /**
186
188
  * Docs for Call analyzer metrics
187
- * https://sqbu-github.cisco.com/WebExSquared/call-analyzer/wiki
188
- * https://sqbu-github.cisco.com/WebExSquared/event-dictionary/blob/master/diagnostic-events.raml
189
- */
189
+ * https://sqbu-github.cisco.com/WebExSquared/call-analyzer/wiki
190
+ * https://sqbu-github.cisco.com/WebExSquared/event-dictionary/blob/master/diagnostic-events.raml
191
+ */
190
192
 
193
+ // eslint-disable-next-line @typescript-eslint/no-shadow
191
194
  initPayload(eventType, identifiers, options) {
192
195
  const payload: any = {
193
196
  eventId: uuid.v4(),
@@ -204,19 +207,19 @@ class Metrics {
204
207
  subClientType: options.subClientType,
205
208
  os: this.getOsName(),
206
209
  browser: getBrowserName(),
207
- browserVersion: getBrowserVersion()
208
- }
210
+ browserVersion: getBrowserVersion(),
211
+ },
209
212
  },
210
213
  originTime: {
211
- triggered: new Date().toISOString()
214
+ triggered: new Date().toISOString(),
212
215
  },
213
216
  senderCountryCode: this.webex.meetings.geoHintInfo?.countryCode,
214
217
  event: {
215
218
  name: eventType,
216
219
  canProceed: true,
217
220
  identifiers,
218
- eventData: {webClientDomain: window.location.hostname}
219
- }
221
+ eventData: {webClientDomain: window.location.hostname},
222
+ },
220
223
  };
221
224
 
222
225
  // TODO: more options should be checked and some of them should be mandatory in certain conditions
@@ -279,16 +282,19 @@ class Metrics {
279
282
  * @memberof Metrics
280
283
  */
281
284
  public initMediaPayload(
285
+ // eslint-disable-next-line @typescript-eslint/no-shadow
282
286
  eventType: string,
283
287
  identifiers: {
284
288
  correlationId: string;
285
289
  locusUrl: string;
286
290
  locusId: string;
287
291
  },
288
- options: {
289
- intervalData: object;
290
- clientType: string;
291
- } | any = {}
292
+ options:
293
+ | {
294
+ intervalData: object;
295
+ clientType: string;
296
+ }
297
+ | any = {}
292
298
  ) {
293
299
  const {audioSetupDelay, videoSetupDelay, joinTimes} = options;
294
300
 
@@ -309,11 +315,11 @@ class Metrics {
309
315
  osVersion: getOSVersion() || UNKNOWN,
310
316
  subClientType: options.subClientType,
311
317
  browser: getBrowserName(),
312
- browserVersion: getBrowserVersion()
313
- }
318
+ browserVersion: getBrowserVersion(),
319
+ },
314
320
  },
315
321
  originTime: {
316
- triggered: new Date().toISOString()
322
+ triggered: new Date().toISOString(),
317
323
  },
318
324
  senderCountryCode: this.webex.meetings.geoHintInfo?.countryCode,
319
325
  event: {
@@ -323,16 +329,16 @@ class Metrics {
323
329
  intervals: [options.intervalData],
324
330
  joinTimes,
325
331
  eventData: {
326
- webClientDomain: window.location.hostname
332
+ webClientDomain: window.location.hostname,
327
333
  },
328
334
  sourceMetadata: {
329
335
  applicationSoftwareType: CLIENT_NAME,
330
336
  applicationSoftwareVersion: this.webex.version,
331
337
  mediaEngineSoftwareType: getBrowserName() || 'browser',
332
338
  mediaEngineSoftwareVersion: getOSVersion() || UNKNOWN,
333
- startTime: new Date().toISOString()
334
- }
335
- }
339
+ startTime: new Date().toISOString(),
340
+ },
341
+ },
336
342
  };
337
343
 
338
344
  return payload;
@@ -353,8 +359,7 @@ class Metrics {
353
359
 
354
360
  if (err && err.statusCode && err.statusCode >= 500) {
355
361
  errorCode = 1003;
356
- }
357
- else if (err && err.body && err.body.errorCode) {
362
+ } else if (err && err.body && err.body.errorCode) {
358
363
  // locus error codes: https://sqbu-github.cisco.com/WebExSquared/locus/blob/master/server/src/main/resources/locus-error-codes.properties
359
364
  switch (ERROR_CODE[err.body.errorCode]) {
360
365
  case MEETING_ERRORS.FREE_USER_MAX_PARTICIPANTS_EXCEEDED:
@@ -453,17 +458,13 @@ class Metrics {
453
458
  default:
454
459
  errorCode = 4008;
455
460
  }
456
- }
457
- else {
461
+ } else {
458
462
  errorCode = 4008;
459
463
  }
460
464
 
461
- return this.generateErrorPayload(
462
- errorCode, showToUser, error.name.LOCUS_RESPONSE, err
463
- );
465
+ return this.generateErrorPayload(errorCode, showToUser, error.name.LOCUS_RESPONSE, err);
464
466
  }
465
467
 
466
-
467
468
  generateErrorPayload(errorCode, shownToUser, name, err) {
468
469
  if (error.errors[errorCode]) {
469
470
  const errorPayload: any = {
@@ -472,7 +473,7 @@ class Metrics {
472
473
  errorDescription: error.errors[errorCode][0],
473
474
  errorCode,
474
475
  fatal: !includes(error.notFatalErrorList, errorCode),
475
- name: name || error.name.OTHER
476
+ name: name || error.name.OTHER,
476
477
  };
477
478
 
478
479
  if (err && err.body) {
@@ -499,8 +500,14 @@ class Metrics {
499
500
  let browserInfo;
500
501
  const clientInfo = util.format('client=%s', `${this.webex.meetings?.metrics?.clientName}`);
501
502
 
502
- if (['chrome', 'firefox', 'msie', 'msedge', 'safari'].indexOf(getBrowserName().toLowerCase()) !== -1) {
503
- browserInfo = util.format('browser=%s', `${getBrowserName().toLowerCase()}/${getBrowserVersion().split('.')[0]}`);
503
+ if (
504
+ ['chrome', 'firefox', 'msie', 'msedge', 'safari'].indexOf(getBrowserName().toLowerCase()) !==
505
+ -1
506
+ ) {
507
+ browserInfo = util.format(
508
+ 'browser=%s',
509
+ `${getBrowserName().toLowerCase()}/${getBrowserVersion().split('.')[0]}`
510
+ );
504
511
  }
505
512
  const osInfo = util.format('os=%s', `${getOSName()}/${getOSVersion().split('.')[0]}`);
506
513
 
@@ -508,12 +515,18 @@ class Metrics {
508
515
  userAgentOption = `(${browserInfo}`;
509
516
  }
510
517
  if (osInfo) {
511
- userAgentOption = userAgentOption ? `${userAgentOption}; ${clientInfo}; ${osInfo}` : `${clientInfo}; (${osInfo}`;
518
+ userAgentOption = userAgentOption
519
+ ? `${userAgentOption}; ${clientInfo}; ${osInfo}`
520
+ : `${clientInfo}; (${osInfo}`;
512
521
  }
513
522
  if (userAgentOption) {
514
523
  userAgentOption += ')';
515
524
 
516
- return util.format('webex-js-sdk/%s %s', `${process.env.NODE_ENV}-${this.webex.version}`, userAgentOption);
525
+ return util.format(
526
+ 'webex-js-sdk/%s %s',
527
+ `${process.env.NODE_ENV}-${this.webex.version}`,
528
+ userAgentOption
529
+ );
517
530
  }
518
531
 
519
532
  return util.format('webex-js-sdk/%s', `${process.env.NODE_ENV}-${this.webex.version}`);
@@ -538,7 +551,7 @@ class Metrics {
538
551
  this.webex.internal.metrics.submitClientMetrics(metricName, {
539
552
  type: this.webex.config.metrics.type,
540
553
  fields: metricFields,
541
- tags: metricTags
554
+ tags: metricTags,
542
555
  });
543
556
  }
544
557
  }
@@ -1,16 +1,15 @@
1
1
  import EventsScope from '../common/events/events-scope';
2
2
  import {EVENT_TRIGGERS, STATS} from '../constants';
3
3
 
4
-
5
4
  /**
6
- * Meeting - network quality event
7
- * Emitted on each interval of retrieving stats Analyzer data
8
- * @event network:quality
9
- * @type {Object}
10
- * @property {string} mediaType {video|audio}
11
- * @property {number} networkQualityScore - value determined in determineUplinkNetworkQuality
12
- * @memberof NetworkQualityMonitor
13
- */
5
+ * Meeting - network quality event
6
+ * Emitted on each interval of retrieving stats Analyzer data
7
+ * @event network:quality
8
+ * @type {Object}
9
+ * @property {string} mediaType {video|audio}
10
+ * @property {number} networkQualityScore - value determined in determineUplinkNetworkQuality
11
+ * @memberof NetworkQualityMonitor
12
+ */
14
13
  /**
15
14
  * NetworkQualityMonitor class that will emit events based on detected quality
16
15
  *
@@ -42,19 +41,19 @@ export default class NetworkQualityMonitor extends EventsScope {
42
41
  this.indicatorTypes = Object.freeze({
43
42
  PACKETLOSS: 'packetLoss',
44
43
  LATENCY: 'latency',
45
- JITTER: 'jitter'
44
+ JITTER: 'jitter',
46
45
  });
47
46
  this.frequencyTypes = Object.freeze({
48
47
  UPLINK: 'uplink',
49
- DOWNLINK: 'downlink'
48
+ DOWNLINK: 'downlink',
50
49
  });
51
50
  this.networkQualityScore = 1;
52
51
  this.networkQualityStatus = {
53
52
  [this.frequencyTypes.UPLINK]: {
54
53
  [STATS.VIDEO_CORRELATE]: {},
55
54
  [STATS.AUDIO_CORRELATE]: {},
56
- [STATS.SHARE_CORRELATE]: {}
57
- }
55
+ [STATS.SHARE_CORRELATE]: {},
56
+ },
58
57
  };
59
58
  this.mediaType = null;
60
59
  }
@@ -69,12 +68,12 @@ export default class NetworkQualityMonitor extends EventsScope {
69
68
  this.emit(
70
69
  {
71
70
  file: 'networkQualityMonitor',
72
- function: 'emitNetworkQuality'
71
+ function: 'emitNetworkQuality',
73
72
  },
74
73
  EVENT_TRIGGERS.NETWORK_QUALITY,
75
74
  {
76
75
  mediaType: this.mediaType,
77
- networkQualityScore: this.networkQualityScore
76
+ networkQualityScore: this.networkQualityScore,
78
77
  }
79
78
  );
80
79
  }
@@ -92,7 +91,6 @@ export default class NetworkQualityMonitor extends EventsScope {
92
91
  this.mediaType = null;
93
92
  }
94
93
 
95
-
96
94
  /**
97
95
  * filter data to determine uplink network quality, invoked on same interval as stats analyzer remote-inbout-rtp
98
96
  * @param {Object} configObj
@@ -127,8 +125,7 @@ export default class NetworkQualityMonitor extends EventsScope {
127
125
  * @returns {boolean}
128
126
  */
129
127
  const determinePacketLoss = () => {
130
- if (currentPacketLossRatio >
131
- this.config.videoPacketLossRatioThreshold) {
128
+ if (currentPacketLossRatio > this.config.videoPacketLossRatioThreshold) {
132
129
  this.networkQualityScore = 0;
133
130
 
134
131
  return false;
@@ -172,7 +169,8 @@ export default class NetworkQualityMonitor extends EventsScope {
172
169
  * @param {(number|undefined)} value
173
170
  * @returns {(number|null)}
174
171
  */
175
- const determineIfUndefined = (value: number | undefined) => (typeof value === 'undefined' ? null : value);
172
+ const determineIfUndefined = (value: number | undefined) =>
173
+ typeof value === 'undefined' ? null : value;
176
174
 
177
175
  /**
178
176
  * Values for some browsers specifically Safari will be undefined we explicitly set to null
@@ -182,20 +180,19 @@ export default class NetworkQualityMonitor extends EventsScope {
182
180
  // PACKET LOSS
183
181
  this.networkQualityStatus[UPLINK][mediaType][PACKETLOSS] = {
184
182
  acceptable: determinePacketLoss(),
185
- value: determineIfUndefined(currentPacketLossRatio)
183
+ value: determineIfUndefined(currentPacketLossRatio),
186
184
  };
187
185
 
188
-
189
186
  // LATENCY measured in Round trip time
190
187
  this.networkQualityStatus[UPLINK][mediaType][LATENCY] = {
191
188
  acceptable: determineLatency(),
192
- value: determineIfUndefined(remoteRtpResults.roundTripTime)
189
+ value: determineIfUndefined(remoteRtpResults.roundTripTime),
193
190
  };
194
191
 
195
192
  // JITTER
196
193
  this.networkQualityStatus[UPLINK][mediaType][JITTER] = {
197
194
  acceptable: deterMineJitter(),
198
- value: determineIfUndefined(remoteRtpResults.jitter)
195
+ value: determineIfUndefined(remoteRtpResults.jitter),
199
196
  };
200
197
 
201
198
  this.updateNetworkQualityStatus();