@webex/plugin-meetings 2.59.8 → 2.60.0-next.10

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 (517) hide show
  1. package/README.md +46 -8
  2. package/dist/annotation/annotation.types.d.ts +42 -0
  3. package/dist/annotation/annotation.types.js +7 -0
  4. package/dist/annotation/annotation.types.js.map +1 -0
  5. package/dist/annotation/constants.d.ts +31 -0
  6. package/dist/annotation/constants.js +41 -0
  7. package/dist/annotation/constants.js.map +1 -0
  8. package/dist/annotation/index.d.ts +117 -0
  9. package/dist/annotation/index.js +357 -0
  10. package/dist/annotation/index.js.map +1 -0
  11. package/dist/breakouts/breakout.d.ts +8 -0
  12. package/dist/breakouts/breakout.js +215 -0
  13. package/dist/breakouts/breakout.js.map +1 -0
  14. package/dist/breakouts/collection.d.ts +5 -0
  15. package/dist/breakouts/collection.js +22 -0
  16. package/dist/breakouts/collection.js.map +1 -0
  17. package/dist/breakouts/edit-lock-error.d.ts +15 -0
  18. package/dist/breakouts/edit-lock-error.js +51 -0
  19. package/dist/breakouts/edit-lock-error.js.map +1 -0
  20. package/dist/breakouts/events.d.ts +8 -0
  21. package/dist/breakouts/events.js +44 -0
  22. package/dist/breakouts/events.js.map +1 -0
  23. package/dist/breakouts/index.d.ts +5 -0
  24. package/dist/breakouts/index.js +1047 -0
  25. package/dist/breakouts/index.js.map +1 -0
  26. package/dist/breakouts/request.d.ts +22 -0
  27. package/dist/breakouts/request.js +77 -0
  28. package/dist/breakouts/request.js.map +1 -0
  29. package/dist/breakouts/utils.d.ts +15 -0
  30. package/dist/breakouts/utils.js +64 -0
  31. package/dist/breakouts/utils.js.map +1 -0
  32. package/dist/common/browser-detection.js +2 -3
  33. package/dist/common/browser-detection.js.map +1 -1
  34. package/dist/common/collection.js +3 -4
  35. package/dist/common/collection.js.map +1 -1
  36. package/dist/common/config.js +1 -2
  37. package/dist/common/config.js.map +1 -1
  38. package/dist/common/errors/captcha-error.js +1 -2
  39. package/dist/common/errors/captcha-error.js.map +1 -1
  40. package/dist/common/errors/intent-to-join.js +1 -2
  41. package/dist/common/errors/intent-to-join.js.map +1 -1
  42. package/dist/common/errors/join-meeting.js +1 -2
  43. package/dist/common/errors/join-meeting.js.map +1 -1
  44. package/dist/common/errors/media.js +1 -2
  45. package/dist/common/errors/media.js.map +1 -1
  46. package/dist/common/errors/no-meeting-info.d.ts +14 -0
  47. package/dist/common/errors/no-meeting-info.js +50 -0
  48. package/dist/common/errors/no-meeting-info.js.map +1 -0
  49. package/dist/common/errors/parameter.js +3 -4
  50. package/dist/common/errors/parameter.js.map +1 -1
  51. package/dist/common/errors/password-error.js +1 -2
  52. package/dist/common/errors/password-error.js.map +1 -1
  53. package/dist/common/errors/permission.js +1 -2
  54. package/dist/common/errors/permission.js.map +1 -1
  55. package/dist/common/errors/reclaim-host-role-errors.d.ts +60 -0
  56. package/dist/common/errors/reclaim-host-role-errors.js +154 -0
  57. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  58. package/dist/common/errors/reconnection-in-progress.js +1 -2
  59. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  60. package/dist/common/errors/reconnection.js +1 -2
  61. package/dist/common/errors/reconnection.js.map +1 -1
  62. package/dist/common/errors/stats.js +1 -2
  63. package/dist/common/errors/stats.js.map +1 -1
  64. package/dist/common/errors/webex-errors.d.ts +20 -8
  65. package/dist/common/errors/webex-errors.js +48 -28
  66. package/dist/common/errors/webex-errors.js.map +1 -1
  67. package/dist/common/errors/webex-meetings-error.js +1 -2
  68. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  69. package/dist/common/events/events-scope.js +1 -2
  70. package/dist/common/events/events-scope.js.map +1 -1
  71. package/dist/common/events/events.js +1 -2
  72. package/dist/common/events/events.js.map +1 -1
  73. package/dist/common/events/trigger-proxy.js +1 -2
  74. package/dist/common/events/trigger-proxy.js.map +1 -1
  75. package/dist/common/events/util.js +1 -2
  76. package/dist/common/events/util.js.map +1 -1
  77. package/dist/common/logs/logger-config.js +1 -2
  78. package/dist/common/logs/logger-config.js.map +1 -1
  79. package/dist/common/logs/logger-proxy.js +2 -3
  80. package/dist/common/logs/logger-proxy.js.map +1 -1
  81. package/dist/common/logs/request.d.ts +3 -1
  82. package/dist/common/logs/request.js +8 -5
  83. package/dist/common/logs/request.js.map +1 -1
  84. package/dist/common/queue.d.ts +9 -7
  85. package/dist/common/queue.js +22 -9
  86. package/dist/common/queue.js.map +1 -1
  87. package/dist/config.d.ts +5 -7
  88. package/dist/config.js +8 -11
  89. package/dist/config.js.map +1 -1
  90. package/dist/constants.d.ts +243 -97
  91. package/dist/constants.js +437 -435
  92. package/dist/constants.js.map +1 -1
  93. package/dist/controls-options-manager/constants.js +3 -6
  94. package/dist/controls-options-manager/constants.js.map +1 -1
  95. package/dist/controls-options-manager/enums.d.ts +11 -1
  96. package/dist/controls-options-manager/enums.js +15 -6
  97. package/dist/controls-options-manager/enums.js.map +1 -1
  98. package/dist/controls-options-manager/index.d.ts +17 -1
  99. package/dist/controls-options-manager/index.js +127 -38
  100. package/dist/controls-options-manager/index.js.map +1 -1
  101. package/dist/controls-options-manager/types.d.ts +43 -0
  102. package/dist/controls-options-manager/types.js +7 -0
  103. package/dist/controls-options-manager/types.js.map +1 -0
  104. package/dist/controls-options-manager/util.d.ts +1 -7
  105. package/dist/controls-options-manager/util.js +309 -19
  106. package/dist/controls-options-manager/util.js.map +1 -1
  107. package/dist/index.d.ts +6 -3
  108. package/dist/index.js +116 -4
  109. package/dist/index.js.map +1 -1
  110. package/dist/interpretation/collection.d.ts +5 -0
  111. package/dist/interpretation/collection.js +22 -0
  112. package/dist/interpretation/collection.js.map +1 -0
  113. package/dist/interpretation/index.d.ts +5 -0
  114. package/dist/interpretation/index.js +365 -0
  115. package/dist/interpretation/index.js.map +1 -0
  116. package/dist/interpretation/siLanguage.d.ts +5 -0
  117. package/dist/interpretation/siLanguage.js +24 -0
  118. package/dist/interpretation/siLanguage.js.map +1 -0
  119. package/dist/locus-info/controlsUtils.js +100 -11
  120. package/dist/locus-info/controlsUtils.js.map +1 -1
  121. package/dist/locus-info/embeddedAppsUtils.js +3 -4
  122. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  123. package/dist/locus-info/fullState.js +1 -2
  124. package/dist/locus-info/fullState.js.map +1 -1
  125. package/dist/locus-info/hostUtils.js +1 -2
  126. package/dist/locus-info/hostUtils.js.map +1 -1
  127. package/dist/locus-info/index.d.ts +57 -4
  128. package/dist/locus-info/index.js +425 -84
  129. package/dist/locus-info/index.js.map +1 -1
  130. package/dist/locus-info/infoUtils.js +13 -5
  131. package/dist/locus-info/infoUtils.js.map +1 -1
  132. package/dist/locus-info/mediaSharesUtils.js +58 -3
  133. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  134. package/dist/locus-info/parser.d.ts +66 -6
  135. package/dist/locus-info/parser.js +253 -80
  136. package/dist/locus-info/parser.js.map +1 -1
  137. package/dist/locus-info/selfUtils.js +97 -13
  138. package/dist/locus-info/selfUtils.js.map +1 -1
  139. package/dist/media/index.d.ts +2 -0
  140. package/dist/media/index.js +107 -319
  141. package/dist/media/index.js.map +1 -1
  142. package/dist/media/properties.d.ts +38 -53
  143. package/dist/media/properties.js +96 -153
  144. package/dist/media/properties.js.map +1 -1
  145. package/dist/media/util.js +1 -22
  146. package/dist/media/util.js.map +1 -1
  147. package/dist/mediaQualityMetrics/config.d.ts +234 -230
  148. package/dist/mediaQualityMetrics/config.js +302 -498
  149. package/dist/mediaQualityMetrics/config.js.map +1 -1
  150. package/dist/meeting/in-meeting-actions.d.ts +88 -0
  151. package/dist/meeting/in-meeting-actions.js +94 -3
  152. package/dist/meeting/in-meeting-actions.js.map +1 -1
  153. package/dist/meeting/index.d.ts +591 -494
  154. package/dist/meeting/index.js +4728 -2990
  155. package/dist/meeting/index.js.map +1 -1
  156. package/dist/meeting/locusMediaRequest.d.ts +74 -0
  157. package/dist/meeting/locusMediaRequest.js +291 -0
  158. package/dist/meeting/locusMediaRequest.js.map +1 -0
  159. package/dist/meeting/muteState.d.ts +93 -25
  160. package/dist/meeting/muteState.js +224 -133
  161. package/dist/meeting/muteState.js.map +1 -1
  162. package/dist/meeting/request.d.ts +82 -47
  163. package/dist/meeting/request.js +297 -199
  164. package/dist/meeting/request.js.map +1 -1
  165. package/dist/meeting/request.type.d.ts +11 -0
  166. package/dist/meeting/request.type.js +7 -0
  167. package/dist/meeting/request.type.js.map +1 -0
  168. package/dist/meeting/state.js +1 -2
  169. package/dist/meeting/state.js.map +1 -1
  170. package/dist/meeting/util.d.ts +102 -1
  171. package/dist/meeting/util.js +605 -435
  172. package/dist/meeting/util.js.map +1 -1
  173. package/dist/meeting-info/collection.js +3 -4
  174. package/dist/meeting-info/collection.js.map +1 -1
  175. package/dist/meeting-info/index.d.ts +13 -1
  176. package/dist/meeting-info/index.js +74 -7
  177. package/dist/meeting-info/index.js.map +1 -1
  178. package/dist/meeting-info/meeting-info-v2.d.ts +31 -1
  179. package/dist/meeting-info/meeting-info-v2.js +200 -63
  180. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  181. package/dist/meeting-info/request.js +1 -2
  182. package/dist/meeting-info/request.js.map +1 -1
  183. package/dist/meeting-info/util.js +2 -3
  184. package/dist/meeting-info/util.js.map +1 -1
  185. package/dist/meeting-info/utilv2.js +39 -41
  186. package/dist/meeting-info/utilv2.js.map +1 -1
  187. package/dist/meetings/collection.d.ts +17 -0
  188. package/dist/meetings/collection.js +42 -4
  189. package/dist/meetings/collection.js.map +1 -1
  190. package/dist/meetings/index.d.ts +103 -21
  191. package/dist/meetings/index.js +486 -124
  192. package/dist/meetings/index.js.map +1 -1
  193. package/dist/meetings/meetings.types.d.ts +4 -0
  194. package/dist/meetings/meetings.types.js +7 -0
  195. package/dist/meetings/meetings.types.js.map +1 -0
  196. package/dist/meetings/request.js +4 -3
  197. package/dist/meetings/request.js.map +1 -1
  198. package/dist/meetings/util.js +107 -6
  199. package/dist/meetings/util.js.map +1 -1
  200. package/dist/member/index.d.ts +14 -1
  201. package/dist/member/index.js +54 -2
  202. package/dist/member/index.js.map +1 -1
  203. package/dist/member/member.types.js +3 -4
  204. package/dist/member/member.types.js.map +1 -1
  205. package/dist/member/types.d.ts +32 -0
  206. package/dist/member/types.js +23 -0
  207. package/dist/member/types.js.map +1 -0
  208. package/dist/member/util.js +131 -29
  209. package/dist/member/util.js.map +1 -1
  210. package/dist/members/collection.d.ts +5 -0
  211. package/dist/members/collection.js +11 -2
  212. package/dist/members/collection.js.map +1 -1
  213. package/dist/members/index.d.ts +57 -2
  214. package/dist/members/index.js +174 -10
  215. package/dist/members/index.js.map +1 -1
  216. package/dist/members/request.d.ts +73 -9
  217. package/dist/members/request.js +108 -41
  218. package/dist/members/request.js.map +1 -1
  219. package/dist/members/types.d.ts +25 -0
  220. package/dist/members/types.js +14 -0
  221. package/dist/members/types.js.map +1 -0
  222. package/dist/members/util.d.ts +214 -1
  223. package/dist/members/util.js +327 -234
  224. package/dist/members/util.js.map +1 -1
  225. package/dist/metrics/constants.d.ts +15 -6
  226. package/dist/metrics/constants.js +17 -9
  227. package/dist/metrics/constants.js.map +1 -1
  228. package/dist/metrics/index.d.ts +4 -111
  229. package/dist/metrics/index.js +4 -452
  230. package/dist/metrics/index.js.map +1 -1
  231. package/dist/multistream/mediaRequestManager.d.ts +118 -0
  232. package/dist/multistream/mediaRequestManager.js +344 -0
  233. package/dist/multistream/mediaRequestManager.js.map +1 -0
  234. package/dist/multistream/receiveSlot.d.ts +68 -0
  235. package/dist/multistream/receiveSlot.js +200 -0
  236. package/dist/multistream/receiveSlot.js.map +1 -0
  237. package/dist/multistream/receiveSlotManager.d.ts +56 -0
  238. package/dist/multistream/receiveSlotManager.js +174 -0
  239. package/dist/multistream/receiveSlotManager.js.map +1 -0
  240. package/dist/multistream/remoteMedia.d.ts +72 -0
  241. package/dist/multistream/remoteMedia.js +268 -0
  242. package/dist/multistream/remoteMedia.js.map +1 -0
  243. package/dist/multistream/remoteMediaGroup.d.ts +47 -0
  244. package/dist/multistream/remoteMediaGroup.js +267 -0
  245. package/dist/multistream/remoteMediaGroup.js.map +1 -0
  246. package/dist/multistream/remoteMediaManager.d.ts +285 -0
  247. package/dist/multistream/remoteMediaManager.js +1211 -0
  248. package/dist/multistream/remoteMediaManager.js.map +1 -0
  249. package/dist/multistream/sendSlotManager.d.ts +61 -0
  250. package/dist/multistream/sendSlotManager.js +236 -0
  251. package/dist/multistream/sendSlotManager.js.map +1 -0
  252. package/dist/networkQualityMonitor/index.js +5 -4
  253. package/dist/networkQualityMonitor/index.js.map +1 -1
  254. package/dist/personal-meeting-room/index.js +2 -3
  255. package/dist/personal-meeting-room/index.js.map +1 -1
  256. package/dist/personal-meeting-room/request.js +2 -3
  257. package/dist/personal-meeting-room/request.js.map +1 -1
  258. package/dist/personal-meeting-room/util.js +1 -2
  259. package/dist/personal-meeting-room/util.js.map +1 -1
  260. package/dist/reachability/index.d.ts +62 -7
  261. package/dist/reachability/index.js +265 -72
  262. package/dist/reachability/index.js.map +1 -1
  263. package/dist/reachability/request.d.ts +7 -3
  264. package/dist/reachability/request.js +18 -10
  265. package/dist/reachability/request.js.map +1 -1
  266. package/dist/reactions/constants.d.ts +3 -0
  267. package/dist/reactions/constants.js +12 -0
  268. package/dist/reactions/constants.js.map +1 -0
  269. package/dist/reactions/reactions.d.ts +2 -2
  270. package/dist/reactions/reactions.js +4 -6
  271. package/dist/reactions/reactions.js.map +1 -1
  272. package/dist/reactions/reactions.type.d.ts +23 -3
  273. package/dist/reactions/reactions.type.js +21 -23
  274. package/dist/reactions/reactions.type.js.map +1 -1
  275. package/dist/reconnection-manager/index.d.ts +32 -8
  276. package/dist/reconnection-manager/index.js +282 -231
  277. package/dist/reconnection-manager/index.js.map +1 -1
  278. package/dist/recording-controller/enums.js +4 -5
  279. package/dist/recording-controller/enums.js.map +1 -1
  280. package/dist/recording-controller/index.d.ts +15 -1
  281. package/dist/recording-controller/index.js +57 -46
  282. package/dist/recording-controller/index.js.map +1 -1
  283. package/dist/recording-controller/util.d.ts +5 -4
  284. package/dist/recording-controller/util.js +10 -10
  285. package/dist/recording-controller/util.js.map +1 -1
  286. package/dist/roap/index.d.ts +9 -47
  287. package/dist/roap/index.js +101 -235
  288. package/dist/roap/index.js.map +1 -1
  289. package/dist/roap/request.d.ts +18 -12
  290. package/dist/roap/request.js +126 -180
  291. package/dist/roap/request.js.map +1 -1
  292. package/dist/roap/turnDiscovery.d.ts +27 -16
  293. package/dist/roap/turnDiscovery.js +115 -105
  294. package/dist/roap/turnDiscovery.js.map +1 -1
  295. package/dist/rtcMetrics/constants.d.ts +4 -0
  296. package/dist/rtcMetrics/constants.js +11 -0
  297. package/dist/rtcMetrics/constants.js.map +1 -0
  298. package/dist/rtcMetrics/index.d.ts +54 -0
  299. package/dist/rtcMetrics/index.js +140 -0
  300. package/dist/rtcMetrics/index.js.map +1 -0
  301. package/dist/statsAnalyzer/global.d.ts +1 -83
  302. package/dist/statsAnalyzer/global.js +2 -85
  303. package/dist/statsAnalyzer/global.js.map +1 -1
  304. package/dist/statsAnalyzer/index.d.ts +28 -30
  305. package/dist/statsAnalyzer/index.js +374 -509
  306. package/dist/statsAnalyzer/index.js.map +1 -1
  307. package/dist/statsAnalyzer/mqaUtil.d.ts +8 -6
  308. package/dist/statsAnalyzer/mqaUtil.js +116 -83
  309. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  310. package/dist/transcription/index.js +1 -2
  311. package/dist/transcription/index.js.map +1 -1
  312. package/dist/webinar/collection.d.ts +16 -0
  313. package/dist/webinar/collection.js +43 -0
  314. package/dist/webinar/collection.js.map +1 -0
  315. package/dist/webinar/index.d.ts +5 -0
  316. package/dist/webinar/index.js +68 -0
  317. package/dist/webinar/index.js.map +1 -0
  318. package/package.json +35 -26
  319. package/src/annotation/annotation.types.ts +50 -0
  320. package/src/annotation/constants.ts +36 -0
  321. package/src/annotation/index.ts +328 -0
  322. package/src/breakouts/README.md +220 -0
  323. package/src/breakouts/breakout.ts +188 -0
  324. package/src/breakouts/collection.ts +19 -0
  325. package/src/breakouts/edit-lock-error.ts +25 -0
  326. package/src/breakouts/events.ts +56 -0
  327. package/src/breakouts/index.ts +925 -0
  328. package/src/breakouts/request.ts +55 -0
  329. package/src/breakouts/utils.ts +57 -0
  330. package/src/common/errors/no-meeting-info.ts +24 -0
  331. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  332. package/src/common/errors/webex-errors.ts +36 -12
  333. package/src/common/logs/logger-proxy.ts +1 -1
  334. package/src/common/logs/request.ts +5 -1
  335. package/src/common/queue.ts +22 -8
  336. package/src/config.ts +5 -7
  337. package/src/constants.ts +271 -93
  338. package/src/controls-options-manager/enums.ts +12 -0
  339. package/src/controls-options-manager/index.ts +116 -21
  340. package/src/controls-options-manager/types.ts +59 -0
  341. package/src/controls-options-manager/util.ts +294 -14
  342. package/src/index.ts +40 -0
  343. package/src/interpretation/README.md +60 -0
  344. package/src/interpretation/collection.ts +19 -0
  345. package/src/interpretation/index.ts +332 -0
  346. package/src/interpretation/siLanguage.ts +18 -0
  347. package/src/locus-info/controlsUtils.ts +110 -0
  348. package/src/locus-info/index.ts +449 -61
  349. package/src/locus-info/infoUtils.ts +14 -2
  350. package/src/locus-info/mediaSharesUtils.ts +64 -0
  351. package/src/locus-info/parser.ts +258 -47
  352. package/src/locus-info/selfUtils.ts +85 -2
  353. package/src/media/index.ts +153 -370
  354. package/src/media/properties.ts +106 -136
  355. package/src/media/util.ts +0 -21
  356. package/src/mediaQualityMetrics/config.ts +244 -377
  357. package/src/meeting/in-meeting-actions.ts +176 -0
  358. package/src/meeting/index.ts +3895 -2448
  359. package/src/meeting/locusMediaRequest.ts +313 -0
  360. package/src/meeting/muteState.ts +224 -138
  361. package/src/meeting/request.ts +207 -127
  362. package/src/meeting/request.type.ts +13 -0
  363. package/src/meeting/util.ts +590 -423
  364. package/src/meeting-info/index.ts +81 -8
  365. package/src/meeting-info/meeting-info-v2.ts +163 -13
  366. package/src/meeting-info/util.ts +1 -1
  367. package/src/meeting-info/utilv2.ts +28 -28
  368. package/src/meetings/collection.ts +33 -0
  369. package/src/meetings/index.ts +486 -126
  370. package/src/meetings/meetings.types.ts +12 -0
  371. package/src/meetings/request.ts +2 -0
  372. package/src/meetings/util.ts +116 -5
  373. package/src/member/index.ts +52 -1
  374. package/src/member/types.ts +38 -0
  375. package/src/member/util.ts +139 -28
  376. package/src/members/collection.ts +8 -0
  377. package/src/members/index.ts +196 -7
  378. package/src/members/request.ts +97 -17
  379. package/src/members/types.ts +29 -0
  380. package/src/members/util.ts +333 -240
  381. package/src/metrics/constants.ts +15 -6
  382. package/src/metrics/index.ts +1 -471
  383. package/src/multistream/mediaRequestManager.ts +440 -0
  384. package/src/multistream/receiveSlot.ts +184 -0
  385. package/src/multistream/receiveSlotManager.ts +166 -0
  386. package/src/multistream/remoteMedia.ts +254 -0
  387. package/src/multistream/remoteMediaGroup.ts +284 -0
  388. package/src/multistream/remoteMediaManager.ts +1145 -0
  389. package/src/multistream/sendSlotManager.ts +170 -0
  390. package/src/networkQualityMonitor/index.ts +6 -6
  391. package/src/reachability/index.ts +238 -45
  392. package/src/reachability/request.ts +17 -8
  393. package/src/reactions/constants.ts +4 -0
  394. package/src/reactions/reactions.ts +4 -4
  395. package/src/reactions/reactions.type.ts +30 -4
  396. package/src/reconnection-manager/index.ts +168 -156
  397. package/src/recording-controller/index.ts +20 -3
  398. package/src/recording-controller/util.ts +26 -9
  399. package/src/roap/index.ts +98 -241
  400. package/src/roap/request.ts +74 -148
  401. package/src/roap/turnDiscovery.ts +62 -56
  402. package/src/rtcMetrics/constants.ts +3 -0
  403. package/src/rtcMetrics/index.ts +124 -0
  404. package/src/statsAnalyzer/global.ts +1 -84
  405. package/src/statsAnalyzer/index.ts +413 -642
  406. package/src/statsAnalyzer/mqaUtil.ts +111 -114
  407. package/src/webinar/collection.ts +31 -0
  408. package/src/webinar/index.ts +62 -0
  409. package/test/integration/spec/converged-space-meetings.js +233 -0
  410. package/test/integration/spec/journey.js +320 -264
  411. package/test/integration/spec/space-meeting.js +77 -4
  412. package/test/unit/spec/annotation/index.ts +418 -0
  413. package/test/unit/spec/breakouts/breakout.ts +237 -0
  414. package/test/unit/spec/breakouts/collection.ts +15 -0
  415. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  416. package/test/unit/spec/breakouts/events.ts +89 -0
  417. package/test/unit/spec/breakouts/index.ts +1790 -0
  418. package/test/unit/spec/breakouts/request.ts +104 -0
  419. package/test/unit/spec/breakouts/utils.js +72 -0
  420. package/test/unit/spec/common/queue.js +31 -2
  421. package/test/unit/spec/controls-options-manager/index.js +163 -0
  422. package/test/unit/spec/controls-options-manager/util.js +576 -60
  423. package/test/unit/spec/fixture/locus.js +1 -0
  424. package/test/unit/spec/interpretation/collection.ts +15 -0
  425. package/test/unit/spec/interpretation/index.ts +589 -0
  426. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  427. package/test/unit/spec/locus-info/controlsUtils.js +323 -30
  428. package/test/unit/spec/locus-info/index.js +1390 -16
  429. package/test/unit/spec/locus-info/infoUtils.js +54 -16
  430. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  431. package/test/unit/spec/locus-info/lib/selfConstant.js +48 -0
  432. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  433. package/test/unit/spec/locus-info/parser.js +116 -35
  434. package/test/unit/spec/locus-info/selfUtils.js +275 -0
  435. package/test/unit/spec/media/index.ts +290 -0
  436. package/test/unit/spec/media/properties.ts +75 -84
  437. package/test/unit/spec/meeting/in-meeting-actions.ts +86 -0
  438. package/test/unit/spec/meeting/index.js +8181 -2770
  439. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  440. package/test/unit/spec/meeting/muteState.js +409 -213
  441. package/test/unit/spec/meeting/request.js +512 -42
  442. package/test/unit/spec/meeting/utils.js +741 -24
  443. package/test/unit/spec/meeting-info/index.js +300 -0
  444. package/test/unit/spec/meeting-info/meetinginfov2.js +527 -5
  445. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  446. package/test/unit/spec/meetings/collection.js +26 -0
  447. package/test/unit/spec/meetings/index.js +1284 -217
  448. package/test/unit/spec/meetings/utils.js +202 -2
  449. package/test/unit/spec/member/index.js +38 -8
  450. package/test/unit/spec/member/util.js +499 -29
  451. package/test/unit/spec/members/index.js +597 -3
  452. package/test/unit/spec/members/request.js +206 -27
  453. package/test/unit/spec/members/utils.js +210 -0
  454. package/test/unit/spec/metrics/index.js +1 -50
  455. package/test/unit/spec/multistream/mediaRequestManager.ts +1418 -0
  456. package/test/unit/spec/multistream/receiveSlot.ts +163 -0
  457. package/test/unit/spec/multistream/receiveSlotManager.ts +203 -0
  458. package/test/unit/spec/multistream/remoteMedia.ts +255 -0
  459. package/test/unit/spec/multistream/remoteMediaGroup.ts +662 -0
  460. package/test/unit/spec/multistream/remoteMediaManager.ts +1924 -0
  461. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  462. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  463. package/test/unit/spec/reachability/index.ts +598 -24
  464. package/test/unit/spec/reachability/request.js +68 -0
  465. package/test/unit/spec/reconnection-manager/index.js +162 -24
  466. package/test/unit/spec/recording-controller/index.js +293 -218
  467. package/test/unit/spec/recording-controller/util.js +223 -96
  468. package/test/unit/spec/roap/index.ts +200 -76
  469. package/test/unit/spec/roap/request.ts +232 -0
  470. package/test/unit/spec/roap/turnDiscovery.ts +86 -48
  471. package/test/unit/spec/rtcMetrics/index.ts +93 -0
  472. package/test/unit/spec/stats-analyzer/index.js +188 -174
  473. package/test/unit/spec/webinar/collection.ts +13 -0
  474. package/test/unit/spec/webinar/index.ts +60 -0
  475. package/test/utils/constants.js +9 -0
  476. package/test/utils/integrationTestUtils.js +46 -0
  477. package/test/utils/testUtils.js +0 -45
  478. package/test/utils/webex-config.js +4 -0
  479. package/test/utils/webex-test-users.js +7 -3
  480. package/dist/meeting/effectsState.d.ts +0 -42
  481. package/dist/meeting/effectsState.js +0 -260
  482. package/dist/meeting/effectsState.js.map +0 -1
  483. package/dist/metrics/config.d.ts +0 -169
  484. package/dist/metrics/config.js +0 -289
  485. package/dist/metrics/config.js.map +0 -1
  486. package/dist/peer-connection-manager/index.d.ts +0 -6
  487. package/dist/peer-connection-manager/index.js +0 -671
  488. package/dist/peer-connection-manager/index.js.map +0 -1
  489. package/dist/peer-connection-manager/util.d.ts +0 -6
  490. package/dist/peer-connection-manager/util.js +0 -110
  491. package/dist/peer-connection-manager/util.js.map +0 -1
  492. package/dist/roap/collection.d.ts +0 -10
  493. package/dist/roap/collection.js +0 -63
  494. package/dist/roap/collection.js.map +0 -1
  495. package/dist/roap/handler.d.ts +0 -47
  496. package/dist/roap/handler.js +0 -279
  497. package/dist/roap/handler.js.map +0 -1
  498. package/dist/roap/state.d.ts +0 -9
  499. package/dist/roap/state.js +0 -127
  500. package/dist/roap/state.js.map +0 -1
  501. package/dist/roap/util.d.ts +0 -2
  502. package/dist/roap/util.js +0 -76
  503. package/dist/roap/util.js.map +0 -1
  504. package/src/index.js +0 -15
  505. package/src/meeting/effectsState.ts +0 -209
  506. package/src/metrics/config.ts +0 -485
  507. package/src/peer-connection-manager/index.ts +0 -847
  508. package/src/peer-connection-manager/util.ts +0 -119
  509. package/src/roap/collection.ts +0 -62
  510. package/src/roap/handler.ts +0 -294
  511. package/src/roap/state.ts +0 -156
  512. package/src/roap/util.ts +0 -100
  513. package/test/unit/spec/meeting/effectsState.js +0 -281
  514. package/test/unit/spec/peerconnection-manager/index.js +0 -218
  515. package/test/unit/spec/peerconnection-manager/utils.js +0 -49
  516. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -388
  517. package/test/unit/spec/roap/util.js +0 -30
