@webex/plugin-meetings 3.0.0-test.1 → 3.1.0

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 (431) hide show
  1. package/.eslintrc.js +6 -0
  2. package/babel.config.js +3 -0
  3. package/dist/annotation/constants.js +12 -20
  4. package/dist/annotation/constants.js.map +1 -1
  5. package/dist/annotation/index.js +25 -10
  6. package/dist/annotation/index.js.map +1 -1
  7. package/dist/breakouts/breakout.js +2 -3
  8. package/dist/breakouts/breakout.js.map +1 -1
  9. package/dist/breakouts/collection.js +1 -2
  10. package/dist/breakouts/collection.js.map +1 -1
  11. package/dist/breakouts/edit-lock-error.js +1 -2
  12. package/dist/breakouts/edit-lock-error.js.map +1 -1
  13. package/dist/breakouts/events.js +1 -2
  14. package/dist/breakouts/events.js.map +1 -1
  15. package/dist/breakouts/index.js +13 -14
  16. package/dist/breakouts/index.js.map +1 -1
  17. package/dist/breakouts/request.js +1 -2
  18. package/dist/breakouts/request.js.map +1 -1
  19. package/dist/breakouts/utils.js +3 -6
  20. package/dist/breakouts/utils.js.map +1 -1
  21. package/dist/common/browser-detection.js +2 -3
  22. package/dist/common/browser-detection.js.map +1 -1
  23. package/dist/common/collection.js +3 -4
  24. package/dist/common/collection.js.map +1 -1
  25. package/dist/common/config.js +1 -2
  26. package/dist/common/config.js.map +1 -1
  27. package/dist/common/errors/captcha-error.js +1 -2
  28. package/dist/common/errors/captcha-error.js.map +1 -1
  29. package/dist/common/errors/intent-to-join.js +1 -2
  30. package/dist/common/errors/intent-to-join.js.map +1 -1
  31. package/dist/common/errors/join-meeting.js +1 -2
  32. package/dist/common/errors/join-meeting.js.map +1 -1
  33. package/dist/common/errors/media.js +1 -2
  34. package/dist/common/errors/media.js.map +1 -1
  35. package/dist/common/errors/no-meeting-info.js +1 -2
  36. package/dist/common/errors/no-meeting-info.js.map +1 -1
  37. package/dist/common/errors/parameter.js +3 -4
  38. package/dist/common/errors/parameter.js.map +1 -1
  39. package/dist/common/errors/password-error.js +1 -2
  40. package/dist/common/errors/password-error.js.map +1 -1
  41. package/dist/common/errors/permission.js +1 -2
  42. package/dist/common/errors/permission.js.map +1 -1
  43. package/dist/common/errors/reclaim-host-role-errors.js +6 -10
  44. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -1
  45. package/dist/common/errors/reconnection-in-progress.js +1 -2
  46. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  47. package/dist/common/errors/reconnection.js +1 -2
  48. package/dist/common/errors/reconnection.js.map +1 -1
  49. package/dist/common/errors/stats.js +1 -2
  50. package/dist/common/errors/stats.js.map +1 -1
  51. package/dist/common/errors/webex-errors.js +14 -15
  52. package/dist/common/errors/webex-errors.js.map +1 -1
  53. package/dist/common/errors/webex-meetings-error.js +1 -2
  54. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  55. package/dist/common/events/events-scope.js +1 -2
  56. package/dist/common/events/events-scope.js.map +1 -1
  57. package/dist/common/events/events.js +1 -2
  58. package/dist/common/events/events.js.map +1 -1
  59. package/dist/common/events/trigger-proxy.js +1 -2
  60. package/dist/common/events/trigger-proxy.js.map +1 -1
  61. package/dist/common/events/util.js +1 -2
  62. package/dist/common/events/util.js.map +1 -1
  63. package/dist/common/logs/logger-config.js +1 -2
  64. package/dist/common/logs/logger-config.js.map +1 -1
  65. package/dist/common/logs/logger-proxy.js +1 -2
  66. package/dist/common/logs/logger-proxy.js.map +1 -1
  67. package/dist/{types/common → common}/logs/request.d.ts +1 -1
  68. package/dist/common/logs/request.js +3 -4
  69. package/dist/common/logs/request.js.map +1 -1
  70. package/dist/common/queue.js +2 -4
  71. package/dist/common/queue.js.map +1 -1
  72. package/dist/{types/config.d.ts → config.d.ts} +1 -0
  73. package/dist/config.js +4 -3
  74. package/dist/config.js.map +1 -1
  75. package/dist/{types/constants.d.ts → constants.d.ts} +10 -5
  76. package/dist/constants.js +207 -380
  77. package/dist/constants.js.map +1 -1
  78. package/dist/controls-options-manager/constants.js +3 -6
  79. package/dist/controls-options-manager/constants.js.map +1 -1
  80. package/dist/controls-options-manager/enums.js +7 -10
  81. package/dist/controls-options-manager/enums.js.map +1 -1
  82. package/dist/controls-options-manager/index.js +27 -32
  83. package/dist/controls-options-manager/index.js.map +1 -1
  84. package/dist/controls-options-manager/util.js +1 -2
  85. package/dist/controls-options-manager/util.js.map +1 -1
  86. package/dist/index.js +3 -4
  87. package/dist/index.js.map +1 -1
  88. package/dist/interceptors/index.js.map +1 -1
  89. package/dist/interceptors/locusRetry.js +4 -3
  90. package/dist/interceptors/locusRetry.js.map +1 -1
  91. package/dist/interpretation/collection.js +1 -2
  92. package/dist/interpretation/collection.js.map +1 -1
  93. package/dist/interpretation/index.js +4 -5
  94. package/dist/interpretation/index.js.map +1 -1
  95. package/dist/interpretation/siLanguage.js +2 -3
  96. package/dist/interpretation/siLanguage.js.map +1 -1
  97. package/dist/locus-info/controlsUtils.js +12 -13
  98. package/dist/locus-info/controlsUtils.js.map +1 -1
  99. package/dist/locus-info/embeddedAppsUtils.js +3 -4
  100. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  101. package/dist/locus-info/fullState.js +1 -2
  102. package/dist/locus-info/fullState.js.map +1 -1
  103. package/dist/locus-info/hostUtils.js +1 -2
  104. package/dist/locus-info/hostUtils.js.map +1 -1
  105. package/dist/locus-info/index.js +23 -27
  106. package/dist/locus-info/index.js.map +1 -1
  107. package/dist/locus-info/infoUtils.js +3 -4
  108. package/dist/locus-info/infoUtils.js.map +1 -1
  109. package/dist/locus-info/mediaSharesUtils.js +16 -3
  110. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  111. package/dist/locus-info/parser.js +6 -10
  112. package/dist/locus-info/parser.js.map +1 -1
  113. package/dist/locus-info/selfUtils.js +12 -6
  114. package/dist/locus-info/selfUtils.js.map +1 -1
  115. package/dist/media/MediaConnectionAwaiter.d.ts +61 -0
  116. package/dist/media/MediaConnectionAwaiter.js +163 -0
  117. package/dist/media/MediaConnectionAwaiter.js.map +1 -0
  118. package/dist/media/index.js +9 -5
  119. package/dist/media/index.js.map +1 -1
  120. package/dist/media/properties.js +7 -28
  121. package/dist/media/properties.js.map +1 -1
  122. package/dist/media/util.js +1 -2
  123. package/dist/media/util.js.map +1 -1
  124. package/dist/mediaQualityMetrics/config.js +9 -18
  125. package/dist/mediaQualityMetrics/config.js.map +1 -1
  126. package/dist/meeting/in-meeting-actions.js +14 -2
  127. package/dist/meeting/in-meeting-actions.js.map +1 -1
  128. package/dist/{types/meeting → meeting}/index.d.ts +71 -16
  129. package/dist/meeting/index.js +1411 -1036
  130. package/dist/meeting/index.js.map +1 -1
  131. package/dist/meeting/locusMediaRequest.js +4 -5
  132. package/dist/meeting/locusMediaRequest.js.map +1 -1
  133. package/dist/meeting/muteState.js +2 -4
  134. package/dist/meeting/muteState.js.map +1 -1
  135. package/dist/{types/meeting → meeting}/request.d.ts +3 -0
  136. package/dist/meeting/request.js +45 -36
  137. package/dist/meeting/request.js.map +1 -1
  138. package/dist/meeting/state.js +1 -2
  139. package/dist/meeting/state.js.map +1 -1
  140. package/dist/{types/meeting → meeting}/util.d.ts +1 -0
  141. package/dist/meeting/util.js +13 -10
  142. package/dist/meeting/util.js.map +1 -1
  143. package/dist/meeting/voicea-meeting.d.ts +16 -0
  144. package/dist/meeting/voicea-meeting.js +169 -0
  145. package/dist/meeting/voicea-meeting.js.map +1 -0
  146. package/dist/meeting-info/collection.js +3 -4
  147. package/dist/meeting-info/collection.js.map +1 -1
  148. package/dist/meeting-info/index.js +5 -4
  149. package/dist/meeting-info/index.js.map +1 -1
  150. package/dist/meeting-info/meeting-info-v2.js +27 -29
  151. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  152. package/dist/meeting-info/request.js +1 -2
  153. package/dist/meeting-info/request.js.map +1 -1
  154. package/dist/meeting-info/util.js +8 -8
  155. package/dist/meeting-info/util.js.map +1 -1
  156. package/dist/meeting-info/utilv2.js +15 -9
  157. package/dist/meeting-info/utilv2.js.map +1 -1
  158. package/dist/meetings/collection.js +5 -6
  159. package/dist/meetings/collection.js.map +1 -1
  160. package/dist/{types/meetings → meetings}/index.d.ts +11 -2
  161. package/dist/meetings/index.js +44 -17
  162. package/dist/meetings/index.js.map +1 -1
  163. package/dist/meetings/request.js +2 -3
  164. package/dist/meetings/request.js.map +1 -1
  165. package/dist/meetings/util.js +1 -4
  166. package/dist/meetings/util.js.map +1 -1
  167. package/dist/member/index.js +1 -3
  168. package/dist/member/index.js.map +1 -1
  169. package/dist/member/types.js +6 -8
  170. package/dist/member/types.js.map +1 -1
  171. package/dist/member/util.js +1 -2
  172. package/dist/member/util.js.map +1 -1
  173. package/dist/members/collection.js +1 -2
  174. package/dist/members/collection.js.map +1 -1
  175. package/dist/members/index.js +8 -7
  176. package/dist/members/index.js.map +1 -1
  177. package/dist/members/request.js +2 -3
  178. package/dist/members/request.js.map +1 -1
  179. package/dist/members/types.js +3 -4
  180. package/dist/members/types.js.map +1 -1
  181. package/dist/{types/members → members}/util.d.ts +1 -1
  182. package/dist/members/util.js +3 -4
  183. package/dist/members/util.js.map +1 -1
  184. package/dist/metrics/constants.js +1 -2
  185. package/dist/metrics/constants.js.map +1 -1
  186. package/dist/metrics/index.js +3 -2
  187. package/dist/metrics/index.js.map +1 -1
  188. package/dist/{types/multistream → multistream}/mediaRequestManager.d.ts +1 -2
  189. package/dist/multistream/mediaRequestManager.js +9 -11
  190. package/dist/multistream/mediaRequestManager.js.map +1 -1
  191. package/dist/multistream/receiveSlot.js +3 -5
  192. package/dist/multistream/receiveSlot.js.map +1 -1
  193. package/dist/multistream/receiveSlotManager.js +7 -9
  194. package/dist/multistream/receiveSlotManager.js.map +1 -1
  195. package/dist/multistream/remoteMedia.js +3 -5
  196. package/dist/multistream/remoteMedia.js.map +1 -1
  197. package/dist/{types/multistream → multistream}/remoteMediaGroup.d.ts +1 -1
  198. package/dist/multistream/remoteMediaGroup.js +7 -6
  199. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  200. package/dist/{types/multistream → multistream}/remoteMediaManager.d.ts +1 -2
  201. package/dist/multistream/remoteMediaManager.js +32 -29
  202. package/dist/multistream/remoteMediaManager.js.map +1 -1
  203. package/dist/{types/multistream → multistream}/sendSlotManager.d.ts +1 -2
  204. package/dist/multistream/sendSlotManager.js +9 -6
  205. package/dist/multistream/sendSlotManager.js.map +1 -1
  206. package/dist/networkQualityMonitor/index.js +1 -2
  207. package/dist/networkQualityMonitor/index.js.map +1 -1
  208. package/dist/personal-meeting-room/index.js +2 -3
  209. package/dist/personal-meeting-room/index.js.map +1 -1
  210. package/dist/personal-meeting-room/request.js +2 -3
  211. package/dist/personal-meeting-room/request.js.map +1 -1
  212. package/dist/personal-meeting-room/util.js +1 -2
  213. package/dist/personal-meeting-room/util.js.map +1 -1
  214. package/dist/{types/reachability → reachability}/clusterReachability.d.ts +1 -0
  215. package/dist/reachability/clusterReachability.js +35 -20
  216. package/dist/reachability/clusterReachability.js.map +1 -1
  217. package/dist/{types/reachability → reachability}/index.d.ts +4 -0
  218. package/dist/reachability/index.js +41 -12
  219. package/dist/reachability/index.js.map +1 -1
  220. package/dist/reachability/request.js +25 -20
  221. package/dist/reachability/request.js.map +1 -1
  222. package/dist/{types/reachability → reachability}/util.d.ts +7 -0
  223. package/dist/reachability/util.js +19 -0
  224. package/dist/reachability/util.js.map +1 -1
  225. package/dist/reactions/constants.js +1 -2
  226. package/dist/reactions/constants.js.map +1 -1
  227. package/dist/reactions/reactions.js +2 -4
  228. package/dist/reactions/reactions.js.map +1 -1
  229. package/dist/reactions/reactions.type.js +6 -8
  230. package/dist/reactions/reactions.type.js.map +1 -1
  231. package/dist/reconnection-manager/index.js +18 -11
  232. package/dist/reconnection-manager/index.js.map +1 -1
  233. package/dist/recording-controller/enums.js +4 -5
  234. package/dist/recording-controller/enums.js.map +1 -1
  235. package/dist/recording-controller/index.js +43 -51
  236. package/dist/recording-controller/index.js.map +1 -1
  237. package/dist/recording-controller/util.js +1 -2
  238. package/dist/recording-controller/util.js.map +1 -1
  239. package/dist/{types/roap → roap}/index.d.ts +10 -2
  240. package/dist/roap/index.js +17 -3
  241. package/dist/roap/index.js.map +1 -1
  242. package/dist/roap/request.js +10 -10
  243. package/dist/roap/request.js.map +1 -1
  244. package/dist/{types/roap → roap}/turnDiscovery.d.ts +64 -17
  245. package/dist/roap/turnDiscovery.js +316 -134
  246. package/dist/roap/turnDiscovery.js.map +1 -1
  247. package/dist/rtcMetrics/constants.js +1 -2
  248. package/dist/rtcMetrics/constants.js.map +1 -1
  249. package/dist/rtcMetrics/index.js +4 -6
  250. package/dist/rtcMetrics/index.js.map +1 -1
  251. package/dist/statsAnalyzer/global.js +1 -2
  252. package/dist/statsAnalyzer/global.js.map +1 -1
  253. package/dist/statsAnalyzer/index.js +123 -96
  254. package/dist/statsAnalyzer/index.js.map +1 -1
  255. package/dist/statsAnalyzer/mqaUtil.js +24 -31
  256. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  257. package/dist/transcription/index.js +1 -2
  258. package/dist/transcription/index.js.map +1 -1
  259. package/dist/webinar/collection.js +1 -2
  260. package/dist/webinar/collection.js.map +1 -1
  261. package/dist/webinar/index.js +2 -3
  262. package/dist/webinar/index.js.map +1 -1
  263. package/jest.config.js +3 -0
  264. package/package.json +44 -25
  265. package/process +1 -0
  266. package/src/config.ts +3 -4
  267. package/src/constants.ts +13 -4
  268. package/src/interpretation/index.ts +2 -2
  269. package/src/locus-info/mediaSharesUtils.ts +16 -0
  270. package/src/locus-info/selfUtils.ts +5 -0
  271. package/src/media/MediaConnectionAwaiter.ts +174 -0
  272. package/src/media/index.ts +3 -1
  273. package/src/media/properties.ts +6 -31
  274. package/src/meeting/index.ts +526 -227
  275. package/src/meeting/request.ts +18 -2
  276. package/src/meeting/util.ts +6 -1
  277. package/src/meeting/voicea-meeting.ts +122 -0
  278. package/src/meeting-info/meeting-info-v2.ts +5 -11
  279. package/src/meeting-info/util.ts +12 -9
  280. package/src/meeting-info/utilv2.ts +26 -15
  281. package/src/meetings/index.ts +18 -0
  282. package/src/member/index.ts +0 -1
  283. package/src/multistream/mediaRequestManager.ts +1 -1
  284. package/src/multistream/remoteMediaGroup.ts +1 -1
  285. package/src/multistream/remoteMediaManager.ts +1 -2
  286. package/src/multistream/sendSlotManager.ts +1 -2
  287. package/src/reachability/clusterReachability.ts +20 -5
  288. package/src/reachability/index.ts +24 -1
  289. package/src/reachability/request.ts +15 -11
  290. package/src/reachability/util.ts +21 -0
  291. package/src/reconnection-manager/index.ts +1 -1
  292. package/src/roap/index.ts +25 -3
  293. package/src/roap/request.ts +2 -2
  294. package/src/roap/turnDiscovery.ts +244 -78
  295. package/src/statsAnalyzer/index.ts +63 -27
  296. package/test/integration/spec/journey.js +2 -2
  297. package/test/unit/spec/breakouts/breakout.ts +2 -1
  298. package/test/unit/spec/breakouts/index.ts +7 -4
  299. package/test/unit/spec/interpretation/index.ts +4 -1
  300. package/test/unit/spec/locus-info/index.js +27 -18
  301. package/test/unit/spec/locus-info/mediaSharesUtils.ts +9 -0
  302. package/test/unit/spec/locus-info/selfUtils.js +41 -11
  303. package/test/unit/spec/media/MediaConnectionAwaiter.ts +344 -0
  304. package/test/unit/spec/media/index.ts +94 -78
  305. package/test/unit/spec/media/properties.ts +16 -70
  306. package/test/unit/spec/meeting/index.js +757 -141
  307. package/test/unit/spec/meeting/request.js +21 -0
  308. package/test/unit/spec/meeting/utils.js +58 -11
  309. package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
  310. package/test/unit/spec/meeting-info/meetinginfov2.js +20 -15
  311. package/test/unit/spec/meeting-info/utilv2.js +6 -0
  312. package/test/unit/spec/meetings/index.js +101 -13
  313. package/test/unit/spec/metrics/index.js +1 -2
  314. package/test/unit/spec/multistream/mediaRequestManager.ts +1 -0
  315. package/test/unit/spec/multistream/remoteMediaGroup.ts +0 -1
  316. package/test/unit/spec/multistream/remoteMediaManager.ts +0 -1
  317. package/test/unit/spec/reachability/clusterReachability.ts +86 -22
  318. package/test/unit/spec/reachability/index.ts +197 -60
  319. package/test/unit/spec/reachability/request.js +15 -7
  320. package/test/unit/spec/reachability/util.ts +32 -2
  321. package/test/unit/spec/reconnection-manager/index.js +28 -0
  322. package/test/unit/spec/recording-controller/index.js +0 -1
  323. package/test/unit/spec/roap/index.ts +61 -6
  324. package/test/unit/spec/roap/turnDiscovery.ts +299 -17
  325. package/test/unit/spec/stats-analyzer/index.js +179 -0
  326. /package/dist/{types/annotation → annotation}/annotation.types.d.ts +0 -0
  327. /package/dist/{types/annotation → annotation}/constants.d.ts +0 -0
  328. /package/dist/{types/annotation → annotation}/index.d.ts +0 -0
  329. /package/dist/{types/breakouts → breakouts}/breakout.d.ts +0 -0
  330. /package/dist/{types/breakouts → breakouts}/collection.d.ts +0 -0
  331. /package/dist/{types/breakouts → breakouts}/edit-lock-error.d.ts +0 -0
  332. /package/dist/{types/breakouts → breakouts}/events.d.ts +0 -0
  333. /package/dist/{types/breakouts → breakouts}/index.d.ts +0 -0
  334. /package/dist/{types/breakouts → breakouts}/request.d.ts +0 -0
  335. /package/dist/{types/breakouts → breakouts}/utils.d.ts +0 -0
  336. /package/dist/{types/common → common}/browser-detection.d.ts +0 -0
  337. /package/dist/{types/common → common}/collection.d.ts +0 -0
  338. /package/dist/{types/common → common}/config.d.ts +0 -0
  339. /package/dist/{types/common → common}/errors/captcha-error.d.ts +0 -0
  340. /package/dist/{types/common → common}/errors/intent-to-join.d.ts +0 -0
  341. /package/dist/{types/common → common}/errors/join-meeting.d.ts +0 -0
  342. /package/dist/{types/common → common}/errors/media.d.ts +0 -0
  343. /package/dist/{types/common → common}/errors/no-meeting-info.d.ts +0 -0
  344. /package/dist/{types/common → common}/errors/parameter.d.ts +0 -0
  345. /package/dist/{types/common → common}/errors/password-error.d.ts +0 -0
  346. /package/dist/{types/common → common}/errors/permission.d.ts +0 -0
  347. /package/dist/{types/common → common}/errors/reclaim-host-role-errors.d.ts +0 -0
  348. /package/dist/{types/common → common}/errors/reconnection-in-progress.d.ts +0 -0
  349. /package/dist/{types/common → common}/errors/reconnection.d.ts +0 -0
  350. /package/dist/{types/common → common}/errors/stats.d.ts +0 -0
  351. /package/dist/{types/common → common}/errors/webex-errors.d.ts +0 -0
  352. /package/dist/{types/common → common}/errors/webex-meetings-error.d.ts +0 -0
  353. /package/dist/{types/common → common}/events/events-scope.d.ts +0 -0
  354. /package/dist/{types/common → common}/events/events.d.ts +0 -0
  355. /package/dist/{types/common → common}/events/trigger-proxy.d.ts +0 -0
  356. /package/dist/{types/common → common}/events/util.d.ts +0 -0
  357. /package/dist/{types/common → common}/logs/logger-config.d.ts +0 -0
  358. /package/dist/{types/common → common}/logs/logger-proxy.d.ts +0 -0
  359. /package/dist/{types/common → common}/queue.d.ts +0 -0
  360. /package/dist/{types/controls-options-manager → controls-options-manager}/constants.d.ts +0 -0
  361. /package/dist/{types/controls-options-manager → controls-options-manager}/enums.d.ts +0 -0
  362. /package/dist/{types/controls-options-manager → controls-options-manager}/index.d.ts +0 -0
  363. /package/dist/{types/controls-options-manager → controls-options-manager}/types.d.ts +0 -0
  364. /package/dist/{types/controls-options-manager → controls-options-manager}/util.d.ts +0 -0
  365. /package/dist/{types/index.d.ts → index.d.ts} +0 -0
  366. /package/dist/{types/interceptors → interceptors}/index.d.ts +0 -0
  367. /package/dist/{types/interceptors → interceptors}/locusRetry.d.ts +0 -0
  368. /package/dist/{types/interpretation → interpretation}/collection.d.ts +0 -0
  369. /package/dist/{types/interpretation → interpretation}/index.d.ts +0 -0
  370. /package/dist/{types/interpretation → interpretation}/siLanguage.d.ts +0 -0
  371. /package/dist/{types/locus-info → locus-info}/controlsUtils.d.ts +0 -0
  372. /package/dist/{types/locus-info → locus-info}/embeddedAppsUtils.d.ts +0 -0
  373. /package/dist/{types/locus-info → locus-info}/fullState.d.ts +0 -0
  374. /package/dist/{types/locus-info → locus-info}/hostUtils.d.ts +0 -0
  375. /package/dist/{types/locus-info → locus-info}/index.d.ts +0 -0
  376. /package/dist/{types/locus-info → locus-info}/infoUtils.d.ts +0 -0
  377. /package/dist/{types/locus-info → locus-info}/mediaSharesUtils.d.ts +0 -0
  378. /package/dist/{types/locus-info → locus-info}/parser.d.ts +0 -0
  379. /package/dist/{types/locus-info → locus-info}/selfUtils.d.ts +0 -0
  380. /package/dist/{types/media → media}/index.d.ts +0 -0
  381. /package/dist/{types/media → media}/properties.d.ts +0 -0
  382. /package/dist/{types/media → media}/util.d.ts +0 -0
  383. /package/dist/{types/mediaQualityMetrics → mediaQualityMetrics}/config.d.ts +0 -0
  384. /package/dist/{types/meeting → meeting}/in-meeting-actions.d.ts +0 -0
  385. /package/dist/{types/meeting → meeting}/locusMediaRequest.d.ts +0 -0
  386. /package/dist/{types/meeting → meeting}/muteState.d.ts +0 -0
  387. /package/dist/{types/meeting → meeting}/request.type.d.ts +0 -0
  388. /package/dist/{types/meeting → meeting}/state.d.ts +0 -0
  389. /package/dist/{types/meeting-info → meeting-info}/collection.d.ts +0 -0
  390. /package/dist/{types/meeting-info → meeting-info}/index.d.ts +0 -0
  391. /package/dist/{types/meeting-info → meeting-info}/meeting-info-v2.d.ts +0 -0
  392. /package/dist/{types/meeting-info → meeting-info}/request.d.ts +0 -0
  393. /package/dist/{types/meeting-info → meeting-info}/util.d.ts +0 -0
  394. /package/dist/{types/meeting-info → meeting-info}/utilv2.d.ts +0 -0
  395. /package/dist/{types/meetings → meetings}/collection.d.ts +0 -0
  396. /package/dist/{types/meetings → meetings}/meetings.types.d.ts +0 -0
  397. /package/dist/{types/meetings → meetings}/request.d.ts +0 -0
  398. /package/dist/{types/meetings → meetings}/util.d.ts +0 -0
  399. /package/dist/{types/member → member}/index.d.ts +0 -0
  400. /package/dist/{types/member → member}/types.d.ts +0 -0
  401. /package/dist/{types/member → member}/util.d.ts +0 -0
  402. /package/dist/{types/members → members}/collection.d.ts +0 -0
  403. /package/dist/{types/members → members}/index.d.ts +0 -0
  404. /package/dist/{types/members → members}/request.d.ts +0 -0
  405. /package/dist/{types/members → members}/types.d.ts +0 -0
  406. /package/dist/{types/metrics → metrics}/constants.d.ts +0 -0
  407. /package/dist/{types/metrics → metrics}/index.d.ts +0 -0
  408. /package/dist/{types/multistream → multistream}/receiveSlot.d.ts +0 -0
  409. /package/dist/{types/multistream → multistream}/receiveSlotManager.d.ts +0 -0
  410. /package/dist/{types/multistream → multistream}/remoteMedia.d.ts +0 -0
  411. /package/dist/{types/networkQualityMonitor → networkQualityMonitor}/index.d.ts +0 -0
  412. /package/dist/{types/personal-meeting-room → personal-meeting-room}/index.d.ts +0 -0
  413. /package/dist/{types/personal-meeting-room → personal-meeting-room}/request.d.ts +0 -0
  414. /package/dist/{types/personal-meeting-room → personal-meeting-room}/util.d.ts +0 -0
  415. /package/dist/{types/reachability → reachability}/request.d.ts +0 -0
  416. /package/dist/{types/reactions → reactions}/constants.d.ts +0 -0
  417. /package/dist/{types/reactions → reactions}/reactions.d.ts +0 -0
  418. /package/dist/{types/reactions → reactions}/reactions.type.d.ts +0 -0
  419. /package/dist/{types/reconnection-manager → reconnection-manager}/index.d.ts +0 -0
  420. /package/dist/{types/recording-controller → recording-controller}/enums.d.ts +0 -0
  421. /package/dist/{types/recording-controller → recording-controller}/index.d.ts +0 -0
  422. /package/dist/{types/recording-controller → recording-controller}/util.d.ts +0 -0
  423. /package/dist/{types/roap → roap}/request.d.ts +0 -0
  424. /package/dist/{types/rtcMetrics → rtcMetrics}/constants.d.ts +0 -0
  425. /package/dist/{types/rtcMetrics → rtcMetrics}/index.d.ts +0 -0
  426. /package/dist/{types/statsAnalyzer → statsAnalyzer}/global.d.ts +0 -0
  427. /package/dist/{types/statsAnalyzer → statsAnalyzer}/index.d.ts +0 -0
  428. /package/dist/{types/statsAnalyzer → statsAnalyzer}/mqaUtil.d.ts +0 -0
  429. /package/dist/{types/transcription → transcription}/index.d.ts +0 -0
  430. /package/dist/{types/webinar → webinar}/collection.d.ts +0 -0
  431. /package/dist/{types/webinar → webinar}/index.d.ts +0 -0
