@webex/plugin-meetings 3.0.0-beta.34 → 3.0.0-beta.341

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 (401) hide show
  1. package/README.md +46 -8
  2. package/dist/annotation/annotation.types.js +7 -0
  3. package/dist/annotation/annotation.types.js.map +1 -0
  4. package/dist/annotation/constants.js +49 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +342 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +94 -15
  9. package/dist/breakouts/breakout.js.map +1 -1
  10. package/dist/breakouts/edit-lock-error.js +52 -0
  11. package/dist/breakouts/edit-lock-error.js.map +1 -0
  12. package/dist/breakouts/events.js +45 -0
  13. package/dist/breakouts/events.js.map +1 -0
  14. package/dist/breakouts/index.js +709 -35
  15. package/dist/breakouts/index.js.map +1 -1
  16. package/dist/breakouts/utils.js +45 -1
  17. package/dist/breakouts/utils.js.map +1 -1
  18. package/dist/common/errors/no-meeting-info.js +51 -0
  19. package/dist/common/errors/no-meeting-info.js.map +1 -0
  20. package/dist/common/errors/reclaim-host-role-errors.js +158 -0
  21. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  22. package/dist/common/errors/webex-errors.js +48 -7
  23. package/dist/common/errors/webex-errors.js.map +1 -1
  24. package/dist/common/logs/logger-proxy.js +1 -1
  25. package/dist/common/logs/logger-proxy.js.map +1 -1
  26. package/dist/common/logs/request.js +5 -1
  27. package/dist/common/logs/request.js.map +1 -1
  28. package/dist/common/queue.js +24 -9
  29. package/dist/common/queue.js.map +1 -1
  30. package/dist/config.js +5 -10
  31. package/dist/config.js.map +1 -1
  32. package/dist/constants.js +233 -29
  33. package/dist/constants.js.map +1 -1
  34. package/dist/controls-options-manager/enums.js +14 -2
  35. package/dist/controls-options-manager/enums.js.map +1 -1
  36. package/dist/controls-options-manager/index.js +109 -15
  37. package/dist/controls-options-manager/index.js.map +1 -1
  38. package/dist/controls-options-manager/types.js +7 -0
  39. package/dist/controls-options-manager/types.js.map +1 -0
  40. package/dist/controls-options-manager/util.js +309 -18
  41. package/dist/controls-options-manager/util.js.map +1 -1
  42. package/dist/index.js +117 -2
  43. package/dist/index.js.map +1 -1
  44. package/dist/interceptors/index.js +15 -0
  45. package/dist/interceptors/index.js.map +1 -0
  46. package/dist/interceptors/locusRetry.js +93 -0
  47. package/dist/interceptors/locusRetry.js.map +1 -0
  48. package/dist/interpretation/collection.js +23 -0
  49. package/dist/interpretation/collection.js.map +1 -0
  50. package/dist/interpretation/index.js +366 -0
  51. package/dist/interpretation/index.js.map +1 -0
  52. package/dist/interpretation/siLanguage.js +25 -0
  53. package/dist/interpretation/siLanguage.js.map +1 -0
  54. package/dist/locus-info/controlsUtils.js +91 -2
  55. package/dist/locus-info/controlsUtils.js.map +1 -1
  56. package/dist/locus-info/index.js +383 -62
  57. package/dist/locus-info/index.js.map +1 -1
  58. package/dist/locus-info/infoUtils.js +7 -1
  59. package/dist/locus-info/infoUtils.js.map +1 -1
  60. package/dist/locus-info/mediaSharesUtils.js +57 -1
  61. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  62. package/dist/locus-info/parser.js +249 -72
  63. package/dist/locus-info/parser.js.map +1 -1
  64. package/dist/locus-info/selfUtils.js +89 -14
  65. package/dist/locus-info/selfUtils.js.map +1 -1
  66. package/dist/media/index.js +62 -116
  67. package/dist/media/index.js.map +1 -1
  68. package/dist/media/properties.js +73 -124
  69. package/dist/media/properties.js.map +1 -1
  70. package/dist/mediaQualityMetrics/config.js +1 -204
  71. package/dist/mediaQualityMetrics/config.js.map +1 -1
  72. package/dist/meeting/in-meeting-actions.js +86 -2
  73. package/dist/meeting/in-meeting-actions.js.map +1 -1
  74. package/dist/meeting/index.js +3927 -2960
  75. package/dist/meeting/index.js.map +1 -1
  76. package/dist/meeting/locusMediaRequest.js +292 -0
  77. package/dist/meeting/locusMediaRequest.js.map +1 -0
  78. package/dist/meeting/muteState.js +224 -131
  79. package/dist/meeting/muteState.js.map +1 -1
  80. package/dist/meeting/request.js +260 -196
  81. package/dist/meeting/request.js.map +1 -1
  82. package/dist/meeting/util.js +601 -417
  83. package/dist/meeting/util.js.map +1 -1
  84. package/dist/meeting-info/index.js +73 -7
  85. package/dist/meeting-info/index.js.map +1 -1
  86. package/dist/meeting-info/meeting-info-v2.js +192 -51
  87. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  88. package/dist/meeting-info/util.js +1 -1
  89. package/dist/meeting-info/util.js.map +1 -1
  90. package/dist/meeting-info/utilv2.js +36 -36
  91. package/dist/meeting-info/utilv2.js.map +1 -1
  92. package/dist/meetings/collection.js +39 -0
  93. package/dist/meetings/collection.js.map +1 -1
  94. package/dist/meetings/index.js +424 -116
  95. package/dist/meetings/index.js.map +1 -1
  96. package/dist/meetings/meetings.types.js +7 -0
  97. package/dist/meetings/meetings.types.js.map +1 -0
  98. package/dist/meetings/request.js +2 -0
  99. package/dist/meetings/request.js.map +1 -1
  100. package/dist/meetings/util.js +72 -6
  101. package/dist/meetings/util.js.map +1 -1
  102. package/dist/member/index.js +58 -0
  103. package/dist/member/index.js.map +1 -1
  104. package/dist/member/types.js +25 -0
  105. package/dist/member/types.js.map +1 -0
  106. package/dist/member/util.js +132 -25
  107. package/dist/member/util.js.map +1 -1
  108. package/dist/members/collection.js +10 -0
  109. package/dist/members/collection.js.map +1 -1
  110. package/dist/members/index.js +102 -6
  111. package/dist/members/index.js.map +1 -1
  112. package/dist/members/request.js +106 -38
  113. package/dist/members/request.js.map +1 -1
  114. package/dist/members/types.js +15 -0
  115. package/dist/members/types.js.map +1 -0
  116. package/dist/members/util.js +326 -232
  117. package/dist/members/util.js.map +1 -1
  118. package/dist/metrics/constants.js +16 -5
  119. package/dist/metrics/constants.js.map +1 -1
  120. package/dist/metrics/index.js +1 -446
  121. package/dist/metrics/index.js.map +1 -1
  122. package/dist/multistream/mediaRequestManager.js +228 -58
  123. package/dist/multistream/mediaRequestManager.js.map +1 -1
  124. package/dist/multistream/receiveSlot.js +29 -16
  125. package/dist/multistream/receiveSlot.js.map +1 -1
  126. package/dist/multistream/receiveSlotManager.js +39 -36
  127. package/dist/multistream/receiveSlotManager.js.map +1 -1
  128. package/dist/multistream/remoteMedia.js +44 -18
  129. package/dist/multistream/remoteMedia.js.map +1 -1
  130. package/dist/multistream/remoteMediaGroup.js +60 -3
  131. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  132. package/dist/multistream/remoteMediaManager.js +209 -59
  133. package/dist/multistream/remoteMediaManager.js.map +1 -1
  134. package/dist/multistream/sendSlotManager.js +233 -0
  135. package/dist/multistream/sendSlotManager.js.map +1 -0
  136. package/dist/reachability/clusterReachability.js +356 -0
  137. package/dist/reachability/clusterReachability.js.map +1 -0
  138. package/dist/reachability/index.js +273 -391
  139. package/dist/reachability/index.js.map +1 -1
  140. package/dist/reachability/request.js +17 -8
  141. package/dist/reachability/request.js.map +1 -1
  142. package/dist/reachability/util.js +29 -0
  143. package/dist/reachability/util.js.map +1 -0
  144. package/dist/reconnection-manager/index.js +214 -170
  145. package/dist/reconnection-manager/index.js.map +1 -1
  146. package/dist/recording-controller/index.js +21 -2
  147. package/dist/recording-controller/index.js.map +1 -1
  148. package/dist/recording-controller/util.js +9 -8
  149. package/dist/recording-controller/util.js.map +1 -1
  150. package/dist/roap/index.js +62 -35
  151. package/dist/roap/index.js.map +1 -1
  152. package/dist/roap/request.js +112 -97
  153. package/dist/roap/request.js.map +1 -1
  154. package/dist/roap/turnDiscovery.js +95 -38
  155. package/dist/roap/turnDiscovery.js.map +1 -1
  156. package/dist/rtcMetrics/constants.js +12 -0
  157. package/dist/rtcMetrics/constants.js.map +1 -0
  158. package/dist/rtcMetrics/index.js +142 -0
  159. package/dist/rtcMetrics/index.js.map +1 -0
  160. package/dist/statsAnalyzer/index.js +181 -214
  161. package/dist/statsAnalyzer/index.js.map +1 -1
  162. package/dist/statsAnalyzer/mqaUtil.js +22 -18
  163. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  164. package/dist/types/annotation/annotation.types.d.ts +42 -0
  165. package/dist/types/annotation/constants.d.ts +31 -0
  166. package/dist/types/annotation/index.d.ts +117 -0
  167. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  168. package/dist/types/breakouts/events.d.ts +8 -0
  169. package/dist/types/breakouts/utils.d.ts +14 -0
  170. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  171. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  172. package/dist/types/common/errors/webex-errors.d.ts +25 -1
  173. package/dist/types/common/logs/request.d.ts +2 -0
  174. package/dist/types/common/queue.d.ts +9 -7
  175. package/dist/types/config.d.ts +2 -7
  176. package/dist/types/constants.d.ts +201 -30
  177. package/dist/types/controls-options-manager/enums.d.ts +11 -1
  178. package/dist/types/controls-options-manager/index.d.ts +17 -1
  179. package/dist/types/controls-options-manager/types.d.ts +43 -0
  180. package/dist/types/controls-options-manager/util.d.ts +1 -7
  181. package/dist/types/index.d.ts +6 -4
  182. package/dist/types/interceptors/index.d.ts +2 -0
  183. package/dist/types/interceptors/locusRetry.d.ts +27 -0
  184. package/dist/types/interpretation/collection.d.ts +5 -0
  185. package/dist/types/interpretation/index.d.ts +5 -0
  186. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  187. package/dist/types/locus-info/index.d.ts +57 -4
  188. package/dist/types/locus-info/parser.d.ts +66 -6
  189. package/dist/types/media/index.d.ts +2 -0
  190. package/dist/types/media/properties.d.ts +34 -48
  191. package/dist/types/mediaQualityMetrics/config.d.ts +0 -128
  192. package/dist/types/meeting/in-meeting-actions.d.ts +86 -2
  193. package/dist/types/meeting/index.d.ts +506 -512
  194. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  195. package/dist/types/meeting/muteState.d.ts +93 -25
  196. package/dist/types/meeting/request.d.ts +72 -43
  197. package/dist/types/meeting/util.d.ts +101 -1
  198. package/dist/types/meeting-info/index.d.ts +13 -1
  199. package/dist/types/meeting-info/meeting-info-v2.d.ts +31 -1
  200. package/dist/types/meetings/collection.d.ts +17 -0
  201. package/dist/types/meetings/index.d.ts +91 -21
  202. package/dist/types/meetings/meetings.types.d.ts +4 -0
  203. package/dist/types/member/index.d.ts +14 -0
  204. package/dist/types/member/types.d.ts +32 -0
  205. package/dist/types/members/collection.d.ts +5 -0
  206. package/dist/types/members/index.d.ts +35 -2
  207. package/dist/types/members/request.d.ts +73 -9
  208. package/dist/types/members/types.d.ts +25 -0
  209. package/dist/types/members/util.d.ts +214 -1
  210. package/dist/types/metrics/constants.d.ts +15 -4
  211. package/dist/types/metrics/index.d.ts +4 -111
  212. package/dist/types/multistream/mediaRequestManager.d.ts +72 -5
  213. package/dist/types/multistream/receiveSlot.d.ts +13 -11
  214. package/dist/types/multistream/receiveSlotManager.d.ts +14 -4
  215. package/dist/types/multistream/remoteMedia.d.ts +8 -29
  216. package/dist/types/multistream/remoteMediaGroup.d.ts +0 -9
  217. package/dist/types/multistream/remoteMediaManager.d.ts +46 -2
  218. package/dist/types/multistream/sendSlotManager.d.ts +61 -0
  219. package/dist/types/reachability/clusterReachability.d.ts +109 -0
  220. package/dist/types/reachability/index.d.ts +60 -95
  221. package/dist/types/reachability/request.d.ts +7 -3
  222. package/dist/types/reachability/util.d.ts +8 -0
  223. package/dist/types/reconnection-manager/index.d.ts +19 -0
  224. package/dist/types/recording-controller/index.d.ts +15 -1
  225. package/dist/types/recording-controller/util.d.ts +5 -4
  226. package/dist/types/roap/index.d.ts +2 -1
  227. package/dist/types/roap/request.d.ts +15 -11
  228. package/dist/types/roap/turnDiscovery.d.ts +21 -3
  229. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  230. package/dist/types/rtcMetrics/index.d.ts +54 -0
  231. package/dist/types/statsAnalyzer/index.d.ts +29 -11
  232. package/dist/types/webinar/collection.d.ts +16 -0
  233. package/dist/types/webinar/index.d.ts +5 -0
  234. package/dist/webinar/collection.js +44 -0
  235. package/dist/webinar/collection.js.map +1 -0
  236. package/dist/webinar/index.js +69 -0
  237. package/dist/webinar/index.js.map +1 -0
  238. package/package.json +22 -19
  239. package/src/annotation/annotation.types.ts +50 -0
  240. package/src/annotation/constants.ts +36 -0
  241. package/src/annotation/index.ts +328 -0
  242. package/src/breakouts/README.md +42 -12
  243. package/src/breakouts/breakout.ts +67 -9
  244. package/src/breakouts/edit-lock-error.ts +25 -0
  245. package/src/breakouts/events.ts +56 -0
  246. package/src/breakouts/index.ts +592 -20
  247. package/src/breakouts/utils.ts +42 -0
  248. package/src/common/errors/no-meeting-info.ts +24 -0
  249. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  250. package/src/common/errors/webex-errors.ts +44 -2
  251. package/src/common/logs/logger-proxy.ts +1 -1
  252. package/src/common/logs/request.ts +5 -1
  253. package/src/common/queue.ts +22 -8
  254. package/src/config.ts +4 -9
  255. package/src/constants.ts +224 -20
  256. package/src/controls-options-manager/enums.ts +12 -0
  257. package/src/controls-options-manager/index.ts +116 -21
  258. package/src/controls-options-manager/types.ts +59 -0
  259. package/src/controls-options-manager/util.ts +294 -14
  260. package/src/index.ts +44 -0
  261. package/src/interceptors/index.ts +3 -0
  262. package/src/interceptors/locusRetry.ts +67 -0
  263. package/src/interpretation/README.md +60 -0
  264. package/src/interpretation/collection.ts +19 -0
  265. package/src/interpretation/index.ts +332 -0
  266. package/src/interpretation/siLanguage.ts +18 -0
  267. package/src/locus-info/controlsUtils.ts +108 -0
  268. package/src/locus-info/index.ts +413 -59
  269. package/src/locus-info/infoUtils.ts +10 -2
  270. package/src/locus-info/mediaSharesUtils.ts +64 -0
  271. package/src/locus-info/parser.ts +258 -47
  272. package/src/locus-info/selfUtils.ts +81 -5
  273. package/src/media/index.ts +102 -122
  274. package/src/media/properties.ts +87 -110
  275. package/src/mediaQualityMetrics/config.ts +0 -135
  276. package/src/meeting/in-meeting-actions.ts +171 -3
  277. package/src/meeting/index.ts +3276 -2555
  278. package/src/meeting/locusMediaRequest.ts +313 -0
  279. package/src/meeting/muteState.ts +223 -136
  280. package/src/meeting/request.ts +177 -121
  281. package/src/meeting/util.ts +588 -394
  282. package/src/meeting-info/index.ts +81 -8
  283. package/src/meeting-info/meeting-info-v2.ts +170 -14
  284. package/src/meeting-info/util.ts +1 -1
  285. package/src/meeting-info/utilv2.ts +23 -23
  286. package/src/meetings/collection.ts +33 -0
  287. package/src/meetings/index.ts +454 -125
  288. package/src/meetings/meetings.types.ts +12 -0
  289. package/src/meetings/request.ts +2 -0
  290. package/src/meetings/util.ts +80 -11
  291. package/src/member/index.ts +58 -0
  292. package/src/member/types.ts +38 -0
  293. package/src/member/util.ts +141 -25
  294. package/src/members/collection.ts +8 -0
  295. package/src/members/index.ts +134 -8
  296. package/src/members/request.ts +97 -17
  297. package/src/members/types.ts +29 -0
  298. package/src/members/util.ts +333 -240
  299. package/src/metrics/constants.ts +15 -4
  300. package/src/metrics/index.ts +1 -469
  301. package/src/multistream/mediaRequestManager.ts +277 -82
  302. package/src/multistream/receiveSlot.ts +31 -17
  303. package/src/multistream/receiveSlotManager.ts +34 -24
  304. package/src/multistream/remoteMedia.ts +27 -2
  305. package/src/multistream/remoteMediaGroup.ts +59 -0
  306. package/src/multistream/remoteMediaManager.ts +148 -30
  307. package/src/multistream/sendSlotManager.ts +170 -0
  308. package/src/reachability/clusterReachability.ts +320 -0
  309. package/src/reachability/index.ts +236 -342
  310. package/src/reachability/request.ts +17 -8
  311. package/src/reachability/util.ts +24 -0
  312. package/src/reconnection-manager/index.ts +128 -106
  313. package/src/recording-controller/index.ts +20 -3
  314. package/src/recording-controller/util.ts +26 -9
  315. package/src/roap/index.ts +63 -32
  316. package/src/roap/request.ts +100 -104
  317. package/src/roap/turnDiscovery.ts +48 -26
  318. package/src/rtcMetrics/constants.ts +3 -0
  319. package/src/rtcMetrics/index.ts +124 -0
  320. package/src/statsAnalyzer/index.ts +218 -289
  321. package/src/statsAnalyzer/mqaUtil.ts +28 -30
  322. package/src/webinar/collection.ts +31 -0
  323. package/src/webinar/index.ts +62 -0
  324. package/test/integration/spec/converged-space-meetings.js +60 -3
  325. package/test/integration/spec/journey.js +320 -261
  326. package/test/integration/spec/space-meeting.js +76 -3
  327. package/test/unit/spec/annotation/index.ts +418 -0
  328. package/test/unit/spec/breakouts/breakout.ts +118 -28
  329. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  330. package/test/unit/spec/breakouts/events.ts +89 -0
  331. package/test/unit/spec/breakouts/index.ts +1395 -69
  332. package/test/unit/spec/breakouts/utils.js +52 -1
  333. package/test/unit/spec/common/queue.js +31 -2
  334. package/test/unit/spec/controls-options-manager/index.js +163 -0
  335. package/test/unit/spec/controls-options-manager/util.js +576 -60
  336. package/test/unit/spec/fixture/locus.js +1 -0
  337. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  338. package/test/unit/spec/interpretation/collection.ts +15 -0
  339. package/test/unit/spec/interpretation/index.ts +589 -0
  340. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  341. package/test/unit/spec/locus-info/controlsUtils.js +316 -43
  342. package/test/unit/spec/locus-info/index.js +1304 -33
  343. package/test/unit/spec/locus-info/infoUtils.js +37 -15
  344. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  345. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  346. package/test/unit/spec/locus-info/parser.js +116 -35
  347. package/test/unit/spec/locus-info/selfConstant.js +27 -4
  348. package/test/unit/spec/locus-info/selfUtils.js +208 -17
  349. package/test/unit/spec/media/index.ts +120 -37
  350. package/test/unit/spec/media/properties.ts +2 -2
  351. package/test/unit/spec/meeting/in-meeting-actions.ts +85 -3
  352. package/test/unit/spec/meeting/index.js +5849 -2014
  353. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  354. package/test/unit/spec/meeting/muteState.js +402 -213
  355. package/test/unit/spec/meeting/request.js +483 -49
  356. package/test/unit/spec/meeting/utils.js +679 -64
  357. package/test/unit/spec/meeting-info/index.js +300 -0
  358. package/test/unit/spec/meeting-info/meetinginfov2.js +526 -5
  359. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  360. package/test/unit/spec/meetings/collection.js +26 -0
  361. package/test/unit/spec/meetings/index.js +1231 -212
  362. package/test/unit/spec/meetings/utils.js +202 -2
  363. package/test/unit/spec/member/index.js +61 -6
  364. package/test/unit/spec/member/util.js +510 -34
  365. package/test/unit/spec/members/index.js +432 -1
  366. package/test/unit/spec/members/request.js +206 -27
  367. package/test/unit/spec/members/utils.js +210 -0
  368. package/test/unit/spec/metrics/index.js +1 -50
  369. package/test/unit/spec/multistream/mediaRequestManager.ts +776 -162
  370. package/test/unit/spec/multistream/receiveSlot.ts +28 -20
  371. package/test/unit/spec/multistream/receiveSlotManager.ts +32 -30
  372. package/test/unit/spec/multistream/remoteMedia.ts +30 -0
  373. package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
  374. package/test/unit/spec/multistream/remoteMediaManager.ts +326 -0
  375. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  376. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  377. package/test/unit/spec/reachability/index.ts +486 -13
  378. package/test/unit/spec/reachability/request.js +68 -0
  379. package/test/unit/spec/reachability/util.ts +40 -0
  380. package/test/unit/spec/reconnection-manager/index.js +117 -11
  381. package/test/unit/spec/recording-controller/index.js +294 -218
  382. package/test/unit/spec/recording-controller/util.js +223 -96
  383. package/test/unit/spec/roap/index.ts +174 -63
  384. package/test/unit/spec/roap/request.ts +226 -85
  385. package/test/unit/spec/roap/turnDiscovery.ts +76 -34
  386. package/test/unit/spec/rtcMetrics/index.ts +93 -0
  387. package/test/unit/spec/stats-analyzer/index.js +231 -7
  388. package/test/unit/spec/webinar/collection.ts +13 -0
  389. package/test/unit/spec/webinar/index.ts +60 -0
  390. package/test/utils/integrationTestUtils.js +46 -0
  391. package/test/utils/testUtils.js +0 -52
  392. package/dist/meeting/effectsState.js +0 -262
  393. package/dist/meeting/effectsState.js.map +0 -1
  394. package/dist/metrics/config.js +0 -289
  395. package/dist/metrics/config.js.map +0 -1
  396. package/dist/types/meeting/effectsState.d.ts +0 -42
  397. package/dist/types/metrics/config.d.ts +0 -169
  398. package/src/index.js +0 -16
  399. package/src/meeting/effectsState.ts +0 -211
  400. package/src/metrics/config.ts +0 -485
  401. package/test/unit/spec/meeting/effectsState.js +0 -285
