@webex/plugin-meetings 3.0.0-beta.41 → 3.0.0-beta.410

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 (398) hide show
  1. package/README.md +58 -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/events.js +45 -0
  11. package/dist/breakouts/events.js.map +1 -0
  12. package/dist/breakouts/index.js +625 -123
  13. package/dist/breakouts/index.js.map +1 -1
  14. package/dist/breakouts/utils.js +27 -8
  15. package/dist/breakouts/utils.js.map +1 -1
  16. package/dist/common/errors/no-meeting-info.js +51 -0
  17. package/dist/common/errors/no-meeting-info.js.map +1 -0
  18. package/dist/common/errors/reclaim-host-role-errors.js +158 -0
  19. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  20. package/dist/common/errors/webex-errors.js +48 -7
  21. package/dist/common/errors/webex-errors.js.map +1 -1
  22. package/dist/common/logs/logger-proxy.js +1 -1
  23. package/dist/common/logs/logger-proxy.js.map +1 -1
  24. package/dist/common/logs/request.js +5 -1
  25. package/dist/common/logs/request.js.map +1 -1
  26. package/dist/common/queue.js +24 -9
  27. package/dist/common/queue.js.map +1 -1
  28. package/dist/config.js +6 -10
  29. package/dist/config.js.map +1 -1
  30. package/dist/constants.js +247 -34
  31. package/dist/constants.js.map +1 -1
  32. package/dist/controls-options-manager/enums.js +14 -2
  33. package/dist/controls-options-manager/enums.js.map +1 -1
  34. package/dist/controls-options-manager/index.js +109 -15
  35. package/dist/controls-options-manager/index.js.map +1 -1
  36. package/dist/controls-options-manager/types.js +7 -0
  37. package/dist/controls-options-manager/types.js.map +1 -0
  38. package/dist/controls-options-manager/util.js +309 -18
  39. package/dist/controls-options-manager/util.js.map +1 -1
  40. package/dist/index.js +116 -2
  41. package/dist/index.js.map +1 -1
  42. package/dist/interceptors/index.js +15 -0
  43. package/dist/interceptors/index.js.map +1 -0
  44. package/dist/interceptors/locusRetry.js +93 -0
  45. package/dist/interceptors/locusRetry.js.map +1 -0
  46. package/dist/interpretation/collection.js +23 -0
  47. package/dist/interpretation/collection.js.map +1 -0
  48. package/dist/interpretation/index.js +380 -0
  49. package/dist/interpretation/index.js.map +1 -0
  50. package/dist/interpretation/siLanguage.js +25 -0
  51. package/dist/interpretation/siLanguage.js.map +1 -0
  52. package/dist/locus-info/controlsUtils.js +91 -2
  53. package/dist/locus-info/controlsUtils.js.map +1 -1
  54. package/dist/locus-info/index.js +386 -62
  55. package/dist/locus-info/index.js.map +1 -1
  56. package/dist/locus-info/infoUtils.js +7 -1
  57. package/dist/locus-info/infoUtils.js.map +1 -1
  58. package/dist/locus-info/mediaSharesUtils.js +71 -1
  59. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  60. package/dist/locus-info/parser.js +249 -72
  61. package/dist/locus-info/parser.js.map +1 -1
  62. package/dist/locus-info/selfUtils.js +89 -14
  63. package/dist/locus-info/selfUtils.js.map +1 -1
  64. package/dist/media/index.js +65 -102
  65. package/dist/media/index.js.map +1 -1
  66. package/dist/media/properties.js +73 -124
  67. package/dist/media/properties.js.map +1 -1
  68. package/dist/mediaQualityMetrics/config.js +135 -330
  69. package/dist/mediaQualityMetrics/config.js.map +1 -1
  70. package/dist/meeting/in-meeting-actions.js +86 -2
  71. package/dist/meeting/in-meeting-actions.js.map +1 -1
  72. package/dist/meeting/index.js +4531 -2994
  73. package/dist/meeting/index.js.map +1 -1
  74. package/dist/meeting/locusMediaRequest.js +292 -0
  75. package/dist/meeting/locusMediaRequest.js.map +1 -0
  76. package/dist/meeting/muteState.js +236 -136
  77. package/dist/meeting/muteState.js.map +1 -1
  78. package/dist/meeting/request.js +189 -155
  79. package/dist/meeting/request.js.map +1 -1
  80. package/dist/meeting/util.js +676 -417
  81. package/dist/meeting/util.js.map +1 -1
  82. package/dist/meeting/voicea-meeting.js +172 -0
  83. package/dist/meeting/voicea-meeting.js.map +1 -0
  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 +201 -57
  87. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  88. package/dist/meeting-info/util.js +8 -7
  89. package/dist/meeting-info/util.js.map +1 -1
  90. package/dist/meeting-info/utilv2.js +44 -40
  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 +484 -119
  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 +73 -7
  101. package/dist/meetings/util.js.map +1 -1
  102. package/dist/member/index.js +57 -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 +100 -5
  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 +18 -1
  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 +223 -32
  123. package/dist/multistream/mediaRequestManager.js.map +1 -1
  124. package/dist/multistream/receiveSlot.js +10 -0
  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 +3 -1
  129. package/dist/multistream/remoteMedia.js.map +1 -1
  130. package/dist/multistream/remoteMediaGroup.js +76 -5
  131. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  132. package/dist/multistream/remoteMediaManager.js +366 -104
  133. package/dist/multistream/remoteMediaManager.js.map +1 -1
  134. package/dist/multistream/sendSlotManager.js +255 -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 +263 -390
  139. package/dist/reachability/index.js.map +1 -1
  140. package/dist/reachability/request.js +6 -4
  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 +266 -202
  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 +66 -28
  151. package/dist/roap/index.js.map +1 -1
  152. package/dist/roap/request.js +48 -64
  153. package/dist/roap/request.js.map +1 -1
  154. package/dist/roap/turnDiscovery.js +407 -79
  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 +179 -0
  159. package/dist/rtcMetrics/index.js.map +1 -0
  160. package/dist/statsAnalyzer/index.js +389 -304
  161. package/dist/statsAnalyzer/index.js.map +1 -1
  162. package/dist/statsAnalyzer/mqaUtil.js +296 -156
  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/events.d.ts +8 -0
  168. package/dist/types/breakouts/utils.d.ts +9 -2
  169. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  170. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  171. package/dist/types/common/errors/webex-errors.d.ts +25 -1
  172. package/dist/types/common/logs/request.d.ts +2 -0
  173. package/dist/types/common/queue.d.ts +9 -7
  174. package/dist/types/config.d.ts +2 -7
  175. package/dist/types/constants.d.ts +204 -32
  176. package/dist/types/controls-options-manager/enums.d.ts +11 -1
  177. package/dist/types/controls-options-manager/index.d.ts +17 -1
  178. package/dist/types/controls-options-manager/types.d.ts +43 -0
  179. package/dist/types/controls-options-manager/util.d.ts +1 -7
  180. package/dist/types/index.d.ts +6 -5
  181. package/dist/types/interceptors/index.d.ts +2 -0
  182. package/dist/types/interceptors/locusRetry.d.ts +27 -0
  183. package/dist/types/interpretation/collection.d.ts +5 -0
  184. package/dist/types/interpretation/index.d.ts +5 -0
  185. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  186. package/dist/types/locus-info/index.d.ts +57 -4
  187. package/dist/types/locus-info/parser.d.ts +66 -6
  188. package/dist/types/media/index.d.ts +2 -0
  189. package/dist/types/media/properties.d.ts +34 -49
  190. package/dist/types/mediaQualityMetrics/config.d.ts +99 -223
  191. package/dist/types/meeting/in-meeting-actions.d.ts +86 -2
  192. package/dist/types/meeting/index.d.ts +630 -505
  193. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  194. package/dist/types/meeting/muteState.d.ts +88 -26
  195. package/dist/types/meeting/request.d.ts +67 -43
  196. package/dist/types/meeting/util.d.ts +117 -1
  197. package/dist/types/meeting/voicea-meeting.d.ts +16 -0
  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 +113 -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 +17 -0
  211. package/dist/types/metrics/index.d.ts +4 -111
  212. package/dist/types/multistream/mediaRequestManager.d.ts +71 -3
  213. package/dist/types/multistream/receiveSlot.d.ts +7 -3
  214. package/dist/types/multistream/receiveSlotManager.d.ts +14 -4
  215. package/dist/types/multistream/remoteMedia.d.ts +3 -31
  216. package/dist/types/multistream/remoteMediaGroup.d.ts +2 -9
  217. package/dist/types/multistream/remoteMediaManager.d.ts +61 -2
  218. package/dist/types/multistream/sendSlotManager.d.ts +69 -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 +3 -1
  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 +11 -2
  227. package/dist/types/roap/request.d.ts +9 -8
  228. package/dist/types/roap/turnDiscovery.d.ts +90 -9
  229. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  230. package/dist/types/rtcMetrics/index.d.ts +61 -0
  231. package/dist/types/statsAnalyzer/index.d.ts +34 -12
  232. package/dist/types/statsAnalyzer/mqaUtil.d.ts +28 -4
  233. package/dist/types/webinar/collection.d.ts +16 -0
  234. package/dist/types/webinar/index.d.ts +5 -0
  235. package/dist/webinar/collection.js +44 -0
  236. package/dist/webinar/collection.js.map +1 -0
  237. package/dist/webinar/index.js +69 -0
  238. package/dist/webinar/index.js.map +1 -0
  239. package/package.json +22 -19
  240. package/src/annotation/annotation.types.ts +50 -0
  241. package/src/annotation/constants.ts +36 -0
  242. package/src/annotation/index.ts +328 -0
  243. package/src/breakouts/README.md +27 -6
  244. package/src/breakouts/breakout.ts +67 -9
  245. package/src/breakouts/events.ts +56 -0
  246. package/src/breakouts/index.ts +494 -73
  247. package/src/breakouts/utils.ts +26 -8
  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 +6 -13
  255. package/src/constants.ts +234 -22
  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 +45 -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 +349 -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 +417 -59
  269. package/src/locus-info/infoUtils.ts +10 -2
  270. package/src/locus-info/mediaSharesUtils.ts +80 -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 +100 -108
  274. package/src/media/properties.ts +88 -117
  275. package/src/mediaQualityMetrics/config.ts +103 -238
  276. package/src/meeting/in-meeting-actions.ts +171 -3
  277. package/src/meeting/index.ts +3929 -2622
  278. package/src/meeting/locusMediaRequest.ts +313 -0
  279. package/src/meeting/muteState.ts +237 -136
  280. package/src/meeting/request.ts +173 -122
  281. package/src/meeting/util.ts +690 -395
  282. package/src/meeting/voicea-meeting.ts +122 -0
  283. package/src/meeting-info/index.ts +81 -8
  284. package/src/meeting-info/meeting-info-v2.ts +166 -16
  285. package/src/meeting-info/util.ts +13 -10
  286. package/src/meeting-info/utilv2.ts +47 -37
  287. package/src/meetings/collection.ts +33 -0
  288. package/src/meetings/index.ts +507 -127
  289. package/src/meetings/meetings.types.ts +12 -0
  290. package/src/meetings/request.ts +2 -0
  291. package/src/meetings/util.ts +81 -12
  292. package/src/member/index.ts +57 -0
  293. package/src/member/types.ts +38 -0
  294. package/src/member/util.ts +141 -25
  295. package/src/members/collection.ts +8 -0
  296. package/src/members/index.ts +133 -7
  297. package/src/members/request.ts +97 -17
  298. package/src/members/types.ts +29 -0
  299. package/src/members/util.ts +333 -240
  300. package/src/metrics/constants.ts +17 -0
  301. package/src/metrics/index.ts +1 -469
  302. package/src/multistream/mediaRequestManager.ts +271 -56
  303. package/src/multistream/receiveSlot.ts +11 -4
  304. package/src/multistream/receiveSlotManager.ts +34 -24
  305. package/src/multistream/remoteMedia.ts +5 -3
  306. package/src/multistream/remoteMediaGroup.ts +78 -0
  307. package/src/multistream/remoteMediaManager.ts +248 -45
  308. package/src/multistream/sendSlotManager.ts +198 -0
  309. package/src/reachability/clusterReachability.ts +320 -0
  310. package/src/reachability/index.ts +229 -346
  311. package/src/reachability/request.ts +8 -4
  312. package/src/reachability/util.ts +24 -0
  313. package/src/reconnection-manager/index.ts +128 -97
  314. package/src/recording-controller/index.ts +20 -3
  315. package/src/recording-controller/util.ts +26 -9
  316. package/src/roap/index.ts +76 -25
  317. package/src/roap/request.ts +48 -67
  318. package/src/roap/turnDiscovery.ts +331 -67
  319. package/src/rtcMetrics/constants.ts +3 -0
  320. package/src/rtcMetrics/index.ts +166 -0
  321. package/src/statsAnalyzer/index.ts +496 -419
  322. package/src/statsAnalyzer/mqaUtil.ts +317 -170
  323. package/src/webinar/collection.ts +31 -0
  324. package/src/webinar/index.ts +62 -0
  325. package/test/integration/spec/converged-space-meetings.js +60 -3
  326. package/test/integration/spec/journey.js +321 -262
  327. package/test/integration/spec/space-meeting.js +76 -3
  328. package/test/unit/spec/annotation/index.ts +418 -0
  329. package/test/unit/spec/breakouts/breakout.ts +119 -28
  330. package/test/unit/spec/breakouts/events.ts +89 -0
  331. package/test/unit/spec/breakouts/index.ts +1204 -118
  332. package/test/unit/spec/breakouts/utils.js +27 -2
  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 +625 -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 +1372 -37
  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 +41 -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 +203 -17
  349. package/test/unit/spec/media/index.ts +178 -81
  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 +7835 -2501
  353. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  354. package/test/unit/spec/meeting/muteState.js +549 -207
  355. package/test/unit/spec/meeting/request.js +494 -54
  356. package/test/unit/spec/meeting/utils.js +827 -74
  357. package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
  358. package/test/unit/spec/meeting-info/index.js +300 -0
  359. package/test/unit/spec/meeting-info/meetinginfov2.js +535 -9
  360. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  361. package/test/unit/spec/meetings/collection.js +26 -0
  362. package/test/unit/spec/meetings/index.js +1489 -219
  363. package/test/unit/spec/meetings/utils.js +229 -2
  364. package/test/unit/spec/member/index.js +61 -6
  365. package/test/unit/spec/member/util.js +510 -34
  366. package/test/unit/spec/members/index.js +432 -1
  367. package/test/unit/spec/members/request.js +206 -27
  368. package/test/unit/spec/members/utils.js +210 -0
  369. package/test/unit/spec/metrics/index.js +2 -52
  370. package/test/unit/spec/multistream/mediaRequestManager.ts +782 -114
  371. package/test/unit/spec/multistream/receiveSlot.ts +9 -1
  372. package/test/unit/spec/multistream/receiveSlotManager.ts +32 -30
  373. package/test/unit/spec/multistream/remoteMedia.ts +2 -0
  374. package/test/unit/spec/multistream/remoteMediaGroup.ts +344 -0
  375. package/test/unit/spec/multistream/remoteMediaManager.ts +524 -0
  376. package/test/unit/spec/multistream/sendSlotManager.ts +274 -0
  377. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  378. package/test/unit/spec/reachability/index.ts +551 -14
  379. package/test/unit/spec/reachability/request.js +3 -1
  380. package/test/unit/spec/reachability/util.ts +40 -0
  381. package/test/unit/spec/reconnection-manager/index.js +171 -11
  382. package/test/unit/spec/recording-controller/index.js +293 -218
  383. package/test/unit/spec/recording-controller/util.js +223 -96
  384. package/test/unit/spec/roap/index.ts +233 -81
  385. package/test/unit/spec/roap/request.ts +100 -62
  386. package/test/unit/spec/roap/turnDiscovery.ts +682 -108
  387. package/test/unit/spec/rtcMetrics/index.ts +122 -0
  388. package/test/unit/spec/stats-analyzer/index.js +1431 -12
  389. package/test/unit/spec/webinar/collection.ts +13 -0
  390. package/test/unit/spec/webinar/index.ts +60 -0
  391. package/test/utils/integrationTestUtils.js +46 -0
  392. package/test/utils/testUtils.js +0 -57
  393. package/test/utils/webex-test-users.js +12 -4
  394. package/dist/metrics/config.js +0 -289
  395. package/dist/metrics/config.js.map +0 -1
  396. package/dist/types/metrics/config.d.ts +0 -169
  397. package/src/index.js +0 -18
  398. package/src/metrics/config.ts +0 -485
@@ -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