@@ -22,8 +22,7 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/
22
22
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
23
23
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
24
24
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
25
- var _isEmpty2 = _interopRequireDefault(require("lodash/isEmpty"));
26
- var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
25
+ var _lodash = require("lodash");
27
26
  var _internalMediaCore = require("@webex/internal-media-core");
28
27
  var _eventsScope = _interopRequireDefault(require("../common/events/events-scope"));
29
28
  var _constants = require("../constants");
@@ -31,18 +30,17 @@ var _config = require("../mediaQualityMetrics/config");
31
30
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
32
31
  var _global = _interopRequireDefault(require("./global"));
33
32
  var _mqaUtil = require("./mqaUtil");
34
- 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; }
35
- 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; }
33
+ function ownKeys(e, r) { var t = _Object$keys2(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
34
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
36
35
  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); }; }
37
- 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; } }
38
- var EVENTS = {
36
+ 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; } } /* eslint-disable prefer-destructuring */
37
+ var EVENTS = exports.EVENTS = {
39
38
  MEDIA_QUALITY: 'MEDIA_QUALITY',
40
39
  LOCAL_MEDIA_STARTED: 'LOCAL_MEDIA_STARTED',
41
40
  LOCAL_MEDIA_STOPPED: 'LOCAL_MEDIA_STOPPED',
42
41
  REMOTE_MEDIA_STARTED: 'REMOTE_MEDIA_STARTED',
43
42
  REMOTE_MEDIA_STOPPED: 'REMOTE_MEDIA_STOPPED'
44
43
  };