@@ -1 +1 @@
1
- {"version":3,"names":["_loggerProxy","_interopRequireDefault","require","_constants","_request","DEFAULT_TIMEOUT","VIDEO_MESH_TIMEOUT","Reachability","webex","_classCallCheck2","default","_defineProperty2","reachabilityRequest","ReachabilityRequest","clusterLatencyResults","_createClass2","key","value","_gatherReachability","_asyncToGenerator2","_regenerator","mark","_callee","_window","_window$localStorage","clusters","results","wrap","_callee$","_context","prev","next","setup","window","localStorage","removeItem","REACHABILITY","LoggerProxy","logger","error","abrupt","getClusters","sent","performReachabilityCheck","setItem","_stringify","log","t0","concat","stop","gatherReachability","apply","arguments","isAnyClusterReachable","reachable","reachabilityData","getItem","reachabilityResults","JSON","parse","_values","some","result","_result$udp","_result$tcp","udp","tcp","e","buildPeerConnectionConfig","cluster","iceServers","_uniq2","_toConsumableArray2","map","url","username","credential","urls","iceCandidatePoolSize","iceTransportPolicy","createPeerConnection","config","peerConnection","RTCPeerConnection","peerConnectionError","getElapsedTime","startTime","begin","_now","getLocalSDPForClusters","clusterList","_this","_keys","_ref","_callee2","description","_callee2$","_context2","createOffer","offerToReceiveAudio","setLocalDescription","iceGatheringState","isVideoMesh","catch","iceGatheringStateError","_x","_promise","all","then","parseIceResultsToReachabilityResults","reachabilityLatencyResults","logUnreachableClusters","getUnreachablClusters","unreachableList","forEach","unreachable","push","handleIceGatheringStateChange","_this2","onicegatheringstatechange","COMPLETE","ICE_GATHERING_STATE","iceConnectionState","elapsed","setLatencyAndClose","handleOnIceCandidate","_this3","onicecandidate","SERVER_REFLEXIVE","candidate","String","type","toLowerCase","timeout","_this4","ELAPSED","resolve","peerConnectionProxy","Proxy","get","target","property","targetMember","bind","set","clusterId","Reflect","setTimeout","CLOSED","CONNECTION_STATE","connectionState","list","iceResults","reachabilityMap","_ref2","latencyResult","latencyInMilliseconds","toString","_this5","length","localSDPData","_intialState","REACHABLE","UNREACHABLE","resultKey","intialState","close","exports"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint-disable class-methods-use-this */\n/* globals window */\nimport _ from 'lodash';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {ICE_GATHERING_STATE, CONNECTION_STATE, REACHABILITY} from '../constants';\n\nimport ReachabilityRequest from './request';\n\nconst DEFAULT_TIMEOUT = 3000;\nconst VIDEO_MESH_TIMEOUT = 1000;\n\n/**\n * @class Reachability\n * @export\n */\nexport default class Reachability {\n webex: object;\n reachabilityRequest: any;\n clusterLatencyResults: any;\n\n /**\n * Creates an instance of Reachability.\n * @param {object} webex\n * @memberof Reachability\n */\n constructor(webex: object) {\n this.webex = webex;\n\n /**\n * internal request object for the server\n * @instance\n * @type {Array}\n * @private\n * @memberof Reachability\n */\n this.reachabilityRequest = new ReachabilityRequest(this.webex);\n\n /**\n * internal object of clusters latency results\n * @instance\n * @type {object}\n * @private\n * @memberof Reachability\n */\n this.clusterLatencyResults = {};\n }\n\n /**\n * fetches reachability data\n * @returns {Object} reachability data\n * @public\n * @async\n * @memberof Reachability\n */\n public async gatherReachability() {\n this.setup();\n\n // Remove stored reachability results to ensure no stale data\n if (window?.localStorage?.removeItem) {\n window.localStorage.removeItem(REACHABILITY.localStorage);\n } else {\n LoggerProxy.logger.error(\n 'Reachability:index#gatherReachability --> Error in accessing LocalStorage.'\n );\n\n return {};\n }\n\n // Fetch clusters and measure latency\n try {\n const clusters = await this.reachabilityRequest.getClusters();\n\n // Perform Reachability Check\n const results = await this.performReachabilityCheck(clusters);\n\n window.localStorage.setItem(REACHABILITY.localStorage, JSON.stringify(results));\n\n LoggerProxy.logger.log(\n 'Reachability:index#gatherReachability --> Reachability checks completed'\n );\n\n return results;\n } catch (getClusterError) {\n LoggerProxy.logger.error(\n `Reachability:index#gatherReachability --> Error in calling getClusters(): ${getClusterError}`\n );\n\n return {};\n }\n }\n\n /**\n * fetches reachability data and checks for cluster reachability\n * @returns {boolean}\n * @public\n * @memberof Reachability\n */\n isAnyClusterReachable() {\n let reachable = false;\n const reachabilityData = window.localStorage.getItem(REACHABILITY.localStorage);\n\n if (reachabilityData) {\n try {\n const reachabilityResults = JSON.parse(reachabilityData);\n\n reachable = Object.values(reachabilityResults).some(\n (result: any) => result.udp?.reachable === 'true' || result.tcp?.reachable === 'true'\n );\n } catch (e) {\n LoggerProxy.logger.error(\n `Roap:request#attachReachabilityData --> Error in parsing reachability data: ${e}`\n );\n }\n }\n\n return reachable;\n }\n\n /**\n * Generate peerConnection config settings\n * @param {object} cluster\n * @returns {object} peerConnectionConfig\n * @private\n * @memberof Reachability\n */\n private buildPeerConnectionConfig(cluster: any) {\n const iceServers = _.uniq([...cluster.udp, ...cluster.tcp]).map((url) => ({\n username: '',\n credential: '',\n urls: [url],\n }));\n\n return {\n iceServers: [...iceServers],\n iceCandidatePoolSize: '0',\n iceTransportPolicy: 'all',\n };\n }\n\n /**\n * Creates an RTCPeerConnection\n * @param {object} cluster\n * @returns {RTCPeerConnection} peerConnection\n * @private\n * @memberof Reachability\n */\n private createPeerConnection(cluster: any) {\n const {key, config} = cluster;\n\n try {\n const peerConnection = new window.RTCPeerConnection(config);\n\n // @ts-ignore\n peerConnection.key = key;\n\n return peerConnection;\n } catch (peerConnectionError) {\n LoggerProxy.logger.log(\n `Reachability:index#createPeerConnection --> Error creating peerConnection: ${peerConnectionError}`\n );\n\n return null;\n }\n }\n\n /**\n * Gets total elapsed time\n * @param {RTCPeerConnection} peerConnection\n * @returns {Number} Milliseconds\n * @private\n * @memberof Reachability\n */\n private getElapsedTime(peerConnection: any) {\n const startTime = peerConnection.begin;\n\n delete peerConnection.begin;\n\n return Date.now() - startTime;\n }\n\n /**\n * creates offer and generates localSDP\n * @param {object} clusterList cluster List\n * @returns {Promise} Reachability latency results\n * @private\n * @memberof Reachability\n */\n private getLocalSDPForClusters(clusterList: object) {\n let clusters: any[] = [...Object.keys(clusterList)];\n\n clusters = clusters.map(async (key) => {\n const cluster = clusterList[key];\n const config = this.buildPeerConnectionConfig(cluster);\n const peerConnection = this.createPeerConnection({key, config});\n const description = await peerConnection.createOffer({offerToReceiveAudio: true});\n\n // @ts-ignore\n peerConnection.begin = Date.now();\n peerConnection.setLocalDescription(description);\n\n return this.iceGatheringState(\n peerConnection,\n cluster.isVideoMesh ? VIDEO_MESH_TIMEOUT : DEFAULT_TIMEOUT\n ).catch((iceGatheringStateError) => {\n LoggerProxy.logger.log(\n `Reachability:index#getLocalSDPForClusters --> Error in getLocalSDP : ${iceGatheringStateError}`\n );\n });\n });\n\n return Promise.all(clusters)\n .then(this.parseIceResultsToReachabilityResults)\n .then((reachabilityLatencyResults) => {\n this.logUnreachableClusters();\n\n // return results\n return reachabilityLatencyResults;\n });\n }\n\n /**\n * Get list of all unreachable clusters\n * @returns {array} Unreachable clusters\n * @private\n * @memberof Reachability\n */\n private getUnreachablClusters() {\n const unreachableList = [];\n const clusters = this.clusterLatencyResults;\n\n Object.keys(clusters).forEach((key) => {\n const cluster = clusters[key];\n\n if (cluster.unreachable && !cluster.reachable) {\n unreachableList.push(key);\n }\n });\n\n return unreachableList;\n }\n\n /**\n * Attach an event handler for the icegatheringstatechange\n * event and measure latency.\n * @param {RTCPeerConnection} peerConnection\n * @returns {undefined}\n * @private\n * @memberof Reachability\n */\n private handleIceGatheringStateChange(peerConnection: RTCPeerConnection) {\n peerConnection.onicegatheringstatechange = () => {\n const {COMPLETE} = ICE_GATHERING_STATE;\n\n if (peerConnection.iceConnectionState === COMPLETE) {\n const elapsed = this.getElapsedTime(peerConnection);\n\n // @ts-ignore\n LoggerProxy.logger.log(\n // @ts-ignore\n `Reachability:index#onIceGatheringStateChange --> Successfully pinged ${peerConnection.key}:`,\n elapsed\n );\n this.setLatencyAndClose(peerConnection, elapsed);\n }\n };\n }\n\n /**\n * Attach an event handler for the icecandidate\n * event and measure latency.\n * @param {RTCPeerConnection} peerConnection\n * @returns {undefined}\n * @private\n * @memberof Reachability\n */\n private handleOnIceCandidate(peerConnection: RTCPeerConnection) {\n peerConnection.onicecandidate = (e) => {\n const SERVER_REFLEXIVE = 'srflx';\n\n if (e.candidate && String(e.candidate.type).toLowerCase() === SERVER_REFLEXIVE) {\n const elapsed = this.getElapsedTime(peerConnection);\n\n LoggerProxy.logger.log(\n // @ts-ignore\n `Reachability:index#onIceCandidate --> Successfully pinged ${peerConnection.key}:`,\n elapsed\n );\n this.setLatencyAndClose(peerConnection, elapsed);\n }\n };\n }\n\n /**\n * An event handler on an RTCPeerConnection when the state of the ICE\n * candidate gathering process changes. Used to measure connection\n * speed.\n * @private\n * @param {RTCPeerConnection} peerConnection\n * @param {number} timeout\n * @returns {Promise}\n */\n private iceGatheringState(peerConnection: RTCPeerConnection, timeout: number) {\n const ELAPSED = 'elapsed';\n\n return new Promise((resolve) => {\n const peerConnectionProxy = new window.Proxy(peerConnection, {\n get(target, property) {\n const targetMember = target[property];\n\n if (typeof targetMember === 'function') {\n return targetMember.bind(target);\n }\n\n return targetMember;\n },\n set: (target, property, value) => {\n // only intercept elapsed property\n if (property === ELAPSED) {\n // @ts-ignore\n resolve({clusterId: peerConnection.key, elapsed: value});\n\n return true;\n }\n\n // pass thru\n return window.Reflect.set(target, property, value);\n },\n });\n\n // Using peerConnection proxy so handle functions below\n // won't be coupled to our promise implementation\n this.handleIceGatheringStateChange(peerConnectionProxy);\n this.handleOnIceCandidate(peerConnectionProxy);\n\n // Set maximum timeout\n window.setTimeout(() => {\n const {CLOSED} = CONNECTION_STATE;\n\n // Close any open peerConnections\n if (peerConnectionProxy.connectionState !== CLOSED) {\n this.setLatencyAndClose(peerConnectionProxy, null);\n }\n }, timeout);\n });\n }\n\n /**\n * Make a log of unreachable clusters.\n * @returns {undefined}\n * @private\n * @memberof Reachability\n */\n private logUnreachableClusters() {\n const list = this.getUnreachablClusters();\n\n list.forEach((cluster) => {\n LoggerProxy.logger.log(\n `Reachability:index#logUnreachableClusters --> No ice candidate for ${cluster}.`\n );\n });\n }\n\n /**\n * Calculates time to establish connection\n * @param {array} iceResults iceResults\n * @returns {object} reachabilityMap\n * @private\n * @memberof Reachability\n */\n private parseIceResultsToReachabilityResults(iceResults: Array<any>) {\n const reachabilityMap = {};\n\n iceResults.forEach(({clusterId, elapsed}) => {\n let latencyResult;\n\n if (elapsed === null) {\n latencyResult = {reachable: 'false'};\n } else {\n latencyResult = {\n reachable: 'true',\n latencyInMilliseconds: elapsed.toString(),\n };\n }\n\n reachabilityMap[clusterId] = {\n udp: latencyResult,\n tcp: latencyResult,\n };\n });\n\n return reachabilityMap;\n }\n\n /**\n * fetches reachability data\n * @param {object} clusterList\n * @returns {Promise<localSDPData>} reachability check results\n * @private\n * @memberof Reachability\n */\n private performReachabilityCheck(clusterList: object) {\n if (!clusterList || !Object.keys(clusterList).length) {\n return Promise.resolve({});\n }\n\n return new Promise((resolve) => {\n this.getLocalSDPForClusters(clusterList)\n .then((localSDPData) => {\n if (!localSDPData || !Object.keys(localSDPData).length) {\n // TODO: handle the error condition properly and try retry\n LoggerProxy.logger.log(\n 'Reachability:index#performReachabilityCheck --> Local SDP is empty or has missing elements..returning'\n );\n resolve({});\n } else {\n resolve(localSDPData);\n }\n })\n .catch((error) => {\n LoggerProxy.logger.error(\n `Reachability:index#performReachabilityCheck --> Error in getLocalSDPForClusters: ${error}`\n );\n resolve({});\n });\n });\n }\n\n /**\n * Records latency and closes the peerConnection\n * @param {RTCPeerConnection} peerConnection\n * @param {number} elapsed Latency in milliseconds\n * @returns {undefined}\n * @private\n * @memberof Reachability\n */\n private setLatencyAndClose(peerConnection: RTCPeerConnection, elapsed: number) {\n const REACHABLE = 'reachable';\n const UNREACHABLE = 'unreachable';\n const {CLOSED} = CONNECTION_STATE;\n // @ts-ignore\n const {key} = peerConnection;\n const resultKey = elapsed === null ? UNREACHABLE : REACHABLE;\n const intialState = {[REACHABLE]: 0, [UNREACHABLE]: 0};\n\n if (peerConnection.connectionState === CLOSED) {\n LoggerProxy.logger.log(\n `Reachability:index#setLatencyAndClose --> Attempting to set latency of ${elapsed} on closed peerConnection.`\n );\n\n return;\n }\n\n this.clusterLatencyResults[key] = this.clusterLatencyResults[key] || intialState;\n this.clusterLatencyResults[key][resultKey] += 1;\n\n // Set to null in case this fired from\n // an event other than onIceCandidate\n peerConnection.onicecandidate = null;\n peerConnection.close();\n // @ts-ignore\n peerConnection.elapsed = elapsed;\n }\n\n /**\n * utility function\n * @returns {undefined}\n * @private\n * @memberof Reachability\n */\n private setup() {\n this.clusterLatencyResults = {};\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_lodash","require","_loggerProxy","_interopRequireDefault","_util","_constants","_request","DEFAULT_TIMEOUT","VIDEO_MESH_TIMEOUT","Reachability","exports","default","webex","_classCallCheck2","_defineProperty2","REACHABILITY","namespace","reachabilityRequest","ReachabilityRequest","clusterLatencyResults","_createClass2","key","value","_gatherReachability","_asyncToGenerator2","_regenerator","mark","_callee","_yield$this$reachabil","clusters","joinCookie","results","wrap","_callee$","_context","prev","next","setup","boundedStorage","del","localStorageResult","localStorageJoinCookie","getClusters","MeetingUtil","getIpVersion","sent","performReachabilityCheck","put","_stringify","LoggerProxy","logger","log","abrupt","t0","error","concat","stop","gatherReachability","apply","arguments","_getReachabilityMetrics","_callee2","stats","updateStats","resultsJson","internalResults","_callee2$","_context2","reachability_public_udp_success","reachability_public_udp_failed","reachability_public_tcp_success","reachability_public_tcp_failed","reachability_vmn_udp_success","reachability_vmn_udp_failed","reachability_vmn_tcp_success","reachability_vmn_tcp_failed","clusterType","result","_result$udp","_result$tcp","udp","reachable","outcome","tcp","get","JSON","parse","_values","forEach","isVideoMesh","warn","getReachabilityMetrics","_getReachabilityResults","_callee3","reachabilityResultsProps","_callee3$","_context3","mapValues","pick","getReachabilityResults","_isAnyPublicClusterReachable","_callee4","reachabilityData","reachabilityResults","_callee4$","_context4","catch","some","_result$udp2","_result$tcp2","e","isAnyPublicClusterReachable","buildPeerConnectionConfig","cluster","iceServers","uniq","map","url","username","credential","urls","_toConsumableArray2","iceCandidatePoolSize","iceTransportPolicy","createPeerConnection","config","peerConnection","window","RTCPeerConnection","peerConnectionError","getElapsedTime","startTime","begin","_now","getLocalSDPForClusters","clusterList","_this","_keys","_ref","_callee5","description","_callee5$","_context5","createOffer","offerToReceiveAudio","setLocalDescription","iceGatheringState","iceGatheringStateError","_x","_promise","all","then","parseIceResultsToInternalReachabilityResults","reachabilityLatencyResults","logUnreachableClusters","getUnreachablClusters","unreachableList","unreachable","push","handleIceGatheringStateChange","_this2","onicegatheringstatechange","COMPLETE","ICE_GATHERING_STATE","iceConnectionState","elapsed","setLatencyAndClose","handleOnIceCandidate","_this3","onicecandidate","SERVER_REFLEXIVE","candidate","String","type","toLowerCase","addPublicIP","address","_this4","ELAPSED","timeout","resolve","peerConnectionProxy","Proxy","target","property","targetMember","bind","set","clusterId","publicIPs","Reflect","setTimeout","CLOSED","CONNECTION_STATE","connectionState","list","iceResults","reachabilityMap","_ref2","latencyResult","_assign","latencyInMilliseconds","toString","clientMediaIPs","untested","xtls","_this5","length","localSDPData","publicIP","modifiedPeerConnection","REACHABLE","UNREACHABLE","resultKey","intialState","close"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint-disable class-methods-use-this */\n/* globals window */\nimport {uniq, mapValues, pick} from 'lodash';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport MeetingUtil from '../meeting/util';\n\nimport {ICE_GATHERING_STATE, CONNECTION_STATE, REACHABILITY} from '../constants';\n\nimport ReachabilityRequest from './request';\n\nconst DEFAULT_TIMEOUT = 3000;\nconst VIDEO_MESH_TIMEOUT = 1000;\n\nexport type ReachabilityMetrics = {\n reachability_public_udp_success: number;\n reachability_public_udp_failed: number;\n reachability_public_tcp_success: number;\n reachability_public_tcp_failed: number;\n reachability_vmn_udp_success: number;\n reachability_vmn_udp_failed: number;\n reachability_vmn_tcp_success: number;\n reachability_vmn_tcp_failed: number;\n};\n\n// result for a specific transport protocol (like udp or tcp)\nexport type TransportResult = {\n reachable?: 'true' | 'false';\n latencyInMilliseconds?: string;\n clientMediaIPs?: string[];\n untested?: 'true';\n};\n\n// reachability result for a specifc media cluster\ntype ReachabilityResult = {\n udp: TransportResult;\n tcp: TransportResult;\n xtls: {\n untested: 'true';\n };\n};\n// this is the type that is required by the backend when we send them reachability results\nexport type ReachabilityResults = Record<string, ReachabilityResult>;\n\n// this is the type used by Reachability class internally and stored in local storage\ntype InternalReachabilityResults = Record<\n string,\n ReachabilityResult & {\n isVideoMesh?: boolean;\n }\n>;\n\nexport type ICECandidateResult = {\n clusterId: string;\n isVideoMesh: boolean;\n elapsed?: string | null;\n publicIPs?: string[];\n};\n/**\n * @class Reachability\n * @export\n */\nexport default class Reachability {\n namespace = REACHABILITY.namespace;\n webex: object;\n reachabilityRequest: any;\n clusterLatencyResults: any;\n\n /**\n * Creates an instance of Reachability.\n * @param {object} webex\n * @memberof Reachability\n */\n constructor(webex: object) {\n this.webex = webex;\n\n /**\n * internal request object for the server\n * @instance\n * @type {Array}\n * @private\n * @memberof Reachability\n */\n this.reachabilityRequest = new ReachabilityRequest(this.webex);\n\n /**\n * internal object of clusters latency results\n * @instance\n * @type {object}\n * @private\n * @memberof Reachability\n */\n this.clusterLatencyResults = {};\n }\n\n /**\n * fetches reachability data\n * @returns {Object} reachability data\n * @public\n * @async\n * @memberof Reachability\n */\n public async gatherReachability(): Promise<InternalReachabilityResults> {\n this.setup();\n\n // Remove stored reachability results to ensure no stale data\n // @ts-ignore\n await this.webex.boundedStorage.del(this.namespace, REACHABILITY.localStorageResult);\n // @ts-ignore\n await this.webex.boundedStorage.del(this.namespace, REACHABILITY.localStorageJoinCookie);\n\n // Fetch clusters and measure latency\n try {\n const {clusters, joinCookie} = await this.reachabilityRequest.getClusters(\n MeetingUtil.getIpVersion(this.webex)\n );\n\n // Perform Reachability Check\n const results = await this.performReachabilityCheck(clusters);\n\n // @ts-ignore\n await this.webex.boundedStorage.put(\n this.namespace,\n REACHABILITY.localStorageResult,\n JSON.stringify(results)\n );\n // @ts-ignore\n await this.webex.boundedStorage.put(\n this.namespace,\n REACHABILITY.localStorageJoinCookie,\n JSON.stringify(joinCookie)\n );\n\n LoggerProxy.logger.log(\n 'Reachability:index#gatherReachability --> Reachability checks completed'\n );\n\n return results;\n } catch (getClusterError) {\n LoggerProxy.logger.error(\n `Reachability:index#gatherReachability --> Error in calling getClusters(): ${getClusterError}`\n );\n\n return {};\n }\n }\n\n /**\n * Returns statistics about last reachability results. The returned value is an object\n * with a flat list of properties so that it can be easily sent with metrics\n *\n * @returns {Promise} Promise with metrics values, it never rejects/throws.\n */\n async getReachabilityMetrics(): Promise<ReachabilityMetrics> {\n const stats: ReachabilityMetrics = {\n reachability_public_udp_success: 0,\n reachability_public_udp_failed: 0,\n reachability_public_tcp_success: 0,\n reachability_public_tcp_failed: 0,\n reachability_vmn_udp_success: 0,\n reachability_vmn_udp_failed: 0,\n reachability_vmn_tcp_success: 0,\n reachability_vmn_tcp_failed: 0,\n };\n\n const updateStats = (clusterType: 'public' | 'vmn', result: ReachabilityResult) => {\n if (result.udp?.reachable) {\n const outcome = result.udp.reachable === 'true' ? 'success' : 'failed';\n stats[`reachability_${clusterType}_udp_${outcome}`] += 1;\n }\n if (result.tcp?.reachable) {\n const outcome = result.tcp.reachable === 'true' ? 'success' : 'failed';\n stats[`reachability_${clusterType}_tcp_${outcome}`] += 1;\n }\n };\n\n try {\n // @ts-ignore\n const resultsJson = await this.webex.boundedStorage.get(\n REACHABILITY.namespace,\n REACHABILITY.localStorageResult\n );\n\n const internalResults: InternalReachabilityResults = JSON.parse(resultsJson);\n\n Object.values(internalResults).forEach((result) => {\n updateStats(result.isVideoMesh ? 'vmn' : 'public', result);\n });\n } catch (e) {\n // empty storage, that's ok\n LoggerProxy.logger.warn(\n 'Roap:request#getReachabilityMetrics --> Error parsing reachability data: ',\n e\n );\n }\n\n return stats;\n }\n\n /**\n * Reachability results as an object in the format that backend expects\n *\n * @returns {any} reachability results that need to be sent to the backend\n */\n async getReachabilityResults(): Promise<ReachabilityResults | undefined> {\n let results: ReachabilityResults;\n\n // these are the only props that backend needs in the reachability results:\n const reachabilityResultsProps: Array<keyof ReachabilityResult> = ['udp', 'tcp', 'xtls'];\n\n try {\n // @ts-ignore\n const resultsJson = await this.webex.boundedStorage.get(\n REACHABILITY.namespace,\n REACHABILITY.localStorageResult\n );\n\n const internalResults: InternalReachabilityResults = JSON.parse(resultsJson);\n\n results = mapValues(internalResults, (result) => pick(result, reachabilityResultsProps));\n } catch (e) {\n // empty storage, that's ok\n LoggerProxy.logger.warn(\n 'Roap:request#attachReachabilityData --> Error parsing reachability data: ',\n e\n );\n }\n\n return results;\n }\n\n /**\n * fetches reachability data and checks for cluster reachability\n * @returns {boolean}\n * @public\n * @memberof Reachability\n */\n async isAnyPublicClusterReachable() {\n let reachable = false;\n // @ts-ignore\n const reachabilityData = await this.webex.boundedStorage\n .get(this.namespace, REACHABILITY.localStorageResult)\n .catch(() => {});\n\n if (reachabilityData) {\n try {\n const reachabilityResults: InternalReachabilityResults = JSON.parse(reachabilityData);\n\n reachable = Object.values(reachabilityResults).some(\n (result) =>\n !result.isVideoMesh &&\n (result.udp?.reachable === 'true' || result.tcp?.reachable === 'true')\n );\n } catch (e) {\n LoggerProxy.logger.error(\n `Roap:request#attachReachabilityData --> Error in parsing reachability data: ${e}`\n );\n }\n }\n\n return reachable;\n }\n\n /**\n * Generate peerConnection config settings\n * @param {object} cluster\n * @returns {object} peerConnectionConfig\n * @private\n * @memberof Reachability\n */\n private buildPeerConnectionConfig(cluster: any) {\n const iceServers = uniq(cluster.udp).map((url) => ({\n username: '',\n credential: '',\n urls: [url],\n }));\n\n return {\n iceServers: [...iceServers],\n iceCandidatePoolSize: '0',\n iceTransportPolicy: 'all',\n };\n }\n\n /**\n * Creates an RTCPeerConnection\n * @param {object} cluster\n * @returns {RTCPeerConnection} peerConnection\n * @private\n * @memberof Reachability\n */\n private createPeerConnection(cluster: any) {\n const {key, config} = cluster;\n\n try {\n const peerConnection = new window.RTCPeerConnection(config);\n\n // @ts-ignore\n peerConnection.key = key;\n\n return peerConnection;\n } catch (peerConnectionError) {\n LoggerProxy.logger.log(\n `Reachability:index#createPeerConnection --> Error creating peerConnection: ${peerConnectionError}`\n );\n\n return null;\n }\n }\n\n /**\n * Gets total elapsed time\n * @param {RTCPeerConnection} peerConnection\n * @returns {Number} Milliseconds\n * @private\n * @memberof Reachability\n */\n private getElapsedTime(peerConnection: any) {\n const startTime = peerConnection.begin;\n\n delete peerConnection.begin;\n\n return Date.now() - startTime;\n }\n\n /**\n * creates offer and generates localSDP\n * @param {object} clusterList cluster List\n * @returns {Promise} Reachability latency results\n * @private\n * @memberof Reachability\n */\n private getLocalSDPForClusters(clusterList: object): Promise<InternalReachabilityResults> {\n let clusters: any[] = [...Object.keys(clusterList)];\n\n clusters = clusters.map(async (key) => {\n const cluster = clusterList[key];\n const config = this.buildPeerConnectionConfig(cluster);\n const peerConnection = this.createPeerConnection({key, config});\n const description = await peerConnection.createOffer({offerToReceiveAudio: true});\n\n // @ts-ignore\n peerConnection.begin = Date.now();\n peerConnection.setLocalDescription(description);\n\n return this.iceGatheringState(peerConnection, cluster.isVideoMesh).catch(\n (iceGatheringStateError) => {\n LoggerProxy.logger.log(\n `Reachability:index#getLocalSDPForClusters --> Error in getLocalSDP : ${iceGatheringStateError}`\n );\n }\n );\n });\n\n return Promise.all(clusters)\n .then(this.parseIceResultsToInternalReachabilityResults)\n .then((reachabilityLatencyResults) => {\n this.logUnreachableClusters();\n\n // return results\n return reachabilityLatencyResults;\n });\n }\n\n /**\n * Get list of all unreachable clusters\n * @returns {array} Unreachable clusters\n * @private\n * @memberof Reachability\n */\n private getUnreachablClusters() {\n const unreachableList = [];\n const clusters = this.clusterLatencyResults;\n\n Object.keys(clusters).forEach((key) => {\n const cluster = clusters[key];\n\n if (cluster.unreachable && !cluster.reachable) {\n unreachableList.push(key);\n }\n });\n\n return unreachableList;\n }\n\n /**\n * Attach an event handler for the icegatheringstatechange\n * event and measure latency.\n * @param {RTCPeerConnection} peerConnection\n * @returns {undefined}\n * @private\n * @memberof Reachability\n */\n private handleIceGatheringStateChange(peerConnection: RTCPeerConnection) {\n peerConnection.onicegatheringstatechange = () => {\n const {COMPLETE} = ICE_GATHERING_STATE;\n\n if (peerConnection.iceConnectionState === COMPLETE) {\n const elapsed = this.getElapsedTime(peerConnection);\n\n // @ts-ignore\n LoggerProxy.logger.log(\n // @ts-ignore\n `Reachability:index#onIceGatheringStateChange --> Successfully pinged ${peerConnection.key}:`,\n elapsed\n );\n this.setLatencyAndClose(peerConnection, elapsed);\n }\n };\n }\n\n /**\n * Attach an event handler for the icecandidate\n * event and measure latency.\n * @param {RTCPeerConnection} peerConnection\n * @returns {undefined}\n * @private\n * @memberof Reachability\n */\n private handleOnIceCandidate(peerConnection: RTCPeerConnection) {\n peerConnection.onicecandidate = (e) => {\n const SERVER_REFLEXIVE = 'srflx';\n\n if (e.candidate && String(e.candidate.type).toLowerCase() === SERVER_REFLEXIVE) {\n const elapsed = this.getElapsedTime(peerConnection);\n\n LoggerProxy.logger.log(\n // @ts-ignore\n `Reachability:index#onIceCandidate --> Successfully pinged ${peerConnection.key}:`,\n elapsed\n );\n // order is important\n this.addPublicIP(peerConnection, e.candidate.address);\n this.setLatencyAndClose(peerConnection, elapsed);\n }\n };\n }\n\n /**\n * An event handler on an RTCPeerConnection when the state of the ICE\n * candidate gathering process changes. Used to measure connection\n * speed.\n * @private\n * @param {RTCPeerConnection} peerConnection\n * @param {boolean} isVideoMesh\n * @returns {Promise}\n */\n private iceGatheringState(peerConnection: RTCPeerConnection, isVideoMesh: boolean) {\n const ELAPSED = 'elapsed';\n\n const timeout = isVideoMesh ? VIDEO_MESH_TIMEOUT : DEFAULT_TIMEOUT;\n\n return new Promise<ICECandidateResult>((resolve) => {\n const peerConnectionProxy = new window.Proxy(peerConnection, {\n // eslint-disable-next-line require-jsdoc\n get(target, property) {\n const targetMember = target[property];\n\n if (typeof targetMember === 'function') {\n return targetMember.bind(target);\n }\n\n return targetMember;\n },\n set: (target, property, value) => {\n // only intercept elapsed property\n if (property === ELAPSED) {\n resolve({\n // @ts-ignore\n clusterId: peerConnection.key,\n isVideoMesh,\n // @ts-ignore\n publicIPs: target.publicIPs,\n elapsed: value,\n });\n\n return true;\n }\n\n // pass thru\n return window.Reflect.set(target, property, value);\n },\n });\n\n // Using peerConnection proxy so handle functions below\n // won't be coupled to our promise implementation\n this.handleIceGatheringStateChange(peerConnectionProxy);\n this.handleOnIceCandidate(peerConnectionProxy);\n\n // Set maximum timeout\n window.setTimeout(() => {\n const {CLOSED} = CONNECTION_STATE;\n\n // Close any open peerConnections\n if (peerConnectionProxy.connectionState !== CLOSED) {\n // order is important\n this.addPublicIP(peerConnectionProxy, null);\n this.setLatencyAndClose(peerConnectionProxy, null);\n }\n }, timeout);\n });\n }\n\n /**\n * Make a log of unreachable clusters.\n * @returns {undefined}\n * @private\n * @memberof Reachability\n */\n private logUnreachableClusters() {\n const list = this.getUnreachablClusters();\n\n list.forEach((cluster) => {\n LoggerProxy.logger.log(\n `Reachability:index#logUnreachableClusters --> No ice candidate for ${cluster}.`\n );\n });\n }\n\n /**\n * Calculates time to establish connection\n * @param {Array<ICECandidateResult>} iceResults iceResults\n * @returns {object} reachabilityMap\n * @protected\n * @memberof Reachability\n */\n protected parseIceResultsToInternalReachabilityResults(\n iceResults: Array<ICECandidateResult>\n ): InternalReachabilityResults {\n const reachabilityMap = {};\n\n iceResults.forEach(({clusterId, isVideoMesh, elapsed, publicIPs}) => {\n const latencyResult = {};\n\n if (!elapsed) {\n Object.assign(latencyResult, {reachable: 'false'});\n } else {\n Object.assign(latencyResult, {\n reachable: 'true',\n latencyInMilliseconds: elapsed.toString(),\n });\n }\n\n if (publicIPs) {\n Object.assign(latencyResult, {\n clientMediaIPs: publicIPs,\n });\n }\n\n reachabilityMap[clusterId] = {\n udp: latencyResult,\n tcp: {untested: 'true'},\n xtls: {untested: 'true'},\n isVideoMesh,\n };\n });\n\n return reachabilityMap;\n }\n\n /**\n * fetches reachability data\n * @param {object} clusterList\n * @returns {Promise<InternalReachabilityResults>} reachability check results\n * @private\n * @memberof Reachability\n */\n private performReachabilityCheck(clusterList: object): Promise<InternalReachabilityResults> {\n if (!clusterList || !Object.keys(clusterList).length) {\n return Promise.resolve({});\n }\n\n return new Promise((resolve) => {\n this.getLocalSDPForClusters(clusterList)\n .then((localSDPData) => {\n if (!localSDPData || !Object.keys(localSDPData).length) {\n // TODO: handle the error condition properly and try retry\n LoggerProxy.logger.log(\n 'Reachability:index#performReachabilityCheck --> Local SDP is empty or has missing elements..returning'\n );\n resolve({});\n } else {\n resolve(localSDPData);\n }\n })\n .catch((error) => {\n LoggerProxy.logger.error(\n `Reachability:index#performReachabilityCheck --> Error in getLocalSDPForClusters: ${error}`\n );\n resolve({});\n });\n });\n }\n\n /**\n * Adds public IP (client media IPs)\n * @param {RTCPeerConnection} peerConnection\n * @param {string} publicIP\n * @returns {void}\n */\n protected addPublicIP(peerConnection: RTCPeerConnection, publicIP?: string | null) {\n const modifiedPeerConnection: RTCPeerConnection & {publicIPs?: string[]} = peerConnection;\n const {CLOSED} = CONNECTION_STATE;\n\n if (modifiedPeerConnection.connectionState === CLOSED) {\n LoggerProxy.logger.log(\n `Reachability:index#addPublicIP --> Attempting to set publicIP of ${publicIP} on closed peerConnection.`\n );\n }\n\n if (publicIP) {\n if (modifiedPeerConnection.publicIPs) {\n modifiedPeerConnection.publicIPs.push(publicIP);\n } else {\n modifiedPeerConnection.publicIPs = [publicIP];\n }\n } else {\n modifiedPeerConnection.publicIPs = null;\n }\n }\n\n /**\n * Records latency and closes the peerConnection\n * @param {RTCPeerConnection} peerConnection\n * @param {number} elapsed Latency in milliseconds\n * @returns {undefined}\n * @private\n * @memberof Reachability\n */\n private setLatencyAndClose(peerConnection: RTCPeerConnection, elapsed: number) {\n const REACHABLE = 'reachable';\n const UNREACHABLE = 'unreachable';\n const {CLOSED} = CONNECTION_STATE;\n // @ts-ignore\n const {key} = peerConnection;\n const resultKey = elapsed === null ? UNREACHABLE : REACHABLE;\n const intialState = {[REACHABLE]: 0, [UNREACHABLE]: 0};\n\n if (peerConnection.connectionState === CLOSED) {\n LoggerProxy.logger.log(\n `Reachability:index#setLatencyAndClose --> Attempting to set latency of ${elapsed} on closed peerConnection.`\n );\n\n return;\n }\n\n this.clusterLatencyResults[key] = this.clusterLatencyResults[key] || intialState;\n this.clusterLatencyResults[key][resultKey] += 1;\n\n // Set to null in case this fired from\n // an event other than onIceCandidate\n peerConnection.onicecandidate = null;\n peerConnection.close();\n // @ts-ignore\n peerConnection.elapsed = elapsed;\n }\n\n /**\n * utility function\n * @returns {undefined}\n * @private\n * @memberof Reachability\n */\n private setup() {\n this.clusterLatencyResults = {};\n }\n}\n"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { IP_VERSION } from '../constants';
1
2
  export interface ClusterNode {
2
3
  isVideoMesh: boolean;
3
4
  udp: Array<string>;
@@ -19,12 +20,15 @@ declare class ReachabilityRequest {
19
20
  */
20
21
  constructor(webex: object);
21
22
  /**
22
- * gets the cluster information
23
+ * Gets the cluster information
23
24
  *
24
- * @param {boolean} includeVideoMesh whether to include the video mesh clusters in the result or not
25
+ * @param {IP_VERSION} ipVersion information about current ip network we're on
25
26
  * @returns {Promise}
26
27
  */
27
- getClusters: () => Promise<ClusterList>;
28
+ getClusters: (ipVersion?: IP_VERSION) => Promise<{
29
+ clusters: ClusterList;
30
+ joinCookie: any;
31
+ }>;
28
32
  /**
29
33
  * gets remote SDP For Clusters
30
34
  * @param {Object} localSDPList localSDPs for the cluster
@@ -27,25 +27,34 @@ function ReachabilityRequest(webex) {
27
27
  (0, _classCallCheck2.default)(this, ReachabilityRequest);
28
28
  (0, _defineProperty2.default)(this, "webex", void 0);
29
29
  /**
30
- * gets the cluster information
30
+ * Gets the cluster information
31
31
  *
32
- * @param {boolean} includeVideoMesh whether to include the video mesh clusters in the result or not
32
+ * @param {IP_VERSION} ipVersion information about current ip network we're on
33
33
  * @returns {Promise}
34
34
  */
35
- (0, _defineProperty2.default)(this, "getClusters", function () {
35
+ (0, _defineProperty2.default)(this, "getClusters", function (ipVersion) {
36
36
  return _this.webex.request({
37
37
  method: _constants.HTTP_VERBS.GET,
38
38
  shouldRefreshAccessToken: false,
39
39
  api: _constants.API.CALLIOPEDISCOVERY,
40
- resource: _constants.RESOURCE.CLUSTERS
40
+ resource: _constants.RESOURCE.CLUSTERS,
41
+ qs: {
42
+ JCSupport: 1,
43
+ ipver: ipVersion
44
+ }
41
45
  }).then(function (res) {
42
- var clusters = res.body.clusters;
46
+ var _res$body = res.body,
47
+ clusters = _res$body.clusters,
48
+ joinCookie = _res$body.joinCookie;
43
49
  (0, _keys.default)(clusters).forEach(function (key) {
44
50
  var _res$body$clusterClas, _res$body$clusterClas2;
45
- clusters[key].isVideoMesh = (_res$body$clusterClas = res.body.clusterClasses) === null || _res$body$clusterClas === void 0 ? void 0 : (_res$body$clusterClas2 = _res$body$clusterClas.hybridMedia) === null || _res$body$clusterClas2 === void 0 ? void 0 : _res$body$clusterClas2.includes(key);
51
+ clusters[key].isVideoMesh = !!((_res$body$clusterClas = res.body.clusterClasses) !== null && _res$body$clusterClas !== void 0 && (_res$body$clusterClas2 = _res$body$clusterClas.hybridMedia) !== null && _res$body$clusterClas2 !== void 0 && _res$body$clusterClas2.includes(key));
46
52
  });
47
- _loggerProxy.default.logger.log("Reachability:request#getClusters --> get clusters successful:".concat((0, _stringify.default)(clusters)));
48
- return clusters;
53
+ _loggerProxy.default.logger.log("Reachability:request#getClusters --> get clusters (ipver=".concat(ipVersion, ") successful:").concat((0, _stringify.default)(clusters)));
54
+ return {
55
+ clusters: clusters,
56
+ joinCookie: joinCookie
57
+ };
49
58
  });
50
59
  });
51
60
  /**
@@ -69,6 +78,5 @@ function ReachabilityRequest(webex) {
69
78
  });
70
79
  this.webex = webex;
71
80
  });
72
- var _default = ReachabilityRequest;
73
- exports.default = _default;
81
+ var _default = exports.default = ReachabilityRequest;
74
82
  //# sourceMappingURL=request.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_loggerProxy","_interopRequireDefault","require","_constants","ReachabilityRequest","_createClass2","default","webex","_this","_classCallCheck2","_defineProperty2","request","method","HTTP_VERBS","GET","shouldRefreshAccessToken","api","API","CALLIOPEDISCOVERY","resource","RESOURCE","CLUSTERS","then","res","clusters","body","_keys","forEach","key","_res$body$clusterClas","_res$body$clusterClas2","isVideoMesh","clusterClasses","hybridMedia","includes","LoggerProxy","logger","log","concat","_stringify","localSDPList","POST","REACHABILITY","offers","_default","exports"],"sources":["request.ts"],"sourcesContent":["import LoggerProxy from '../common/logs/logger-proxy';\nimport {HTTP_VERBS, RESOURCE, API} from '../constants';\n\nexport interface ClusterNode {\n isVideoMesh: boolean;\n udp: Array<string>;\n tcp: Array<string>;\n xtls: Array<string>;\n}\n\nexport type ClusterList = {\n [key: string]: ClusterNode;\n};\n\n/**\n * @class ReachabilityRequest\n */\nclass ReachabilityRequest {\n webex: any;\n\n /**\n * Creates an instance of ReachabilityRequest.\n * @param {object} webex\n * @memberof ReachabilityRequest\n */\n constructor(webex: object) {\n this.webex = webex;\n }\n\n /**\n * gets the cluster information\n *\n * @param {boolean} includeVideoMesh whether to include the video mesh clusters in the result or not\n * @returns {Promise}\n */\n getClusters = (): Promise<ClusterList> =>\n this.webex\n .request({\n method: HTTP_VERBS.GET,\n shouldRefreshAccessToken: false,\n api: API.CALLIOPEDISCOVERY,\n resource: RESOURCE.CLUSTERS,\n })\n .then((res) => {\n const {clusters} = res.body;\n\n Object.keys(clusters).forEach((key) => {\n clusters[key].isVideoMesh = res.body.clusterClasses?.hybridMedia?.includes(key);\n });\n\n LoggerProxy.logger.log(\n `Reachability:request#getClusters --> get clusters successful:${JSON.stringify(clusters)}`\n );\n\n return clusters;\n });\n\n /**\n * gets remote SDP For Clusters\n * @param {Object} localSDPList localSDPs for the cluster\n * @returns {Object}\n */\n remoteSDPForClusters = (localSDPList: object) =>\n this.webex\n .request({\n method: HTTP_VERBS.POST,\n shouldRefreshAccessToken: false,\n api: API.CALLIOPEDISCOVERY,\n resource: RESOURCE.REACHABILITY,\n body: {offers: localSDPList},\n })\n .then((res) => {\n LoggerProxy.logger.log(\n 'Reachability:request#remoteSDPForClusters --> Remote SDPs got succcessfully'\n );\n\n return res.body;\n });\n}\n\nexport default ReachabilityRequest;\n"],"mappings":";;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAaA;AACA;AACA;AAFA,IAGME,mBAAmB,oBAAAC,aAAA,CAAAC,OAAA;AAGvB;AACF;AACA;AACA;AACA;AACE,SAAAF,oBAAYG,KAAa,EAAE;EAAA,IAAAC,KAAA;EAAA,IAAAC,gBAAA,CAAAH,OAAA,QAAAF,mBAAA;EAAA,IAAAM,gBAAA,CAAAJ,OAAA;EAI3B;AACF;AACA;AACA;AACA;AACA;EALE,IAAAI,gBAAA,CAAAJ,OAAA,uBAMc;IAAA,OACZE,KAAI,CAACD,KAAK,CACPI,OAAO,CAAC;MACPC,MAAM,EAAEC,qBAAU,CAACC,GAAG;MACtBC,wBAAwB,EAAE,KAAK;MAC/BC,GAAG,EAAEC,cAAG,CAACC,iBAAiB;MAC1BC,QAAQ,EAAEC,mBAAQ,CAACC;IACrB,CAAC,CAAC,CACDC,IAAI,CAAC,UAACC,GAAG,EAAK;MACb,IAAOC,QAAQ,GAAID,GAAG,CAACE,IAAI,CAApBD,QAAQ;MAEf,IAAAE,KAAA,CAAApB,OAAA,EAAYkB,QAAQ,CAAC,CAACG,OAAO,CAAC,UAACC,GAAG,EAAK;QAAA,IAAAC,qBAAA,EAAAC,sBAAA;QACrCN,QAAQ,CAACI,GAAG,CAAC,CAACG,WAAW,IAAAF,qBAAA,GAAGN,GAAG,CAACE,IAAI,CAACO,cAAc,cAAAH,qBAAA,wBAAAC,sBAAA,GAAvBD,qBAAA,CAAyBI,WAAW,cAAAH,sBAAA,uBAApCA,sBAAA,CAAsCI,QAAQ,CAACN,GAAG,CAAC;MACjF,CAAC,CAAC;MAEFO,oBAAW,CAACC,MAAM,CAACC,GAAG,iEAAAC,MAAA,CAC4C,IAAAC,UAAA,CAAAjC,OAAA,EAAekB,QAAQ,CAAC,EACzF;MAED,OAAOA,QAAQ;IACjB,CAAC,CAAC;EAAA;EAEN;AACF;AACA;AACA;AACA;EAJE,IAAAd,gBAAA,CAAAJ,OAAA,gCAKuB,UAACkC,YAAoB;IAAA,OAC1ChC,KAAI,CAACD,KAAK,CACPI,OAAO,CAAC;MACPC,MAAM,EAAEC,qBAAU,CAAC4B,IAAI;MACvB1B,wBAAwB,EAAE,KAAK;MAC/BC,GAAG,EAAEC,cAAG,CAACC,iBAAiB;MAC1BC,QAAQ,EAAEC,mBAAQ,CAACsB,YAAY;MAC/BjB,IAAI,EAAE;QAACkB,MAAM,EAAEH;MAAY;IAC7B,CAAC,CAAC,CACDlB,IAAI,CAAC,UAACC,GAAG,EAAK;MACbY,oBAAW,CAACC,MAAM,CAACC,GAAG,CACpB,6EAA6E,CAC9E;MAED,OAAOd,GAAG,CAACE,IAAI;IACjB,CAAC,CAAC;EAAA;EAnDJ,IAAI,CAAClB,KAAK,GAAGA,KAAK;AACpB,CAAC;AAAA,IAAAqC,QAAA,GAqDYxC,mBAAmB;AAAAyC,OAAA,CAAAvC,OAAA,GAAAsC,QAAA"}
1
+ {"version":3,"names":["_loggerProxy","_interopRequireDefault","require","_constants","ReachabilityRequest","_createClass2","default","webex","_this","_classCallCheck2","_defineProperty2","ipVersion","request","method","HTTP_VERBS","GET","shouldRefreshAccessToken","api","API","CALLIOPEDISCOVERY","resource","RESOURCE","CLUSTERS","qs","JCSupport","ipver","then","res","_res$body","body","clusters","joinCookie","_keys","forEach","key","_res$body$clusterClas","_res$body$clusterClas2","isVideoMesh","clusterClasses","hybridMedia","includes","LoggerProxy","logger","log","concat","_stringify","localSDPList","POST","REACHABILITY","offers","_default","exports"],"sources":["request.ts"],"sourcesContent":["import LoggerProxy from '../common/logs/logger-proxy';\nimport {HTTP_VERBS, RESOURCE, API, IP_VERSION} from '../constants';\n\nexport interface ClusterNode {\n isVideoMesh: boolean;\n udp: Array<string>;\n tcp: Array<string>;\n xtls: Array<string>;\n}\n\nexport type ClusterList = {\n [key: string]: ClusterNode;\n};\n\n/**\n * @class ReachabilityRequest\n */\nclass ReachabilityRequest {\n webex: any;\n\n /**\n * Creates an instance of ReachabilityRequest.\n * @param {object} webex\n * @memberof ReachabilityRequest\n */\n constructor(webex: object) {\n this.webex = webex;\n }\n\n /**\n * Gets the cluster information\n *\n * @param {IP_VERSION} ipVersion information about current ip network we're on\n * @returns {Promise}\n */\n getClusters = (ipVersion?: IP_VERSION): Promise<{clusters: ClusterList; joinCookie: any}> =>\n this.webex\n .request({\n method: HTTP_VERBS.GET,\n shouldRefreshAccessToken: false,\n api: API.CALLIOPEDISCOVERY,\n resource: RESOURCE.CLUSTERS,\n qs: {\n JCSupport: 1,\n ipver: ipVersion,\n },\n })\n .then((res) => {\n const {clusters, joinCookie} = res.body;\n\n Object.keys(clusters).forEach((key) => {\n clusters[key].isVideoMesh = !!res.body.clusterClasses?.hybridMedia?.includes(key);\n });\n\n LoggerProxy.logger.log(\n `Reachability:request#getClusters --> get clusters (ipver=${ipVersion}) successful:${JSON.stringify(\n clusters\n )}`\n );\n\n return {\n clusters,\n joinCookie,\n };\n });\n\n /**\n * gets remote SDP For Clusters\n * @param {Object} localSDPList localSDPs for the cluster\n * @returns {Object}\n */\n remoteSDPForClusters = (localSDPList: object) =>\n this.webex\n .request({\n method: HTTP_VERBS.POST,\n shouldRefreshAccessToken: false,\n api: API.CALLIOPEDISCOVERY,\n resource: RESOURCE.REACHABILITY,\n body: {offers: localSDPList},\n })\n .then((res) => {\n LoggerProxy.logger.log(\n 'Reachability:request#remoteSDPForClusters --> Remote SDPs got succcessfully'\n );\n\n return res.body;\n });\n}\n\nexport default ReachabilityRequest;\n"],"mappings":";;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAaA;AACA;AACA;AAFA,IAGME,mBAAmB,oBAAAC,aAAA,CAAAC,OAAA;AAGvB;AACF;AACA;AACA;AACA;AACE,SAAAF,oBAAYG,KAAa,EAAE;EAAA,IAAAC,KAAA;EAAA,IAAAC,gBAAA,CAAAH,OAAA,QAAAF,mBAAA;EAAA,IAAAM,gBAAA,CAAAJ,OAAA;EAI3B;AACF;AACA;AACA;AACA;AACA;EALE,IAAAI,gBAAA,CAAAJ,OAAA,uBAMc,UAACK,SAAsB;IAAA,OACnCH,KAAI,CAACD,KAAK,CACPK,OAAO,CAAC;MACPC,MAAM,EAAEC,qBAAU,CAACC,GAAG;MACtBC,wBAAwB,EAAE,KAAK;MAC/BC,GAAG,EAAEC,cAAG,CAACC,iBAAiB;MAC1BC,QAAQ,EAAEC,mBAAQ,CAACC,QAAQ;MAC3BC,EAAE,EAAE;QACFC,SAAS,EAAE,CAAC;QACZC,KAAK,EAAEd;MACT;IACF,CAAC,CAAC,CACDe,IAAI,CAAC,UAACC,GAAG,EAAK;MACb,IAAAC,SAAA,GAA+BD,GAAG,CAACE,IAAI;QAAhCC,QAAQ,GAAAF,SAAA,CAARE,QAAQ;QAAEC,UAAU,GAAAH,SAAA,CAAVG,UAAU;MAE3B,IAAAC,KAAA,CAAA1B,OAAA,EAAYwB,QAAQ,CAAC,CAACG,OAAO,CAAC,UAACC,GAAG,EAAK;QAAA,IAAAC,qBAAA,EAAAC,sBAAA;QACrCN,QAAQ,CAACI,GAAG,CAAC,CAACG,WAAW,GAAG,CAAC,GAAAF,qBAAA,GAACR,GAAG,CAACE,IAAI,CAACS,cAAc,cAAAH,qBAAA,gBAAAC,sBAAA,GAAvBD,qBAAA,CAAyBI,WAAW,cAAAH,sBAAA,eAApCA,sBAAA,CAAsCI,QAAQ,CAACN,GAAG,CAAC;MACnF,CAAC,CAAC;MAEFO,oBAAW,CAACC,MAAM,CAACC,GAAG,6DAAAC,MAAA,CACwCjC,SAAS,mBAAAiC,MAAA,CAAgB,IAAAC,UAAA,CAAAvC,OAAA,EACnFwB,QACF,CAAC,CACH,CAAC;MAED,OAAO;QACLA,QAAQ,EAARA,QAAQ;QACRC,UAAU,EAAVA;MACF,CAAC;IACH,CAAC,CAAC;EAAA;EAEN;AACF;AACA;AACA;AACA;EAJE,IAAArB,gBAAA,CAAAJ,OAAA,gCAKuB,UAACwC,YAAoB;IAAA,OAC1CtC,KAAI,CAACD,KAAK,CACPK,OAAO,CAAC;MACPC,MAAM,EAAEC,qBAAU,CAACiC,IAAI;MACvB/B,wBAAwB,EAAE,KAAK;MAC/BC,GAAG,EAAEC,cAAG,CAACC,iBAAiB;MAC1BC,QAAQ,EAAEC,mBAAQ,CAAC2B,YAAY;MAC/BnB,IAAI,EAAE;QAACoB,MAAM,EAAEH;MAAY;IAC7B,CAAC,CAAC,CACDpB,IAAI,CAAC,UAACC,GAAG,EAAK;MACbc,oBAAW,CAACC,MAAM,CAACC,GAAG,CACpB,6EACF,CAAC;MAED,OAAOhB,GAAG,CAACE,IAAI;IACjB,CAAC,CAAC;EAAA;EA5DJ,IAAI,CAACtB,KAAK,GAAGA,KAAK;AACpB,CAAC;AAAA,IAAA2C,QAAA,GAAAC,OAAA,CAAA7C,OAAA,GA8DYF,mBAAmB"}
@@ -0,0 +1,3 @@
1
+ export declare const REACTION_RELAY_TYPES: {
2
+ readonly REACTION: "react";
3
+ };
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ _Object$defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.REACTION_RELAY_TYPES = void 0;
8
+ // eslint-disable-next-line import/prefer-default-export
9
+ var REACTION_RELAY_TYPES = exports.REACTION_RELAY_TYPES = {
10
+ REACTION: 'react'
11
+ };
12
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["REACTION_RELAY_TYPES","exports","REACTION"],"sources":["constants.ts"],"sourcesContent":["// eslint-disable-next-line import/prefer-default-export\nexport const REACTION_RELAY_TYPES = {\n REACTION: 'react',\n} as const;\n"],"mappings":";;;;;;;AAAA;AACO,IAAMA,oBAAoB,GAAAC,OAAA,CAAAD,oBAAA,GAAG;EAClCE,QAAQ,EAAE;AACZ,CAAU"}
@@ -1,4 +1,4 @@
1
- import { Reaction, ReactionType, SkinTone, SkinToneType } from './reactions.type';
2
- declare const Reactions: Record<ReactionType, Reaction>;
1
+ import { Reaction, ReactionServerType, SkinTone, SkinToneType } from './reactions.type';
2
+ declare const Reactions: Record<ReactionServerType, Reaction>;
3
3
  declare const SkinTones: Record<SkinToneType, SkinTone>;
4
4
  export { Reactions, SkinTones };
@@ -5,7 +5,7 @@ _Object$defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.SkinTones = exports.Reactions = void 0;
8
- var Reactions = {
8
+ var Reactions = exports.Reactions = {
9
9
  smile: {
10
10
  type: 'smile',
11
11
  codepoints: '1F642',
@@ -36,12 +36,12 @@ var Reactions = {
36
36
  codepoints: '1F44F',
37
37
  shortcodes: ':clap:'
38
38
  },
39
- thumbs_up: {
39
+ thumb_up: {
40
40
  type: 'thumb_up',
41
41
  codepoints: '1F44D',
42
42
  shortcodes: ':thumbsup:'
43
43
  },
44
- thumbs_down: {
44
+ thumb_down: {
45
45
  type: 'thumb_down',
46
46
  codepoints: '1F44E',
47
47
  shortcodes: ':thumbsdown:'
@@ -72,8 +72,7 @@ var Reactions = {
72
72
  shortcodes: ':turtle:'
73
73
  }
74
74
  };
75
- exports.Reactions = Reactions;
76
- var SkinTones = {
75
+ var SkinTones = exports.SkinTones = {
77
76
  normal: {
78
77
  type: 'normal_skin_tone',
79
78
  codepoints: '',
@@ -105,5 +104,4 @@ var SkinTones = {
105
104
  shortcodes: ':skin-tone-6:'
106
105
  }
107
106
  };
108
- exports.SkinTones = SkinTones;
109
107
  //# sourceMappingURL=reactions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Reactions","smile","type","codepoints","shortcodes","sad","wow","haha","celebrate","clap","thumbs_up","thumbs_down","heart","fire","prayer","speed_up","slow_down","exports","SkinTones","normal","light","medium_light","medium","medium_dark","dark"],"sources":["reactions.ts"],"sourcesContent":["import {Reaction, ReactionType, SkinTone, SkinToneType} from './reactions.type';\n\nconst Reactions: Record<ReactionType, Reaction> = {\n smile: {\n type: 'smile',\n codepoints: '1F642',\n shortcodes: ':slightly_smiling_face:',\n },\n sad: {\n type: 'sad',\n codepoints: '1F625',\n shortcodes: ':sad_but_relieved_face:',\n },\n wow: {\n type: 'wow',\n codepoints: '1F62E',\n shortcodes: ':open_mouth:',\n },\n haha: {\n type: 'haha',\n codepoints: '1F603',\n shortcodes: ':smiley:',\n },\n celebrate: {\n type: 'celebrate',\n codepoints: '1F389',\n shortcodes: ':party_popper:',\n },\n clap: {\n type: 'clap',\n codepoints: '1F44F',\n shortcodes: ':clap:',\n },\n thumbs_up: {\n type: 'thumb_up',\n codepoints: '1F44D',\n shortcodes: ':thumbsup:',\n },\n thumbs_down: {\n type: 'thumb_down',\n codepoints: '1F44E',\n shortcodes: ':thumbsdown:',\n },\n heart: {\n type: 'heart',\n codepoints: '2764',\n shortcodes: ':heart:',\n },\n fire: {\n type: 'fire',\n codepoints: '1F525',\n shortcodes: ':fire:',\n },\n prayer: {\n type: 'prayer',\n codepoints: '1F64F',\n shortcodes: ':pray:',\n },\n speed_up: {\n type: 'speed_up',\n codepoints: '1F407',\n shortcodes: ':rabbit:',\n },\n slow_down: {\n type: 'slow_down',\n codepoints: '1F422',\n shortcodes: ':turtle:',\n },\n};\n\nconst SkinTones: Record<SkinToneType, SkinTone> = {\n normal: {\n type: 'normal_skin_tone',\n codepoints: '',\n shortcodes: '',\n },\n light: {\n type: 'light_skin_tone',\n codepoints: '1F3FB',\n shortcodes: ':skin-tone-2:',\n },\n medium_light: {\n type: 'medium_light_skin_tone',\n codepoints: '1F3FC',\n shortcodes: ':skin-tone-3:',\n },\n medium: {\n type: 'medium_skin_tone',\n codepoints: '1F3FD',\n shortcodes: ':skin-tone-4:',\n },\n medium_dark: {\n type: 'medium_dark_skin_tone',\n codepoints: '1F3FE',\n shortcodes: ':skin-tone-5:',\n },\n dark: {\n type: 'dark_skin_tone',\n codepoints: '1F3FF',\n shortcodes: ':skin-tone-6:',\n },\n};\n\nexport {Reactions, SkinTones};\n"],"mappings":";;;;;;;AAEA,IAAMA,SAAyC,GAAG;EAChDC,KAAK,EAAE;IACLC,IAAI,EAAE,OAAO;IACbC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDC,GAAG,EAAE;IACHH,IAAI,EAAE,KAAK;IACXC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDE,GAAG,EAAE;IACHJ,IAAI,EAAE,KAAK;IACXC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDG,IAAI,EAAE;IACJL,IAAI,EAAE,MAAM;IACZC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDI,SAAS,EAAE;IACTN,IAAI,EAAE,WAAW;IACjBC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDK,IAAI,EAAE;IACJP,IAAI,EAAE,MAAM;IACZC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDM,SAAS,EAAE;IACTR,IAAI,EAAE,UAAU;IAChBC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDO,WAAW,EAAE;IACXT,IAAI,EAAE,YAAY;IAClBC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDQ,KAAK,EAAE;IACLV,IAAI,EAAE,OAAO;IACbC,UAAU,EAAE,MAAM;IAClBC,UAAU,EAAE;EACd,CAAC;EACDS,IAAI,EAAE;IACJX,IAAI,EAAE,MAAM;IACZC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDU,MAAM,EAAE;IACNZ,IAAI,EAAE,QAAQ;IACdC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDW,QAAQ,EAAE;IACRb,IAAI,EAAE,UAAU;IAChBC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDY,SAAS,EAAE;IACTd,IAAI,EAAE,WAAW;IACjBC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd;AACF,CAAC;AAACa,OAAA,CAAAjB,SAAA,GAAAA,SAAA;AAEF,IAAMkB,SAAyC,GAAG;EAChDC,MAAM,EAAE;IACNjB,IAAI,EAAE,kBAAkB;IACxBC,UAAU,EAAE,EAAE;IACdC,UAAU,EAAE;EACd,CAAC;EACDgB,KAAK,EAAE;IACLlB,IAAI,EAAE,iBAAiB;IACvBC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDiB,YAAY,EAAE;IACZnB,IAAI,EAAE,wBAAwB;IAC9BC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDkB,MAAM,EAAE;IACNpB,IAAI,EAAE,kBAAkB;IACxBC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDmB,WAAW,EAAE;IACXrB,IAAI,EAAE,uBAAuB;IAC7BC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDoB,IAAI,EAAE;IACJtB,IAAI,EAAE,gBAAgB;IACtBC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd;AACF,CAAC;AAACa,OAAA,CAAAC,SAAA,GAAAA,SAAA"}
1
+ {"version":3,"names":["Reactions","exports","smile","type","codepoints","shortcodes","sad","wow","haha","celebrate","clap","thumb_up","thumb_down","heart","fire","prayer","speed_up","slow_down","SkinTones","normal","light","medium_light","medium","medium_dark","dark"],"sources":["reactions.ts"],"sourcesContent":["import {Reaction, ReactionServerType, SkinTone, SkinToneType} from './reactions.type';\n\nconst Reactions: Record<ReactionServerType, Reaction> = {\n smile: {\n type: 'smile',\n codepoints: '1F642',\n shortcodes: ':slightly_smiling_face:',\n },\n sad: {\n type: 'sad',\n codepoints: '1F625',\n shortcodes: ':sad_but_relieved_face:',\n },\n wow: {\n type: 'wow',\n codepoints: '1F62E',\n shortcodes: ':open_mouth:',\n },\n haha: {\n type: 'haha',\n codepoints: '1F603',\n shortcodes: ':smiley:',\n },\n celebrate: {\n type: 'celebrate',\n codepoints: '1F389',\n shortcodes: ':party_popper:',\n },\n clap: {\n type: 'clap',\n codepoints: '1F44F',\n shortcodes: ':clap:',\n },\n thumb_up: {\n type: 'thumb_up',\n codepoints: '1F44D',\n shortcodes: ':thumbsup:',\n },\n thumb_down: {\n type: 'thumb_down',\n codepoints: '1F44E',\n shortcodes: ':thumbsdown:',\n },\n heart: {\n type: 'heart',\n codepoints: '2764',\n shortcodes: ':heart:',\n },\n fire: {\n type: 'fire',\n codepoints: '1F525',\n shortcodes: ':fire:',\n },\n prayer: {\n type: 'prayer',\n codepoints: '1F64F',\n shortcodes: ':pray:',\n },\n speed_up: {\n type: 'speed_up',\n codepoints: '1F407',\n shortcodes: ':rabbit:',\n },\n slow_down: {\n type: 'slow_down',\n codepoints: '1F422',\n shortcodes: ':turtle:',\n },\n};\n\nconst SkinTones: Record<SkinToneType, SkinTone> = {\n normal: {\n type: 'normal_skin_tone',\n codepoints: '',\n shortcodes: '',\n },\n light: {\n type: 'light_skin_tone',\n codepoints: '1F3FB',\n shortcodes: ':skin-tone-2:',\n },\n medium_light: {\n type: 'medium_light_skin_tone',\n codepoints: '1F3FC',\n shortcodes: ':skin-tone-3:',\n },\n medium: {\n type: 'medium_skin_tone',\n codepoints: '1F3FD',\n shortcodes: ':skin-tone-4:',\n },\n medium_dark: {\n type: 'medium_dark_skin_tone',\n codepoints: '1F3FE',\n shortcodes: ':skin-tone-5:',\n },\n dark: {\n type: 'dark_skin_tone',\n codepoints: '1F3FF',\n shortcodes: ':skin-tone-6:',\n },\n};\n\nexport {Reactions, SkinTones};\n"],"mappings":";;;;;;;AAEA,IAAMA,SAA+C,GAAAC,OAAA,CAAAD,SAAA,GAAG;EACtDE,KAAK,EAAE;IACLC,IAAI,EAAE,OAAO;IACbC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDC,GAAG,EAAE;IACHH,IAAI,EAAE,KAAK;IACXC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDE,GAAG,EAAE;IACHJ,IAAI,EAAE,KAAK;IACXC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDG,IAAI,EAAE;IACJL,IAAI,EAAE,MAAM;IACZC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDI,SAAS,EAAE;IACTN,IAAI,EAAE,WAAW;IACjBC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDK,IAAI,EAAE;IACJP,IAAI,EAAE,MAAM;IACZC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDM,QAAQ,EAAE;IACRR,IAAI,EAAE,UAAU;IAChBC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDO,UAAU,EAAE;IACVT,IAAI,EAAE,YAAY;IAClBC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDQ,KAAK,EAAE;IACLV,IAAI,EAAE,OAAO;IACbC,UAAU,EAAE,MAAM;IAClBC,UAAU,EAAE;EACd,CAAC;EACDS,IAAI,EAAE;IACJX,IAAI,EAAE,MAAM;IACZC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDU,MAAM,EAAE;IACNZ,IAAI,EAAE,QAAQ;IACdC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDW,QAAQ,EAAE;IACRb,IAAI,EAAE,UAAU;IAChBC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDY,SAAS,EAAE;IACTd,IAAI,EAAE,WAAW;IACjBC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd;AACF,CAAC;AAED,IAAMa,SAAyC,GAAAjB,OAAA,CAAAiB,SAAA,GAAG;EAChDC,MAAM,EAAE;IACNhB,IAAI,EAAE,kBAAkB;IACxBC,UAAU,EAAE,EAAE;IACdC,UAAU,EAAE;EACd,CAAC;EACDe,KAAK,EAAE;IACLjB,IAAI,EAAE,iBAAiB;IACvBC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDgB,YAAY,EAAE;IACZlB,IAAI,EAAE,wBAAwB;IAC9BC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDiB,MAAM,EAAE;IACNnB,IAAI,EAAE,kBAAkB;IACxBC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDkB,WAAW,EAAE;IACXpB,IAAI,EAAE,uBAAuB;IAC7BC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd,CAAC;EACDmB,IAAI,EAAE;IACJrB,IAAI,EAAE,gBAAgB;IACtBC,UAAU,EAAE,OAAO;IACnBC,UAAU,EAAE;EACd;AACF,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { REACTION_RELAY_TYPES } from './constants';
1
2
  export type EmoticonData = {
2
3
  type: string;
3
4
  codepoints?: string;
@@ -7,15 +8,15 @@ export type SkinTone = EmoticonData;
7
8
  export type Reaction = EmoticonData & {
8
9
  tone?: SkinTone;
9
10
  };
10
- export declare enum ReactionType {
11
+ export declare enum ReactionServerType {
11
12
  smile = "smile",
12
13
  sad = "sad",
13
14
  wow = "wow",
14
15
  haha = "haha",
15
16
  celebrate = "celebrate",
16
17
  clap = "clap",
17
- thumbs_up = "thumbs_up",
18
- thumbs_down = "thumbs_down",
18
+ thumb_up = "thumb_up",
19
+ thumb_down = "thumb_down",
19
20
  heart = "heart",
20
21
  fire = "fire",
21
22
  prayer = "prayer",
@@ -30,3 +31,22 @@ export declare enum SkinToneType {
30
31
  medium_dark = "medium_dark",
31
32
  dark = "dark"
32
33
  }
34
+ export type Sender = {
35
+ participantId: string;
36
+ };
37
+ export type ProcessedReaction = {
38
+ reaction: Reaction;
39
+ sender: {
40
+ id: Sender['participantId'];
41
+ name: string;
42
+ };
43
+ };
44
+ type RelayEventData = {
45
+ relayType: (typeof REACTION_RELAY_TYPES)['REACTION'];
46
+ reaction: Reaction;
47
+ sender: Sender;
48
+ };
49
+ export type RelayEvent = {
50
+ data: RelayEventData;
51
+ };
52
+ export {};
@@ -4,33 +4,31 @@ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/defi
4
4
  _Object$defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.SkinToneType = exports.ReactionType = void 0;
8
- // @ts-ignore
9
- var ReactionType;
10
- exports.ReactionType = ReactionType;
11
- (function (ReactionType) {
12
- ReactionType["smile"] = "smile";
13
- ReactionType["sad"] = "sad";
14
- ReactionType["wow"] = "wow";
15
- ReactionType["haha"] = "haha";
16
- ReactionType["celebrate"] = "celebrate";
17
- ReactionType["clap"] = "clap";
18
- ReactionType["thumbs_up"] = "thumbs_up";
19
- ReactionType["thumbs_down"] = "thumbs_down";
20
- ReactionType["heart"] = "heart";
21
- ReactionType["fire"] = "fire";
22
- ReactionType["prayer"] = "prayer";
23
- ReactionType["speed_up"] = "speed_up";
24
- ReactionType["slow_down"] = "slow_down";
25
- })(ReactionType || (exports.ReactionType = ReactionType = {}));
26
- var SkinToneType;
27
- exports.SkinToneType = SkinToneType;
28
- (function (SkinToneType) {
7
+ exports.SkinToneType = exports.ReactionServerType = void 0;
8
+ // eslint-disable-next-line no-shadow
9
+ var ReactionServerType = exports.ReactionServerType = /*#__PURE__*/function (ReactionServerType) {
10
+ ReactionServerType["smile"] = "smile";
11
+ ReactionServerType["sad"] = "sad";
12
+ ReactionServerType["wow"] = "wow";
13
+ ReactionServerType["haha"] = "haha";
14
+ ReactionServerType["celebrate"] = "celebrate";
15
+ ReactionServerType["clap"] = "clap";
16
+ ReactionServerType["thumb_up"] = "thumb_up";
17
+ ReactionServerType["thumb_down"] = "thumb_down";
18
+ ReactionServerType["heart"] = "heart";
19
+ ReactionServerType["fire"] = "fire";
20
+ ReactionServerType["prayer"] = "prayer";
21
+ ReactionServerType["speed_up"] = "speed_up";
22
+ ReactionServerType["slow_down"] = "slow_down";
23
+ return ReactionServerType;
24
+ }({}); // eslint-disable-next-line no-shadow
25
+ var SkinToneType = exports.SkinToneType = /*#__PURE__*/function (SkinToneType) {
29
26
  SkinToneType["normal"] = "normal";
30
27
  SkinToneType["light"] = "light";
31
28
  SkinToneType["medium_light"] = "medium_light";
32
29
  SkinToneType["medium"] = "medium";
33
30
  SkinToneType["medium_dark"] = "medium_dark";
34
31
  SkinToneType["dark"] = "dark";
35
- })(SkinToneType || (exports.SkinToneType = SkinToneType = {}));
32
+ return SkinToneType;
33
+ }({});
36
34
  //# sourceMappingURL=reactions.type.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ReactionType","exports","SkinToneType"],"sources":["reactions.type.ts"],"sourcesContent":["export type EmoticonData = {\n type: string;\n codepoints?: string;\n shortcodes?: string;\n};\n\nexport type SkinTone = EmoticonData;\n// @ts-ignore\nexport type Reaction = EmoticonData & {\n tone?: SkinTone;\n};\n\nexport enum ReactionType {\n smile = 'smile',\n sad = 'sad',\n wow = 'wow',\n haha = 'haha',\n celebrate = 'celebrate',\n clap = 'clap',\n thumbs_up = 'thumbs_up',\n thumbs_down = 'thumbs_down',\n heart = 'heart',\n fire = 'fire',\n prayer = 'prayer',\n speed_up = 'speed_up',\n slow_down = 'slow_down',\n}\n\nexport enum SkinToneType {\n normal = 'normal',\n light = 'light',\n medium_light = 'medium_light',\n medium = 'medium',\n medium_dark = 'medium_dark',\n dark = 'dark',\n}\n"],"mappings":";;;;;;;AAOA;AAAA,IAKYA,YAAY;AAAAC,OAAA,CAAAD,YAAA,GAAAA,YAAA;AAAA,WAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;AAAA,GAAZA,YAAY,KAAAC,OAAA,CAAAD,YAAA,GAAZA,YAAY;AAAA,IAgBZE,YAAY;AAAAD,OAAA,CAAAC,YAAA,GAAAA,YAAA;AAAA,WAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;AAAA,GAAZA,YAAY,KAAAD,OAAA,CAAAC,YAAA,GAAZA,YAAY"}
1
+ {"version":3,"names":["ReactionServerType","exports","SkinToneType"],"sources":["reactions.type.ts"],"sourcesContent":["import {REACTION_RELAY_TYPES} from './constants';\n\nexport type EmoticonData = {\n type: string;\n codepoints?: string;\n shortcodes?: string;\n};\n\nexport type SkinTone = EmoticonData;\n\nexport type Reaction = EmoticonData & {\n tone?: SkinTone;\n};\n\n// eslint-disable-next-line no-shadow\nexport enum ReactionServerType {\n smile = 'smile',\n sad = 'sad',\n wow = 'wow',\n haha = 'haha',\n celebrate = 'celebrate',\n clap = 'clap',\n thumb_up = 'thumb_up',\n thumb_down = 'thumb_down',\n heart = 'heart',\n fire = 'fire',\n prayer = 'prayer',\n speed_up = 'speed_up',\n slow_down = 'slow_down',\n}\n\n// eslint-disable-next-line no-shadow\nexport enum SkinToneType {\n normal = 'normal',\n light = 'light',\n medium_light = 'medium_light',\n medium = 'medium',\n medium_dark = 'medium_dark',\n dark = 'dark',\n}\n\nexport type Sender = {\n participantId: string;\n};\n\nexport type ProcessedReaction = {\n reaction: Reaction;\n sender: {\n id: Sender['participantId'];\n name: string;\n };\n};\n\ntype RelayEventData = {\n relayType: (typeof REACTION_RELAY_TYPES)['REACTION'];\n reaction: Reaction;\n sender: Sender;\n};\n\nexport type RelayEvent = {\n data: RelayEventData;\n};\n"],"mappings":";;;;;;;AAcA;AAAA,IACYA,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA,OAgB9B;AAAA,IACYE,YAAY,GAAAD,OAAA,CAAAC,YAAA,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA"}
@@ -1,6 +1,7 @@
1
1
  /*!
2
2
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
3
  */
4
+ import { RECONNECTION_STATE } from '../constants';
4
5
  import Meeting from '../meeting';
5
6
  /**
6
7
  * @export
@@ -20,6 +21,12 @@ export default class ReconnectionManager {
20
21
  * @param {Meeting} meeting
21
22
  */
22
23
  constructor(meeting: Meeting);
24
+ /**
25
+ * @public
26
+ * @memberof ReconnectionManager
27
+ * @returns {void}
28
+ */
29
+ resetReconnectionTimer(): void;
23
30
  /**
24
31
  * Sets the iceState to connected and clears any disconnect timeouts and
25
32
  * related timeout data within the iceState.
@@ -52,6 +59,30 @@ export default class ReconnectionManager {
52
59
  * @memberof ReconnectionManager
53
60
  */
54
61
  cleanUp(): void;
62
+ /**
63
+ * Stop the local share stream.
64
+ *
65
+ * @param {string} reason a {@link SHARE_STOPPED_REASON}
66
+ * @returns {undefined}
67
+ * @private
68
+ * @memberof ReconnectionManager
69
+ */
70
+ private stopLocalShareStream;
71
+ /**
72
+ * @public
73
+ * @memberof ReconnectionManager
74
+ * @returns {Boolean} true if reconnection operation is in progress
75
+ */
76
+ isReconnectInProgress(): boolean;
77
+ /**
78
+ * Sets the reconnection status
79
+ *
80
+ * @public
81
+ * @param {RECONNECTION_STATE} status
82
+ * @memberof ReconnectionManager
83
+ * @returns {undefined}
84
+ */
85
+ setStatus(status: RECONNECTION_STATE): void;
55
86
  /**
56
87
  * @returns {Boolean}
57
88
  * @throws {ReconnectionError}
@@ -94,7 +125,7 @@ export default class ReconnectionManager {
94
125
  * @private
95
126
  * @memberof ReconnectionManager
96
127
  */
97
- reconnectMedia(): Promise<any>;
128
+ reconnectMedia(): Promise<void>;
98
129
  /**
99
130
  * Attempt to Reconnect Mercury Websocket
100
131
  * @returns {Promise}
@@ -102,11 +133,4 @@ export default class ReconnectionManager {
102
133
  * @memberof ReconnectionManager
103
134
  */
104
135
  private reconnectMercuryWebSocket;
105
- /**
106
- * @param {Meeting} meeting
107
- * @returns {undefined}
108
- * @private
109
- * @memberof ReconnectionManager
110
- */
111
- private static setupPeerConnection;
112
136
  }