@@ -1,65 +1,6 @@
1
1
  /*!
2
2
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
3
  */
4
- import util from 'util';
5
-
6
- import {includes} from 'lodash';
7
- import uuid from 'uuid';
8
- import window from 'global/window';
9
- import anonymize from 'ip-anonymize';
10
-
11
- import {getOSNameInternal} from '@webex/internal-plugin-metrics';
12
- import LoggerProxy from '../common/logs/logger-proxy';
13
- import {MEETING_ERRORS} from '../constants';
14
- import BrowserDetection from '../common/browser-detection';
15
-
16
- import {
17
- error,
18
- eventType,
19
- errorCodes as ERROR_CODE,
20
- UNKNOWN,
21
- CLIENT_NAME,
22
- mediaType,
23
- } from './config';
24
-
25
- const {getOSName, getOSVersion, getBrowserName, getBrowserVersion} = BrowserDetection();
26
-
27
- // Apply a CIDR /28 format to the IPV4 and /96 to the IPV6 addresses
28
- // For reference : https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing
29
- const anonymizeIPAddress = (localIp) => anonymize(localIp, 28, 96);
30
-
31
- const triggerTimers = ({event, meeting, data}) => {
32
- switch (event) {
33
- case eventType.CALL_INITIATED:
34
- meeting.setStartCallInitiateJoinReq();
35
- break;
36
- case eventType.LOCUS_JOIN_REQUEST:
37
- meeting.setEndCallInitiateJoinReq();
38
- meeting.setStartJoinReqResp();
39
- break;
40
- case eventType.LOCUS_JOIN_RESPONSE:
41
- meeting.setEndJoinReqResp();
42
- meeting.setStartSetupDelay(mediaType.AUDIO);
43
- meeting.setStartSetupDelay(mediaType.VIDEO);
44
- meeting.setStartSendingMediaDelay(mediaType.AUDIO);
45
- meeting.setStartSendingMediaDelay(mediaType.VIDEO);
46
- break;
47
- case eventType.RECEIVING_MEDIA_START:
48
- meeting.setEndSetupDelay(data.mediaType);
49
- break;
50
- case eventType.SENDING_MEDIA_START:
51
- meeting.setEndSendingMediaDelay(data.mediaType);
52
- break;
53
- case eventType.LOCAL_SDP_GENERATED:
54
- meeting.setStartLocalSDPGenRemoteSDPRecvDelay();
55
- break;
56
- case eventType.REMOTE_SDP_RECEIVED:
57
- meeting.setEndLocalSDPGenRemoteSDPRecvDelay();
58
- break;
59
- default:
60
- break;
61
- }
62
- };
63
4
 