45
- exports.EVENTS = EVENTS;
46
44
  var emptySender = {
47
45
  trackLabel: '',
48
46
  maxPacketLossRatio: 0,
@@ -64,11 +62,9 @@ var emptyReceiver = {
64
62
  * @class StatsAnalyzer
65
63
  * @extends {EventsScope}
66
64
  */
67
- var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
65
+ var StatsAnalyzer = exports.StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
68
66
  (0, _inherits2.default)(StatsAnalyzer, _EventsScope);
69
67
  var _super = _createSuper(StatsAnalyzer);
70
- // Returns the local IP address for diagnostics. this is the local IP of the interface used for the current media connection a host can have many local Ip Addresses
71
-
72
68
  /**
73
69
  * Creates a new instance of StatsAnalyzer
74
70
  * @constructor
@@ -102,7 +98,22 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
102
98
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "statsStarted", void 0);
103
99
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "successfulCandidatePair", void 0);
104
100
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "localIpAddress", void 0);
101
+ // Returns the local IP address for diagnostics. this is the local IP of the interface used for the current media connection a host can have many local Ip Addresses
105
102
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "receiveSlotCallback", void 0);
103
+ /**
104
+ * emits started/stopped events for local/remote media by checking
105
+ * if given values are increasing or not. The previousValue, currentValue
106
+ * params can be any numerical value like number of receive packets or
107
+ * decoded frames, etc.
108
+ *
109
+ * @private
110
+ * @param {string} mediaType
111
+ * @param {number} previousValue - value to compare
112
+ * @param {number} currentValue - value to compare (must be same type of value as previousValue)
113
+ * @param {boolean} isLocal - true if stats are for local media being sent out, false for remote media being received
114
+ * @memberof StatsAnalyzer
115
+ * @returns {void}
116
+ */
106
117
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "emitStartStopEvents", function (mediaType, previousValue, currentValue, isLocal) {
107
118
  if (mediaType !== 'audio' && mediaType !== 'video' && mediaType !== 'share') {
108
119
  throw new Error("Unsupported mediaType: ".concat(mediaType));
@@ -136,9 +147,20 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
136
147
  });
137
148
  }
138
149
  });
150
+ /**
151
+ * extracts the local Ip address from the statsResult object by looking at stats results candidates
152
+ * and matches that ID with the successful candidate pair. It looks at the type of local candidate it is
153
+ * and then extracts the IP address from the relatedAddress or address property based on conditions known in webrtc
154
+ * note, there are known incompatibilities and it is possible for this to set undefined, or for the IP address to be the public IP address
155
+ * for example, firefox does not set the relayProtocol, and if the user is behind a NAT it might be the public IP
156
+ * @private
157
+ * @param {string} successfulCandidatePairId - The ID of the successful candidate pair.
158
+ * @param {Object} candidates - the stats result candidates
159
+ * @returns {void}
160
+ */
139
161
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "extractAndSetLocalIpAddressInfoForDiagnostics", function (successfulCandidatePairId, candidates) {
140
162
  var newIpAddress = '';
141
- if (successfulCandidatePairId && !(0, _isEmpty2.default)(candidates)) {
163
+ if (successfulCandidatePairId && !(0, _lodash.isEmpty)(candidates)) {
142
164
  var localCandidate = candidates[successfulCandidatePairId];
143
165
  if (localCandidate) {
144
166
  if (localCandidate.candidateType === 'host') {
@@ -163,6 +185,16 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
163
185
  }
164
186
  _this.localIpAddress = newIpAddress;
165
187
  });
188
+ /**
189
+ * Processes remote and local candidate result and stores
190
+ * @private
191
+ * @param {*} result
192
+ * @param {*} type
193
+ * @param {boolean} isSender
194
+ * @param {boolean} isRemote
195
+ *
196
+ * @returns {void}
197
+ */
166
198
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "parseCandidate", function (result, type, isSender, isRemote) {
167
199
  var _this$successfulCandi;
168
200
  if (!result || !result.id) {
@@ -273,7 +305,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
273
305
  key: "sendMqaData",
274
306
  value: function sendMqaData() {
275
307
  var _this3 = this;
276
- var newMqa = (0, _cloneDeep2.default)(_config.emptyMqaInterval);
308
+ var newMqa = (0, _lodash.cloneDeep)(_config.emptyMqaInterval);
277
309
 
278
310
  // Fill in empty stats items for lastMqaDataSent
279
311
  (0, _keys.default)(this.statsResults).forEach(function (mediaType) {
@@ -289,14 +321,14 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
289
321
  });
290
322
 
291
323
  // Create stats the first level, totals for senders and receivers
292
- var audioSender = (0, _cloneDeep2.default)(_config.emptyAudioTransmit);
293
- var audioShareSender = (0, _cloneDeep2.default)(_config.emptyAudioTransmit);
294
- var audioReceiver = (0, _cloneDeep2.default)(_config.emptyAudioReceive);
295
- var audioShareReceiver = (0, _cloneDeep2.default)(_config.emptyAudioReceive);
296
- var videoSender = (0, _cloneDeep2.default)(_config.emptyVideoTransmit);
297
- var videoShareSender = (0, _cloneDeep2.default)(_config.emptyVideoTransmit);
298
- var videoReceiver = (0, _cloneDeep2.default)(_config.emptyVideoReceive);
299
- var videoShareReceiver = (0, _cloneDeep2.default)(_config.emptyVideoReceive);
324
+ var audioSender = (0, _lodash.cloneDeep)(_config.emptyAudioTransmit);
325
+ var audioShareSender = (0, _lodash.cloneDeep)(_config.emptyAudioTransmit);
326
+ var audioReceiver = (0, _lodash.cloneDeep)(_config.emptyAudioReceive);
327
+ var audioShareReceiver = (0, _lodash.cloneDeep)(_config.emptyAudioReceive);
328
+ var videoSender = (0, _lodash.cloneDeep)(_config.emptyVideoTransmit);
329
+ var videoShareSender = (0, _lodash.cloneDeep)(_config.emptyVideoTransmit);
330
+ var videoReceiver = (0, _lodash.cloneDeep)(_config.emptyVideoReceive);
331
+ var videoShareReceiver = (0, _lodash.cloneDeep)(_config.emptyVideoReceive);
300
332
  (0, _mqaUtil.getAudioSenderMqa)({
301
333
  audioSender: audioSender,
302
334
  statsResults: this.statsResults,
@@ -356,8 +388,8 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
356
388
 
357
389
  // Add stats for individual streams
358
390
  (0, _keys.default)(this.statsResults).forEach(function (mediaType) {
359
- if (mediaType.includes('audio-send')) {
360
- var audioSenderStream = (0, _cloneDeep2.default)(_config.emptyAudioTransmitStream);
391
+ if (mediaType.startsWith('audio-send')) {
392
+ var audioSenderStream = (0, _lodash.cloneDeep)(_config.emptyAudioTransmitStream);
361
393
  (0, _mqaUtil.getAudioSenderStreamMqa)({
362
394
  audioSenderStream: audioSenderStream,
363
395
  statsResults: _this3.statsResults,
@@ -365,9 +397,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
365
397
  mediaType: mediaType
366
398
  });
367
399
  newMqa.audioTransmit[0].streams.push(audioSenderStream);
368
- _this3.lastMqaDataSent[mediaType].send = (0, _cloneDeep2.default)(_this3.statsResults[mediaType].send);
369
- } else if (mediaType.includes('audio-share-send')) {
370
- var _audioSenderStream = (0, _cloneDeep2.default)(_config.emptyAudioTransmitStream);
400
+ _this3.lastMqaDataSent[mediaType].send = (0, _lodash.cloneDeep)(_this3.statsResults[mediaType].send);
401
+ } else if (mediaType.startsWith('audio-share-send')) {
402
+ var _audioSenderStream = (0, _lodash.cloneDeep)(_config.emptyAudioTransmitStream);
371
403
  (0, _mqaUtil.getAudioSenderStreamMqa)({
372
404
  audioSenderStream: _audioSenderStream,
373
405
  statsResults: _this3.statsResults,
@@ -375,9 +407,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
375
407
  mediaType: mediaType
376
408
  });
377
409
  newMqa.audioTransmit[1].streams.push(_audioSenderStream);
378
- _this3.lastMqaDataSent[mediaType].send = (0, _cloneDeep2.default)(_this3.statsResults[mediaType].send);
379
- } else if (mediaType.includes('audio-recv')) {
380
- var audioReceiverStream = (0, _cloneDeep2.default)(_config.emptyAudioReceiveStream);
410
+ _this3.lastMqaDataSent[mediaType].send = (0, _lodash.cloneDeep)(_this3.statsResults[mediaType].send);
411
+ } else if (mediaType.startsWith('audio-recv')) {
412
+ var audioReceiverStream = (0, _lodash.cloneDeep)(_config.emptyAudioReceiveStream);
381
413
  (0, _mqaUtil.getAudioReceiverStreamMqa)({
382
414
  audioReceiverStream: audioReceiverStream,
383
415
  statsResults: _this3.statsResults,
@@ -385,9 +417,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
385
417
  mediaType: mediaType
386
418
  });
387
419
  newMqa.audioReceive[0].streams.push(audioReceiverStream);
388
- _this3.lastMqaDataSent[mediaType].recv = (0, _cloneDeep2.default)(_this3.statsResults[mediaType].recv);
389
- } else if (mediaType.includes('audio-share-recv')) {
390
- var _audioReceiverStream = (0, _cloneDeep2.default)(_config.emptyAudioReceiveStream);
420
+ _this3.lastMqaDataSent[mediaType].recv = (0, _lodash.cloneDeep)(_this3.statsResults[mediaType].recv);
421
+ } else if (mediaType.startsWith('audio-share-recv')) {
422
+ var _audioReceiverStream = (0, _lodash.cloneDeep)(_config.emptyAudioReceiveStream);
391
423
  (0, _mqaUtil.getAudioReceiverStreamMqa)({
392
424
  audioReceiverStream: _audioReceiverStream,
393
425
  statsResults: _this3.statsResults,
@@ -395,9 +427,10 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
395
427
  mediaType: mediaType
396
428
  });
397
429
  newMqa.audioReceive[1].streams.push(_audioReceiverStream);
398
- _this3.lastMqaDataSent[mediaType].recv = (0, _cloneDeep2.default)(_this3.statsResults[mediaType].recv);
399
- } else if (mediaType.includes('video-send')) {
400
- var videoSenderStream = (0, _cloneDeep2.default)(_config.emptyVideoTransmitStream);
430
+ _this3.lastMqaDataSent[mediaType].recv = (0, _lodash.cloneDeep)(_this3.statsResults[mediaType].recv);
431
+ } else if (mediaType.startsWith('video-send-layer')) {
432
+ // We only want the stream-specific stats we get with video-send-layer-0, video-send-layer-1, etc.
433
+ var videoSenderStream = (0, _lodash.cloneDeep)(_config.emptyVideoTransmitStream);
401
434
  (0, _mqaUtil.getVideoSenderStreamMqa)({
402
435
  videoSenderStream: videoSenderStream,
403
436
  statsResults: _this3.statsResults,
@@ -405,9 +438,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
405
438
  mediaType: mediaType
406
439
  });
407
440
  newMqa.videoTransmit[0].streams.push(videoSenderStream);
408
- _this3.lastMqaDataSent[mediaType].send = (0, _cloneDeep2.default)(_this3.statsResults[mediaType].send);
409
- } else if (mediaType.includes('video-share-send')) {
410
- var _videoSenderStream = (0, _cloneDeep2.default)(_config.emptyVideoTransmitStream);
441
+ _this3.lastMqaDataSent[mediaType].send = (0, _lodash.cloneDeep)(_this3.statsResults[mediaType].send);
442
+ } else if (mediaType.startsWith('video-share-send')) {
443
+ var _videoSenderStream = (0, _lodash.cloneDeep)(_config.emptyVideoTransmitStream);
411
444
  (0, _mqaUtil.getVideoSenderStreamMqa)({
412
445
  videoSenderStream: _videoSenderStream,
413
446
  statsResults: _this3.statsResults,
@@ -415,9 +448,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
415
448
  mediaType: mediaType
416
449
  });
417
450
  newMqa.videoTransmit[1].streams.push(_videoSenderStream);
418
- _this3.lastMqaDataSent[mediaType].send = (0, _cloneDeep2.default)(_this3.statsResults[mediaType].send);
419
- } else if (mediaType.includes('video-recv')) {
420
- var videoReceiverStream = (0, _cloneDeep2.default)(_config.emptyVideoReceiveStream);
451
+ _this3.lastMqaDataSent[mediaType].send = (0, _lodash.cloneDeep)(_this3.statsResults[mediaType].send);
452
+ } else if (mediaType.startsWith('video-recv')) {
453
+ var videoReceiverStream = (0, _lodash.cloneDeep)(_config.emptyVideoReceiveStream);
421
454
  (0, _mqaUtil.getVideoReceiverStreamMqa)({
422
455
  videoReceiverStream: videoReceiverStream,
423
456
  statsResults: _this3.statsResults,
@@ -425,9 +458,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
425
458
  mediaType: mediaType
426
459
  });
427
460
  newMqa.videoReceive[0].streams.push(videoReceiverStream);
428
- _this3.lastMqaDataSent[mediaType].recv = (0, _cloneDeep2.default)(_this3.statsResults[mediaType].recv);
429
- } else if (mediaType.includes('video-share-recv')) {
430
- var _videoReceiverStream = (0, _cloneDeep2.default)(_config.emptyVideoReceiveStream);
461
+ _this3.lastMqaDataSent[mediaType].recv = (0, _lodash.cloneDeep)(_this3.statsResults[mediaType].recv);
462
+ } else if (mediaType.startsWith('video-share-recv')) {
463
+ var _videoReceiverStream = (0, _lodash.cloneDeep)(_config.emptyVideoReceiveStream);
431
464
  (0, _mqaUtil.getVideoReceiverStreamMqa)({
432
465
  videoReceiverStream: _videoReceiverStream,
433
466
  statsResults: _this3.statsResults,
@@ -435,7 +468,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
435
468
  mediaType: mediaType
436
469
  });
437
470
  newMqa.videoReceive[1].streams.push(_videoReceiverStream);
438
- _this3.lastMqaDataSent[mediaType].recv = (0, _cloneDeep2.default)(_this3.statsResults[mediaType].recv);
471
+ _this3.lastMqaDataSent[mediaType].recv = (0, _lodash.cloneDeep)(_this3.statsResults[mediaType].recv);
439
472
  }
440
473
  });
441
474
  newMqa.intervalMetadata.peerReflexiveIP = this.statsResults.connectionType.local.ipAddress;
@@ -451,9 +484,12 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
451
484
  name: _constants.MEDIA_DEVICES.MICROPHONE
452
485
  });
453
486
  }
454
- if (this.statsResults['video-send']) {
487
+ var existingVideoSender = (0, _keys.default)(this.statsResults).find(function (item) {
488
+ return item.includes('video-send');
489
+ });
490
+ if (existingVideoSender) {
455
491
  newMqa.intervalMetadata.peripherals.push({
456
- information: this.statsResults['video-send'].trackLabel || _constants._UNKNOWN_,
492
+ information: this.statsResults[existingVideoSender].trackLabel || _constants._UNKNOWN_,
457
493
  name: _constants.MEDIA_DEVICES.CAMERA
458
494
  });
459
495
  }
@@ -577,9 +613,9 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
577
613
  this.statsResults[type] = {};
578
614
  }
579
615
  if (isSender && !this.statsResults[type].send) {
580
- this.statsResults[type].send = (0, _cloneDeep2.default)(emptySender);
616
+ this.statsResults[type].send = (0, _lodash.cloneDeep)(emptySender);
581
617
  } else if (!isSender && !this.statsResults[type].recv) {
582
- this.statsResults[type].recv = (0, _cloneDeep2.default)(emptyReceiver);
618
+ this.statsResults[type].recv = (0, _lodash.cloneDeep)(emptyReceiver);
583
619
  }
584
620
  switch (getStatsResult.type) {
585
621
  case 'outbound-rtp':
@@ -627,9 +663,20 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
627
663
  _this6.successfulCandidatePair = report;
628
664
  }
629
665
  });
666
+ var videoSenderIndex = 0;
630
667
  statsItem.report.forEach(function (result) {
631
668
  if (types.includes(result.type)) {
632
- _this6.parseGetStatsResult(result, type, isSender);
669
+ // if the video sender has multiple streams in the report, it is a new stream object.
670
+ if (type === 'video-send' && result.type === 'outbound-rtp') {
671
+ var newType = "video-send-layer-".concat(videoSenderIndex);
672
+ _this6.parseGetStatsResult(result, newType, isSender);
673
+ videoSenderIndex += 1;
674
+ _this6.statsResults[newType].direction = statsItem.currentDirection;
675
+ _this6.statsResults[newType].trackLabel = statsItem.localTrackLabel;
676
+ _this6.statsResults[newType].csi = statsItem.csi;
677
+ } else {
678
+ _this6.parseGetStatsResult(result, type, isSender);
679
+ }
633
680
  }
634
681
  });
635
682
  if (this.statsResults[type]) {
@@ -660,21 +707,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
660
707
  this.statsResults[type].send.totalAudioEnergy = result.totalAudioEnergy;
661
708
  }
662
709
  }
663
-
664
- /**
665
- * emits started/stopped events for local/remote media by checking
666
- * if given values are increasing or not. The previousValue, currentValue
667
- * params can be any numerical value like number of receive packets or
668
- * decoded frames, etc.
669
- *
670
- * @private
671
- * @param {string} mediaType
672
- * @param {number} previousValue - value to compare
673
- * @param {number} currentValue - value to compare (must be same type of value as previousValue)
674
- * @param {boolean} isLocal - true if stats are for local media being sent out, false for remote media being received
675
- * @memberof StatsAnalyzer
676
- * @returns {void}
677
- */
678
710
  }, {
679
711
  key: "compareLastStatsResult",
680
712
  value:
@@ -693,7 +725,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
693
725
  return key.startsWith(keyPrefix);
694
726
  }).reduce(function (prev, cur) {
695
727
  var _this7$statsResults$c;
696
- return prev + (((_this7$statsResults$c = _this7.statsResults[cur]) === null || _this7$statsResults$c === void 0 ? void 0 : _this7$statsResults$c.recv[value]) || 0);
728
+ return prev + (((_this7$statsResults$c = _this7.statsResults[cur]) === null || _this7$statsResults$c === void 0 ? void 0 : _this7$statsResults$c[keyPrefix.includes('send') ? 'send' : 'recv'][value]) || 0);
697
729
  }, 0);