64
5
  /**
65
6
  * @description Metrics handles all the call metrics events
@@ -68,10 +9,6 @@ const triggerTimers = ({event, meeting, data}) => {
68
9
  */
69
10
  class Metrics {
70
11
  static instance: Metrics;
71
-
72
- _events: any;
73
- keys: any;
74
- meetingCollection: any;
75
12
  webex: any;
76
13
 
77
14
  /**
@@ -82,27 +19,6 @@ class Metrics {
82
19
  */
83
20
  constructor() {
84
21
  if (!Metrics.instance) {
85
- /**
86
- * @instance
87
- * @type {Array}
88
- * @private
89
- * @memberof Metrics
90
- */
91
- this._events = [];
92
- /**
93
- * @instance
94
- * @type {MeetingCollection}
95
- * @private
96
- * @memberof Metrics
97
- */
98
- this.meetingCollection = null;
99
- /**
100
- * @instance
101
- * @type {MeetingCollection}
102
- * @private
103
- * @memberof Metrics
104
- */
105
- this.keys = Object.values(eventType);
106
22
  /**
107
23
  * @instance
108
24
  * @type {Metrics}
@@ -119,398 +35,14 @@ class Metrics {
119
35
  /**
120
36
  * Initializes the Metrics singleton with a meeting Collection.
121
37
  *
122
- * @param {Object} meetingCollection meetings object
123
38
  * @param {Object} webex webex SDK object
124
39
  *
125
40
  * @returns {void}
126
41
  */
127
- initialSetup(meetingCollection: object, webex: object) {
128
- this.meetingCollection = meetingCollection;
42
+ initialSetup(webex: object) {
129
43
  this.webex = webex;
130
44
  }
131
45
 
132
- /**
133
- * poste Meeting event metrics
134
- * @param {object} options {meetingId/meeting} as a json object
135
- * @param {Meeting} options.meeting Meeting object
136
- * @param {String} options.meetingId
137
- * @param {object} options.data
138
- * @param {object} options.event
139
- * @returns {object} null
140
- */
141
- postEvent(options: {meeting?: any; meetingId?: string; data?: object; event?: any} | any) {
142
- const {meetingId, data = {}, event} = options;
143
- let {meeting} = options;
144
-
145
- if (this.keys.indexOf(event) === -1) {
146
- LoggerProxy.logger.error(
147
- `Metrics:index#postEvent --> Event ${event} doesn't exist in dictionary`
148
- );
149
- }
150
-
151
- if (!meeting && meetingId) {
152
- meeting = this.meetingCollection.get(meetingId);
153
- options.meeting = meeting;
154
- }
155
-
156
- if (meeting) {
157
- triggerTimers(options);
158
-
159
- if (!meeting.callEvents) {
160
- meeting.callEvents = [];
161
- }
162
- if (event === eventType.MEDIA_QUALITY) {
163
- data.event = event;
164
- meeting.sendMediaQualityAnalyzerMetrics(data);
165
- } else {
166
- meeting.callEvents.push(event);
167
- data.event = event;
168
- meeting.sendCallAnalyzerMetrics(data);
169
- }
170
- } else {
171
- LoggerProxy.logger.info(
172
- `Metrics:index#postEvent --> Event received for meetingId:${meetingId}, but meeting not found in collection.`
173
- );
174
- }
175
- }
176
-
177
- /**
178
- * Docs for Call analyzer metrics
179
- * https://sqbu-github.cisco.com/WebExSquared/call-analyzer/wiki
180
- * https://sqbu-github.cisco.com/WebExSquared/event-dictionary/blob/master/diagnostic-events.raml
181
- */
182
-
183
- // eslint-disable-next-line @typescript-eslint/no-shadow
184
- initPayload(eventType, identifiers, options) {
185
- const payload: any = {
186
- eventId: uuid.v4(),
187
- version: 1,
188
- origin: {
189
- name: 'endpoint',
190
- networkType: 'unknown',
191
- userAgent: this.userAgentToString(),
192
- clientInfo: {
193
- clientType: options.clientType,
194
- clientVersion: `${CLIENT_NAME}/${this.webex.version}`,
195
- localNetworkPrefix: anonymizeIPAddress(this.webex.meetings.geoHintInfo?.clientAddress),
196
- osVersion: getOSVersion() || 'unknown',
197
- subClientType: options.subClientType,
198
- os: getOSNameInternal(),
199
- browser: getBrowserName(),
200
- browserVersion: getBrowserVersion(),
201
- },
202
- },
203
- originTime: {
204
- triggered: new Date().toISOString(),
205
- },
206
- senderCountryCode: this.webex.meetings.geoHintInfo?.countryCode,
207
- event: {
208
- name: eventType,
209
- canProceed: true,
210
- identifiers,
211
- eventData: {webClientDomain: window.location.hostname},
212
- },
213
- };
214
-
215
- // TODO: more options should be checked and some of them should be mandatory in certain conditions
216
- if (options) {
217
- if (Object.prototype.hasOwnProperty.call(options, 'canProceed')) {
218
- payload.event.canProceed = options.canProceed;
219
- }
220
- if (options.errors) {
221
- payload.event.errors = options.errors;
222
- }
223
- if (options.mediaType) {
224
- payload.event.mediaType = options.mediaType;
225
- }
226
- if (options.trigger) {
227
- payload.event.trigger = options.trigger;
228
- }
229
- if (options.pstnAudioType) {
230
- payload.event.pstnAudioType = options.pstnAudioType;
231
- }
232
- if (options.mediaCapabilities) {
233
- payload.event.mediaCapabilities = options.mediaCapabilities;
234
- }
235
- if (options.recoveredBy) {
236
- payload.event.recoveredBy = options.recoveredBy;
237
- }
238
- if (options.joinTimes) {
239
- payload.event.joinTimes = options.joinTimes;
240
- }
241
- if (options.isRoapCallEnabled) {
242
- payload.event.isRoapCallEnabled = options.isRoapCallEnabled;
243
- }
244
- }
245
-
246
- return payload;
247
- }
248
-
249
- /**
250
- * get the payload specific for a media quality event through call analyzer
251
- * @param {String} eventType the event name
252
- * @param {Object} identifiers contains the identifiers needed for CA
253
- * @param {String} identifiers.correlationId
254
- * @param {String} identifiers.locusUrl
255
- * @param {String} identifiers.locusId
256
- * @param {Object} options
257
- * @param {Object} options.intervalData
258
- * @param {String} options.clientType
259
- * @returns {Object}
260
- * @public
261
- * @memberof Metrics
262
- */
263
- public initMediaPayload(
264
- // eslint-disable-next-line @typescript-eslint/no-shadow
265
- eventType: string,
266
- identifiers: {
267
- correlationId: string;
268
- locusUrl: string;
269
- locusId: string;
270
- },
271
- options:
272
- | {
273
- intervalData: object;
274
- clientType: string;
275
- }
276
- | any = {}
277
- ) {
278
- const {audioSetupDelay, videoSetupDelay, joinTimes} = options;
279
-
280
- const payload = {
281
- eventId: uuid.v4(),
282
- version: 1,
283
- origin: {
284
- audioSetupDelay,
285
- videoSetupDelay,
286
- name: 'endpoint',
287
- networkType: options.networkType || UNKNOWN,
288
- userAgent: this.userAgentToString(),
289
- clientInfo: {
290
- clientType: options.clientType, // TODO: Only clientType: 'TEAMS_CLIENT' is whitelisted
291
- clientVersion: `${CLIENT_NAME}/${this.webex.version}`,
292
- localNetworkPrefix: anonymizeIPAddress(this.webex.meetings.geoHintInfo?.clientAddress),
293
- os: getOSNameInternal(),
294
- osVersion: getOSVersion() || UNKNOWN,
295
- subClientType: options.subClientType,
296
- browser: getBrowserName(),
297
- browserVersion: getBrowserVersion(),
298
- },
299
- },
300
- originTime: {
301
- triggered: new Date().toISOString(),
302
- },
303
- senderCountryCode: this.webex.meetings.geoHintInfo?.countryCode,
304
- event: {
305
- name: eventType,
306
- canProceed: true,
307
- identifiers,
308
- intervals: [options.intervalData],
309
- joinTimes,
310
- eventData: {
311
- webClientDomain: window.location.hostname,
312
- },
313
- sourceMetadata: {
314
- applicationSoftwareType: CLIENT_NAME,
315
- applicationSoftwareVersion: this.webex.version,
316
- mediaEngineSoftwareType: getBrowserName() || 'browser',
317
- mediaEngineSoftwareVersion: getOSVersion() || UNKNOWN,
318
- startTime: new Date().toISOString(),
319
- },
320
- },
321
- };
322
-
323
- return payload;
324
- }
325
-
326
- /**
327
- * This function Parses a Locus error and returns a diagnostic event payload.
328
- * It should keep updating from:
329
- * https://sqbu-github.cisco.com/WebExSquared/spark-client-framework/blob/master/spark-client-framework/Adapters/TelephonyAdapter/TelephonyAdapter.cpp#L920
330
- *
331
- * @param {Object} err the error Object from Locus response
332
- * @param {boolean} showToUser true if a toast is shown to user
333
- * @returns {{showToUser: boolean, category: string, errorDescription: string,
334
- * errorCode: number, errorData: *, fatal: boolean, name: string}}
335
- */
336
- parseLocusError(err: any, showToUser: boolean) {
337
- let errorCode;
338
-
339
- if (err && err.statusCode && err.statusCode >= 500) {
340
- errorCode = 1003;
341
- } else if (err && err.body && err.body.errorCode) {
342
- // locus error codes: https://sqbu-github.cisco.com/WebExSquared/locus/blob/master/server/src/main/resources/locus-error-codes.properties
343
- switch (ERROR_CODE[err.body.errorCode]) {
344
- case MEETING_ERRORS.FREE_USER_MAX_PARTICIPANTS_EXCEEDED:
345
- errorCode = 3007;
346
- break;
347
- case MEETING_ERRORS.PAID_USER_MAX_PARTICIPANTS_EXCEEDED:
348
- case MEETING_ERRORS.SERVICE_MAX_PARTICIPANTS_EXCEEDED:
349
- errorCode = 3002;
350
- break;
351
- case MEETING_ERRORS.INACTIVE:
352
- errorCode = 4001;
353
- break;
354
- case MEETING_ERRORS.EXCEEDED_MAX_JOINED_PARTICIPANTS:
355
- case MEETING_ERRORS.EXCEEDED_SERVICE_MAX_PARTICIPANTS:
356
- errorCode = 3001;
357
- break;
358
- case MEETING_ERRORS.MEETING_IS_LOCKED:
359
- errorCode = 4002;
360
- break;
361
- case MEETING_ERRORS.MEETING_IS_TERMINATING:
362
- errorCode = 4003;
363
- break;
364
- case MEETING_ERRORS.MEETING_REQUIRE_MODERATOR_PIN_INTENT:
365
- errorCode = 4004;
366
- break;
367
- case MEETING_ERRORS.MEETING_REQUIRE_MODERATOR_PIN:
368
- errorCode = 4005;
369
- break;
370
- case MEETING_ERRORS.MEETING_REQUIRE_MODERATOR_ROLE:
371
- errorCode = 4006;
372
- break;
373
- case MEETING_ERRORS.JOIN_RESTRICTED_USER:
374
- case MEETING_ERRORS.GET_RESTRICTED_USER:
375
- case MEETING_ERRORS.CREATE_MEDIA_RESTRICTED_USER:
376
- errorCode = 3005;
377
- break;
378
- case MEETING_ERRORS.JOIN_RESTRICTED_USER_NOT_IN_ROOM:
379
- errorCode = 4007;
380
- break;
381
- case MEETING_ERRORS.MEETING_NOT_FOUND:
382
- errorCode = 4011;
383
- break;
384
- case MEETING_ERRORS.NOT_WEBEX_SITE:
385
- errorCode = 4012;
386
- break;
387
- case MEETING_ERRORS.INVALID_JOIN_TIME:
388
- errorCode = 4013;
389
- break;
390
- case MEETING_ERRORS.PHONE_NUMBER_NOT_A_NUMBER:
391
- errorCode = 4016;
392
- break;
393
- case MEETING_ERRORS.PHONE_NUMBER_TOO_LONG:
394
- errorCode = 4017;
395
- break;
396
- case MEETING_ERRORS.INVALID_DIALABLE_KEY:
397
- errorCode = 4018;
398
- break;
399
- case MEETING_ERRORS.ONE_ON_ONE_TO_SELF_NOT_ALLOWED:
400
- errorCode = 4019;
401
- break;
402
- case MEETING_ERRORS.REMOVED_PARTICIPANT:
403
- errorCode = 4020;
404
- break;
405
- case MEETING_ERRORS.MEETING_LINK_NOT_FOUND:
406
- errorCode = 4021;
407
- break;
408
- case MEETING_ERRORS.PHONE_NUMBER_TOO_SHORT_AFTER_IDD:
409
- errorCode = 4022;
410
- break;
411
- case MEETING_ERRORS.INVALID_INVITEE_ADDRESS:
412
- errorCode = 4023;
413
- break;
414
- case MEETING_ERRORS.PMR_ACCOUNT_LOCKED:
415
- errorCode = 4024;
416
- break;
417
- case MEETING_ERRORS.RESOURCE_GUEST_FORBIDDEN:
418
- errorCode = 4025;
419
- break;
420
- case MEETING_ERRORS.PMR_ACCOUNT_SUSPENDED:
421
- errorCode = 4026;
422
- break;
423
- case MEETING_ERRORS.EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE:
424
- errorCode = 4027;
425
- break;
426
- case MEETING_ERRORS.INVALID_SINCE_OR_SEQUENCE_HASH_IN_REQUEST:
427
- errorCode = 1006;
428
- break;
429
- case MEETING_ERRORS.CONVERSATION_NOT_FOUND:
430
- errorCode = 4028;
431
- break;
432
- case MEETING_ERRORS.RECORDING_CONTROL_NOT_SUPPORTED:
433
- case MEETING_ERRORS.RECORDING_NOT_STARTED:
434
- case MEETING_ERRORS.RECORDING_NOT_ENABLED:
435
- errorCode = 4029;
436
- break;
437
- default:
438
- errorCode = 4008;
439
- }
440
- } else {
441
- errorCode = 4008;
442
- }
443
-
444
- return this.generateErrorPayload(errorCode, showToUser, error.name.LOCUS_RESPONSE, err);
445
- }
446
-
447
- generateErrorPayload(errorCode, shownToUser, name, err) {
448
- if (error.errors[errorCode]) {
449
- const errorPayload: any = {
450
- shownToUser: shownToUser || false,
451
- category: error.errors[errorCode][2],
452
- errorDescription: error.errors[errorCode][0],
453
- errorCode,
454
- fatal: !includes(error.notFatalErrorList, errorCode),
455
- name: name || error.name.OTHER,
456
- };
457
-
458
- if (err && err.body) {
459
- errorPayload.errorData = err.body;
460
- }
461
-
462
- if (err && err.statusCode) {
463
- errorPayload.httpCode = err.statusCode;
464
- }
465
-
466
- return errorPayload;
467
- }
468
-
469
- return null;
470
- }
471
-
472
- /**
473
- * Returns a formated string of the user agent.
474
- *
475
- * @returns {string} formatted user agent information
476
- */
477
- userAgentToString() {
478
- let userAgentOption;
479
- let browserInfo;
480
- const clientInfo = util.format('client=%s', `${this.webex.meetings?.metrics?.clientName}`);
481
-
482
- if (
483
- ['chrome', 'firefox', 'msie', 'msedge', 'safari'].indexOf(getBrowserName().toLowerCase()) !==
484
- -1
485
- ) {
486
- browserInfo = util.format(
487
- 'browser=%s',
488
- `${getBrowserName().toLowerCase()}/${getBrowserVersion().split('.')[0]}`
489
- );
490
- }
491
- const osInfo = util.format('os=%s', `${getOSName()}/${getOSVersion().split('.')[0]}`);
492
-
493
- if (browserInfo) {
494
- userAgentOption = `(${browserInfo}`;
495
- }
496
- if (osInfo) {
497
- userAgentOption = userAgentOption
498
- ? `${userAgentOption}; ${clientInfo}; ${osInfo}`
499
- : `${clientInfo}; (${osInfo}`;
500
- }
501
- if (userAgentOption) {
502
- userAgentOption += ')';
503
-
504
- return util.format(
505
- 'webex-js-sdk/%s %s',
506
- `${process.env.NODE_ENV}-${this.webex.version}`,
507
- userAgentOption
508
- );
509
- }
510
-
511
- return util.format('webex-js-sdk/%s', `${process.env.NODE_ENV}-${this.webex.version}`);
512
- }
513
-
514
46
  /**
515
47
  * Uploads given metric to the Metrics service as an Behavioral metric.
516
48
  * Metadata about the environment such as browser, OS, SDK and their versions