698
730
  };
699
731
  var getPreviousStatsTotals = function getPreviousStatsTotals(keyPrefix, value) {
@@ -701,7 +733,7 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
701
733
  return key.startsWith(keyPrefix);
702
734
  }).reduce(function (prev, cur) {
703
735
  var _this7$lastStatsResul;
704
- return prev + (((_this7$lastStatsResul = _this7.lastStatsResults[cur]) === null || _this7$lastStatsResul === void 0 ? void 0 : _this7$lastStatsResul.recv[value]) || 0);
736
+ return prev + (((_this7$lastStatsResul = _this7.lastStatsResults[cur]) === null || _this7$lastStatsResul === void 0 ? void 0 : _this7$lastStatsResul[keyPrefix.includes('send') ? 'send' : 'recv'][value]) || 0);
705
737
  }, 0);
706
738
  };
707
739
 
@@ -728,23 +760,31 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
728
760
  var currentAudioPacketsReceived = getCurrentStatsTotals('audio-recv', 'totalPacketsReceived');
729
761
  var previousAudioPacketsReceived = getPreviousStatsTotals('audio-recv', 'totalPacketsReceived');
730
762
  this.emitStartStopEvents('audio', previousAudioPacketsReceived, currentAudioPacketsReceived, false);
763
+ var currentTotalPacketsSent = getCurrentStatsTotals('video-send', 'totalPacketsSent');
764
+ var previousTotalPacketsSent = getPreviousStatsTotals('video-send', 'totalPacketsSent');
765
+ var currentFramesEncoded = getCurrentStatsTotals('video-send', 'framesEncoded');
766
+ var previousFramesEncoded = getPreviousStatsTotals('video-send', 'framesEncoded');
767
+ var currentFramesSent = getCurrentStatsTotals('video-send', 'framesSent');
768
+ var previousFramesSent = getPreviousStatsTotals('video-send', 'framesSent');
769
+ var doesVideoSendExist = (0, _keys.default)(this.lastStatsResults).some(function (item) {
770
+ return item.includes('video-send');
771
+ });
731
772
 
732
773
  // Video Transmit
733
- if (this.lastStatsResults['video-send']) {
774
+ if (doesVideoSendExist) {
734
775
  // compare video stats sent
735
- var _currentStats = this.statsResults['video-send'].send;
736
- var _previousStats = this.lastStatsResults['video-send'].send;
737
- if (this.meetingMediaStatus.expected.sendVideo && (_currentStats.totalPacketsSent === _previousStats.totalPacketsSent || _currentStats.totalPacketsSent === 0)) {
738
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video RTP packets sent", _currentStats.totalPacketsSent);
776
+
777
+ if (this.meetingMediaStatus.expected.sendVideo && (currentTotalPacketsSent === previousTotalPacketsSent || currentTotalPacketsSent === 0)) {
778
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video RTP packets sent", currentTotalPacketsSent);
739
779
  } else {
740
- if (this.meetingMediaStatus.expected.sendVideo && (_currentStats.framesEncoded === _previousStats.framesEncoded || _currentStats.framesEncoded === 0)) {
741
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video Frames Encoded", _currentStats.framesEncoded);
780
+ if (this.meetingMediaStatus.expected.sendVideo && (currentFramesEncoded === previousFramesEncoded || currentFramesEncoded === 0)) {
781
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video Frames Encoded", currentFramesEncoded);
742
782
  }
743
- if (this.meetingMediaStatus.expected.sendVideo && (this.statsResults['video-send'].send.framesSent === this.lastStatsResults['video-send'].send.framesSent || this.statsResults['video-send'].send.framesSent === 0)) {
744
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video Frames sent", this.statsResults['video-send'].send.framesSent);
783
+ if (this.meetingMediaStatus.expected.sendVideo && (currentFramesSent === previousFramesSent || currentFramesSent === 0)) {
784
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No video Frames sent", currentFramesSent);
745
785
  }
746
786
  }
747
- this.emitStartStopEvents('video', _previousStats.framesSent, _currentStats.framesSent, true);
787
+ this.emitStartStopEvents('video', previousFramesSent, currentFramesSent, true);
748
788
  }
749
789
 
750
790
  // Video Receive
@@ -756,19 +796,19 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
756
796
  if (this.lastStatsResults['video-share-send']) {
757
797
  // compare share stats sent
758
798
 
759
- var _currentStats2 = this.statsResults['video-share-send'].send;
760
- var _previousStats2 = this.lastStatsResults['video-share-send'].send;
761
- if (this.meetingMediaStatus.expected.sendShare && (_currentStats2.totalPacketsSent === _previousStats2.totalPacketsSent || _currentStats2.totalPacketsSent === 0)) {
762
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share RTP packets sent", _currentStats2.totalPacketsSent);
799
+ var _currentStats = this.statsResults['video-share-send'].send;
800
+ var _previousStats = this.lastStatsResults['video-share-send'].send;
801
+ if (this.meetingMediaStatus.expected.sendShare && (_currentStats.totalPacketsSent === _previousStats.totalPacketsSent || _currentStats.totalPacketsSent === 0)) {
802
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share RTP packets sent", _currentStats.totalPacketsSent);
763
803
  } else {
764
- if (this.meetingMediaStatus.expected.sendShare && (_currentStats2.framesEncoded === _previousStats2.framesEncoded || _currentStats2.framesEncoded === 0)) {
765
- _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames getting encoded", _currentStats2.framesEncoded);
804
+ if (this.meetingMediaStatus.expected.sendShare && (_currentStats.framesEncoded === _previousStats.framesEncoded || _currentStats.framesEncoded === 0)) {
805
+ _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames getting encoded", _currentStats.framesEncoded);
766
806
  }
767
807
  if (this.meetingMediaStatus.expected.sendShare && (this.statsResults['video-share-send'].send.framesSent === this.lastStatsResults['video-share-send'].send.framesSent || this.statsResults['video-share-send'].send.framesSent === 0)) {
768
808
  _loggerProxy.default.logger.info("StatsAnalyzer:index#compareLastStatsResult --> No share frames sent", this.statsResults['video-share-send'].send.framesSent);
769
809
  }
770
810
  }
771
- this.emitStartStopEvents('share', _previousStats2.framesSent, _currentStats2.framesSent, true);
811
+ this.emitStartStopEvents('share', _previousStats.framesSent, _currentStats.framesSent, true);
772
812
  }
773
813
 
774
814
  // Share receive
@@ -980,18 +1020,6 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
980
1020
  this.statsResults[mediaType][sendrecvType].concealedSamples = result.concealedSamples || 0;
981
1021
  }
982
1022
  }
983
-
984
- /**
985
- * extracts the local Ip address from the statsResult object by looking at stats results candidates
986
- * and matches that ID with the successful candidate pair. It looks at the type of local candidate it is
987
- * and then extracts the IP address from the relatedAddress or address property based on conditions known in webrtc
988
- * note, there are known incompatibilities and it is possible for this to set undefined, or for the IP address to be the public IP address
989
- * for example, firefox does not set the relayProtocol, and if the user is behind a NAT it might be the public IP
990
- * @private
991
- * @param {string} successfulCandidatePairId - The ID of the successful candidate pair.
992
- * @param {Object} candidates - the stats result candidates
993
- * @returns {void}
994
- */
995
1023
  }, {
996
1024
  key: "compareSentAndReceived",
997
1025
  value:
@@ -1035,5 +1063,4 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
1035
1063
  }]);
1036
1064
  return StatsAnalyzer;
1037
1065
  }(_eventsScope.default);
1038
- exports.StatsAnalyzer = StatsAnalyzer;
1039
1066
  //# sourceMappingURL=index.js.map