@webex/plugin-meetings 2.60.0-next.9 → 2.60.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (516) hide show
  1. package/README.md +8 -46
  2. package/dist/common/browser-detection.js +3 -2
  3. package/dist/common/browser-detection.js.map +1 -1
  4. package/dist/common/collection.js +4 -3
  5. package/dist/common/collection.js.map +1 -1
  6. package/dist/common/config.js +2 -1
  7. package/dist/common/config.js.map +1 -1
  8. package/dist/common/errors/captcha-error.js +2 -1
  9. package/dist/common/errors/captcha-error.js.map +1 -1
  10. package/dist/common/errors/intent-to-join.js +2 -1
  11. package/dist/common/errors/intent-to-join.js.map +1 -1
  12. package/dist/common/errors/join-meeting.js +2 -1
  13. package/dist/common/errors/join-meeting.js.map +1 -1
  14. package/dist/common/errors/media.js +2 -1
  15. package/dist/common/errors/media.js.map +1 -1
  16. package/dist/common/errors/parameter.js +4 -3
  17. package/dist/common/errors/parameter.js.map +1 -1
  18. package/dist/common/errors/password-error.js +2 -1
  19. package/dist/common/errors/password-error.js.map +1 -1
  20. package/dist/common/errors/permission.js +2 -1
  21. package/dist/common/errors/permission.js.map +1 -1
  22. package/dist/common/errors/{reclaim-host-role-errors.js → reclaim-host-role-error.js} +11 -7
  23. package/dist/common/errors/reclaim-host-role-error.js.map +1 -0
  24. package/dist/common/errors/reconnection-in-progress.js +2 -1
  25. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  26. package/dist/common/errors/reconnection.js +2 -1
  27. package/dist/common/errors/reconnection.js.map +1 -1
  28. package/dist/common/errors/stats.js +2 -1
  29. package/dist/common/errors/stats.js.map +1 -1
  30. package/dist/common/errors/webex-errors.d.ts +8 -20
  31. package/dist/common/errors/webex-errors.js +28 -48
  32. package/dist/common/errors/webex-errors.js.map +1 -1
  33. package/dist/common/errors/webex-meetings-error.js +2 -1
  34. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  35. package/dist/common/events/events-scope.js +2 -1
  36. package/dist/common/events/events-scope.js.map +1 -1
  37. package/dist/common/events/events.js +2 -1
  38. package/dist/common/events/events.js.map +1 -1
  39. package/dist/common/events/trigger-proxy.js +2 -1
  40. package/dist/common/events/trigger-proxy.js.map +1 -1
  41. package/dist/common/events/util.js +2 -1
  42. package/dist/common/events/util.js.map +1 -1
  43. package/dist/common/logs/logger-config.js +2 -1
  44. package/dist/common/logs/logger-config.js.map +1 -1
  45. package/dist/common/logs/logger-proxy.js +3 -2
  46. package/dist/common/logs/logger-proxy.js.map +1 -1
  47. package/dist/common/logs/request.d.ts +1 -3
  48. package/dist/common/logs/request.js +5 -8
  49. package/dist/common/logs/request.js.map +1 -1
  50. package/dist/common/queue.d.ts +7 -9
  51. package/dist/common/queue.js +9 -22
  52. package/dist/common/queue.js.map +1 -1
  53. package/dist/config.d.ts +7 -5
  54. package/dist/config.js +11 -8
  55. package/dist/config.js.map +1 -1
  56. package/dist/constants.d.ts +97 -217
  57. package/dist/constants.js +441 -416
  58. package/dist/constants.js.map +1 -1
  59. package/dist/controls-options-manager/constants.js +6 -3
  60. package/dist/controls-options-manager/constants.js.map +1 -1
  61. package/dist/controls-options-manager/enums.d.ts +1 -11
  62. package/dist/controls-options-manager/enums.js +6 -15
  63. package/dist/controls-options-manager/enums.js.map +1 -1
  64. package/dist/controls-options-manager/index.d.ts +1 -17
  65. package/dist/controls-options-manager/index.js +38 -127
  66. package/dist/controls-options-manager/index.js.map +1 -1
  67. package/dist/controls-options-manager/util.d.ts +7 -1
  68. package/dist/controls-options-manager/util.js +19 -309
  69. package/dist/controls-options-manager/util.js.map +1 -1
  70. package/dist/index.d.ts +3 -6
  71. package/dist/index.js +4 -116
  72. package/dist/index.js.map +1 -1
  73. package/dist/locus-info/controlsUtils.js +11 -100
  74. package/dist/locus-info/controlsUtils.js.map +1 -1
  75. package/dist/locus-info/embeddedAppsUtils.js +4 -3
  76. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  77. package/dist/locus-info/fullState.js +2 -1
  78. package/dist/locus-info/fullState.js.map +1 -1
  79. package/dist/locus-info/hostUtils.js +2 -1
  80. package/dist/locus-info/hostUtils.js.map +1 -1
  81. package/dist/locus-info/index.d.ts +4 -57
  82. package/dist/locus-info/index.js +84 -425
  83. package/dist/locus-info/index.js.map +1 -1
  84. package/dist/locus-info/infoUtils.js +5 -13
  85. package/dist/locus-info/infoUtils.js.map +1 -1
  86. package/dist/locus-info/mediaSharesUtils.js +3 -58
  87. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  88. package/dist/locus-info/parser.d.ts +6 -66
  89. package/dist/locus-info/parser.js +80 -253
  90. package/dist/locus-info/parser.js.map +1 -1
  91. package/dist/locus-info/selfUtils.js +13 -97
  92. package/dist/locus-info/selfUtils.js.map +1 -1
  93. package/dist/media/index.d.ts +0 -2
  94. package/dist/media/index.js +319 -107
  95. package/dist/media/index.js.map +1 -1
  96. package/dist/media/properties.d.ts +53 -38
  97. package/dist/media/properties.js +153 -96
  98. package/dist/media/properties.js.map +1 -1
  99. package/dist/media/util.js +22 -1
  100. package/dist/media/util.js.map +1 -1
  101. package/dist/mediaQualityMetrics/config.d.ts +230 -234
  102. package/dist/mediaQualityMetrics/config.js +498 -302
  103. package/dist/mediaQualityMetrics/config.js.map +1 -1
  104. package/dist/meeting/effectsState.d.ts +42 -0
  105. package/dist/meeting/effectsState.js +260 -0
  106. package/dist/meeting/effectsState.js.map +1 -0
  107. package/dist/meeting/in-meeting-actions.d.ts +0 -88
  108. package/dist/meeting/in-meeting-actions.js +3 -94
  109. package/dist/meeting/in-meeting-actions.js.map +1 -1
  110. package/dist/meeting/index.d.ts +494 -591
  111. package/dist/meeting/index.js +2969 -4707
  112. package/dist/meeting/index.js.map +1 -1
  113. package/dist/meeting/muteState.d.ts +25 -93
  114. package/dist/meeting/muteState.js +133 -224
  115. package/dist/meeting/muteState.js.map +1 -1
  116. package/dist/meeting/request.d.ts +47 -82
  117. package/dist/meeting/request.js +199 -297
  118. package/dist/meeting/request.js.map +1 -1
  119. package/dist/meeting/state.js +2 -1
  120. package/dist/meeting/state.js.map +1 -1
  121. package/dist/meeting/util.d.ts +1 -102
  122. package/dist/meeting/util.js +435 -605
  123. package/dist/meeting/util.js.map +1 -1
  124. package/dist/meeting-info/collection.js +4 -3
  125. package/dist/meeting-info/collection.js.map +1 -1
  126. package/dist/meeting-info/index.d.ts +1 -13
  127. package/dist/meeting-info/index.js +7 -74
  128. package/dist/meeting-info/index.js.map +1 -1
  129. package/dist/meeting-info/meeting-info-v2.d.ts +1 -31
  130. package/dist/meeting-info/meeting-info-v2.js +63 -200
  131. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  132. package/dist/meeting-info/request.js +2 -1
  133. package/dist/meeting-info/request.js.map +1 -1
  134. package/dist/meeting-info/util.js +3 -2
  135. package/dist/meeting-info/util.js.map +1 -1
  136. package/dist/meeting-info/utilv2.js +41 -39
  137. package/dist/meeting-info/utilv2.js.map +1 -1
  138. package/dist/meetings/collection.d.ts +0 -17
  139. package/dist/meetings/collection.js +4 -42
  140. package/dist/meetings/collection.js.map +1 -1
  141. package/dist/meetings/index.d.ts +21 -103
  142. package/dist/meetings/index.js +124 -486
  143. package/dist/meetings/index.js.map +1 -1
  144. package/dist/meetings/request.js +3 -4
  145. package/dist/meetings/request.js.map +1 -1
  146. package/dist/meetings/util.js +6 -107
  147. package/dist/meetings/util.js.map +1 -1
  148. package/dist/member/index.d.ts +1 -13
  149. package/dist/member/index.js +2 -45
  150. package/dist/member/index.js.map +1 -1
  151. package/dist/member/member.types.js +4 -3
  152. package/dist/member/member.types.js.map +1 -1
  153. package/dist/member/util.js +29 -120
  154. package/dist/member/util.js.map +1 -1
  155. package/dist/members/collection.d.ts +0 -5
  156. package/dist/members/collection.js +2 -11
  157. package/dist/members/collection.js.map +1 -1
  158. package/dist/members/index.d.ts +11 -56
  159. package/dist/members/index.js +47 -174
  160. package/dist/members/index.js.map +1 -1
  161. package/dist/members/request.d.ts +11 -67
  162. package/dist/members/request.js +54 -102
  163. package/dist/members/request.js.map +1 -1
  164. package/dist/members/types.js +4 -3
  165. package/dist/members/types.js.map +1 -1
  166. package/dist/members/util.d.ts +1 -214
  167. package/dist/members/util.js +284 -327
  168. package/dist/members/util.js.map +1 -1
  169. package/dist/metrics/config.d.ts +169 -0
  170. package/dist/metrics/config.js +289 -0
  171. package/dist/metrics/config.js.map +1 -0
  172. package/dist/metrics/constants.d.ts +6 -15
  173. package/dist/metrics/constants.js +9 -17
  174. package/dist/metrics/constants.js.map +1 -1
  175. package/dist/metrics/index.d.ts +111 -4
  176. package/dist/metrics/index.js +452 -4
  177. package/dist/metrics/index.js.map +1 -1
  178. package/dist/networkQualityMonitor/index.js +4 -5
  179. package/dist/networkQualityMonitor/index.js.map +1 -1
  180. package/dist/peer-connection-manager/index.d.ts +6 -0
  181. package/dist/peer-connection-manager/index.js +671 -0
  182. package/dist/peer-connection-manager/index.js.map +1 -0
  183. package/dist/peer-connection-manager/util.d.ts +6 -0
  184. package/dist/peer-connection-manager/util.js +110 -0
  185. package/dist/peer-connection-manager/util.js.map +1 -0
  186. package/dist/personal-meeting-room/index.js +3 -2
  187. package/dist/personal-meeting-room/index.js.map +1 -1
  188. package/dist/personal-meeting-room/request.js +3 -2
  189. package/dist/personal-meeting-room/request.js.map +1 -1
  190. package/dist/personal-meeting-room/util.js +2 -1
  191. package/dist/personal-meeting-room/util.js.map +1 -1
  192. package/dist/reachability/index.d.ts +7 -62
  193. package/dist/reachability/index.js +72 -265
  194. package/dist/reachability/index.js.map +1 -1
  195. package/dist/reachability/request.d.ts +3 -7
  196. package/dist/reachability/request.js +10 -18
  197. package/dist/reachability/request.js.map +1 -1
  198. package/dist/reactions/reactions.d.ts +2 -2
  199. package/dist/reactions/reactions.js +6 -4
  200. package/dist/reactions/reactions.js.map +1 -1
  201. package/dist/reactions/reactions.type.d.ts +3 -23
  202. package/dist/reactions/reactions.type.js +23 -21
  203. package/dist/reactions/reactions.type.js.map +1 -1
  204. package/dist/reconnection-manager/index.d.ts +8 -32
  205. package/dist/reconnection-manager/index.js +231 -282
  206. package/dist/reconnection-manager/index.js.map +1 -1
  207. package/dist/recording-controller/enums.js +5 -4
  208. package/dist/recording-controller/enums.js.map +1 -1
  209. package/dist/recording-controller/index.d.ts +1 -15
  210. package/dist/recording-controller/index.js +46 -57
  211. package/dist/recording-controller/index.js.map +1 -1
  212. package/dist/recording-controller/util.d.ts +4 -5
  213. package/dist/recording-controller/util.js +10 -10
  214. package/dist/recording-controller/util.js.map +1 -1
  215. package/dist/roap/collection.d.ts +10 -0
  216. package/dist/roap/collection.js +63 -0
  217. package/dist/roap/collection.js.map +1 -0
  218. package/dist/roap/handler.d.ts +47 -0
  219. package/dist/roap/handler.js +279 -0
  220. package/dist/roap/handler.js.map +1 -0
  221. package/dist/roap/index.d.ts +47 -9
  222. package/dist/roap/index.js +235 -101
  223. package/dist/roap/index.js.map +1 -1
  224. package/dist/roap/request.d.ts +12 -18
  225. package/dist/roap/request.js +180 -126
  226. package/dist/roap/request.js.map +1 -1
  227. package/dist/roap/state.d.ts +9 -0
  228. package/dist/roap/state.js +127 -0
  229. package/dist/roap/state.js.map +1 -0
  230. package/dist/roap/turnDiscovery.d.ts +16 -27
  231. package/dist/roap/turnDiscovery.js +105 -115
  232. package/dist/roap/turnDiscovery.js.map +1 -1
  233. package/dist/roap/util.d.ts +2 -0
  234. package/dist/roap/util.js +76 -0
  235. package/dist/roap/util.js.map +1 -0
  236. package/dist/statsAnalyzer/global.d.ts +83 -1
  237. package/dist/statsAnalyzer/global.js +85 -2
  238. package/dist/statsAnalyzer/global.js.map +1 -1
  239. package/dist/statsAnalyzer/index.d.ts +30 -28
  240. package/dist/statsAnalyzer/index.js +509 -374
  241. package/dist/statsAnalyzer/index.js.map +1 -1
  242. package/dist/statsAnalyzer/mqaUtil.d.ts +6 -8
  243. package/dist/statsAnalyzer/mqaUtil.js +83 -116
  244. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  245. package/dist/transcription/index.js +2 -1
  246. package/dist/transcription/index.js.map +1 -1
  247. package/package.json +26 -35
  248. package/src/common/errors/webex-errors.ts +12 -36
  249. package/src/common/logs/logger-proxy.ts +1 -1
  250. package/src/common/logs/request.ts +1 -5
  251. package/src/common/queue.ts +8 -22
  252. package/src/config.ts +7 -5
  253. package/src/constants.ts +97 -244
  254. package/src/controls-options-manager/enums.ts +0 -12
  255. package/src/controls-options-manager/index.ts +21 -116
  256. package/src/controls-options-manager/util.ts +14 -294
  257. package/src/index.js +15 -0
  258. package/src/locus-info/controlsUtils.ts +0 -110
  259. package/src/locus-info/index.ts +61 -449
  260. package/src/locus-info/infoUtils.ts +2 -14
  261. package/src/locus-info/mediaSharesUtils.ts +0 -64
  262. package/src/locus-info/parser.ts +47 -258
  263. package/src/locus-info/selfUtils.ts +2 -85
  264. package/src/media/index.ts +370 -153
  265. package/src/media/properties.ts +136 -106
  266. package/src/media/util.ts +21 -0
  267. package/src/mediaQualityMetrics/config.ts +377 -244
  268. package/src/meeting/effectsState.ts +209 -0
  269. package/src/meeting/in-meeting-actions.ts +0 -176
  270. package/src/meeting/index.ts +2482 -3929
  271. package/src/meeting/muteState.ts +138 -224
  272. package/src/meeting/request.ts +127 -207
  273. package/src/meeting/util.ts +423 -590
  274. package/src/meeting-info/index.ts +8 -81
  275. package/src/meeting-info/meeting-info-v2.ts +13 -163
  276. package/src/meeting-info/util.ts +1 -1
  277. package/src/meeting-info/utilv2.ts +28 -28
  278. package/src/meetings/collection.ts +0 -33
  279. package/src/meetings/index.ts +126 -486
  280. package/src/meetings/request.ts +0 -2
  281. package/src/meetings/util.ts +5 -116
  282. package/src/member/index.ts +1 -43
  283. package/src/member/util.ts +28 -125
  284. package/src/members/collection.ts +0 -8
  285. package/src/members/index.ts +52 -187
  286. package/src/members/request.ts +27 -87
  287. package/src/members/util.ts +291 -332
  288. package/src/metrics/config.ts +485 -0
  289. package/src/metrics/constants.ts +6 -15
  290. package/src/metrics/index.ts +471 -1
  291. package/src/networkQualityMonitor/index.ts +6 -6
  292. package/src/peer-connection-manager/index.ts +847 -0
  293. package/src/peer-connection-manager/util.ts +119 -0
  294. package/src/reachability/index.ts +45 -238
  295. package/src/reachability/request.ts +8 -17
  296. package/src/reactions/reactions.ts +4 -4
  297. package/src/reactions/reactions.type.ts +4 -30
  298. package/src/reconnection-manager/index.ts +156 -168
  299. package/src/recording-controller/index.ts +3 -20
  300. package/src/recording-controller/util.ts +9 -26
  301. package/src/roap/collection.ts +62 -0
  302. package/src/roap/handler.ts +294 -0
  303. package/src/roap/index.ts +241 -98
  304. package/src/roap/request.ts +148 -74
  305. package/src/roap/state.ts +156 -0
  306. package/src/roap/turnDiscovery.ts +56 -62
  307. package/src/roap/util.ts +100 -0
  308. package/src/statsAnalyzer/global.ts +84 -1
  309. package/src/statsAnalyzer/index.ts +642 -413
  310. package/src/statsAnalyzer/mqaUtil.ts +114 -111
  311. package/test/integration/spec/journey.js +264 -320
  312. package/test/integration/spec/space-meeting.js +4 -77
  313. package/test/unit/spec/common/queue.js +2 -31
  314. package/test/unit/spec/controls-options-manager/index.js +0 -163
  315. package/test/unit/spec/controls-options-manager/util.js +60 -576
  316. package/test/unit/spec/fixture/locus.js +0 -1
  317. package/test/unit/spec/locus-info/controlsUtils.js +30 -323
  318. package/test/unit/spec/locus-info/index.js +15 -1389
  319. package/test/unit/spec/locus-info/infoUtils.js +16 -54
  320. package/test/unit/spec/locus-info/lib/SeqCmp.json +0 -16
  321. package/test/unit/spec/locus-info/lib/selfConstant.js +0 -48
  322. package/test/unit/spec/locus-info/parser.js +35 -116
  323. package/test/unit/spec/locus-info/selfUtils.js +0 -275
  324. package/test/unit/spec/media/properties.ts +84 -75
  325. package/test/unit/spec/meeting/effectsState.js +281 -0
  326. package/test/unit/spec/meeting/in-meeting-actions.ts +0 -86
  327. package/test/unit/spec/meeting/index.js +3136 -8547
  328. package/test/unit/spec/meeting/muteState.js +213 -409
  329. package/test/unit/spec/meeting/request.js +42 -512
  330. package/test/unit/spec/meeting/utils.js +24 -741
  331. package/test/unit/spec/meeting-info/meetinginfov2.js +5 -527
  332. package/test/unit/spec/meeting-info/utilv2.js +0 -21
  333. package/test/unit/spec/meetings/collection.js +0 -26
  334. package/test/unit/spec/meetings/index.js +211 -1278
  335. package/test/unit/spec/meetings/utils.js +2 -202
  336. package/test/unit/spec/member/index.js +9 -32
  337. package/test/unit/spec/member/util.js +61 -499
  338. package/test/unit/spec/members/index.js +5 -394
  339. package/test/unit/spec/members/request.js +27 -206
  340. package/test/unit/spec/members/utils.js +38 -173
  341. package/test/unit/spec/metrics/index.js +50 -1
  342. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  343. package/test/unit/spec/peerconnection-manager/index.js +218 -0
  344. package/test/unit/spec/peerconnection-manager/utils.js +49 -0
  345. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +388 -0
  346. package/test/unit/spec/reachability/index.ts +24 -598
  347. package/test/unit/spec/reconnection-manager/index.js +24 -162
  348. package/test/unit/spec/recording-controller/index.js +218 -293
  349. package/test/unit/spec/recording-controller/util.js +96 -223
  350. package/test/unit/spec/roap/index.ts +76 -200
  351. package/test/unit/spec/roap/turnDiscovery.ts +48 -86
  352. package/test/unit/spec/roap/util.js +30 -0
  353. package/test/unit/spec/stats-analyzer/index.js +174 -188
  354. package/test/utils/testUtils.js +45 -0
  355. package/test/utils/webex-config.js +0 -4
  356. package/test/utils/webex-test-users.js +3 -7
  357. package/dist/annotation/annotation.types.d.ts +0 -42
  358. package/dist/annotation/annotation.types.js +0 -7
  359. package/dist/annotation/annotation.types.js.map +0 -1
  360. package/dist/annotation/constants.d.ts +0 -31
  361. package/dist/annotation/constants.js +0 -41
  362. package/dist/annotation/constants.js.map +0 -1
  363. package/dist/annotation/index.d.ts +0 -117
  364. package/dist/annotation/index.js +0 -357
  365. package/dist/annotation/index.js.map +0 -1
  366. package/dist/breakouts/breakout.d.ts +0 -8
  367. package/dist/breakouts/breakout.js +0 -215
  368. package/dist/breakouts/breakout.js.map +0 -1
  369. package/dist/breakouts/collection.d.ts +0 -5
  370. package/dist/breakouts/collection.js +0 -22
  371. package/dist/breakouts/collection.js.map +0 -1
  372. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  373. package/dist/breakouts/edit-lock-error.js +0 -51
  374. package/dist/breakouts/edit-lock-error.js.map +0 -1
  375. package/dist/breakouts/events.d.ts +0 -8
  376. package/dist/breakouts/events.js +0 -44
  377. package/dist/breakouts/events.js.map +0 -1
  378. package/dist/breakouts/index.d.ts +0 -5
  379. package/dist/breakouts/index.js +0 -1047
  380. package/dist/breakouts/index.js.map +0 -1
  381. package/dist/breakouts/request.d.ts +0 -22
  382. package/dist/breakouts/request.js +0 -77
  383. package/dist/breakouts/request.js.map +0 -1
  384. package/dist/breakouts/utils.d.ts +0 -15
  385. package/dist/breakouts/utils.js +0 -64
  386. package/dist/breakouts/utils.js.map +0 -1
  387. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  388. package/dist/common/errors/no-meeting-info.js +0 -50
  389. package/dist/common/errors/no-meeting-info.js.map +0 -1
  390. package/dist/common/errors/reclaim-host-role-errors.js.map +0 -1
  391. package/dist/controls-options-manager/types.d.ts +0 -43
  392. package/dist/controls-options-manager/types.js +0 -7
  393. package/dist/controls-options-manager/types.js.map +0 -1
  394. package/dist/interpretation/collection.d.ts +0 -5
  395. package/dist/interpretation/collection.js +0 -22
  396. package/dist/interpretation/collection.js.map +0 -1
  397. package/dist/interpretation/index.d.ts +0 -5
  398. package/dist/interpretation/index.js +0 -365
  399. package/dist/interpretation/index.js.map +0 -1
  400. package/dist/interpretation/siLanguage.d.ts +0 -5
  401. package/dist/interpretation/siLanguage.js +0 -24
  402. package/dist/interpretation/siLanguage.js.map +0 -1
  403. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  404. package/dist/meeting/locusMediaRequest.js +0 -291
  405. package/dist/meeting/locusMediaRequest.js.map +0 -1
  406. package/dist/meeting/request.type.d.ts +0 -11
  407. package/dist/meeting/request.type.js +0 -7
  408. package/dist/meeting/request.type.js.map +0 -1
  409. package/dist/meetings/meetings.types.d.ts +0 -4
  410. package/dist/meetings/meetings.types.js +0 -7
  411. package/dist/meetings/meetings.types.js.map +0 -1
  412. package/dist/member/types.d.ts +0 -32
  413. package/dist/member/types.js +0 -23
  414. package/dist/member/types.js.map +0 -1
  415. package/dist/multistream/mediaRequestManager.d.ts +0 -118
  416. package/dist/multistream/mediaRequestManager.js +0 -344
  417. package/dist/multistream/mediaRequestManager.js.map +0 -1
  418. package/dist/multistream/receiveSlot.d.ts +0 -68
  419. package/dist/multistream/receiveSlot.js +0 -200
  420. package/dist/multistream/receiveSlot.js.map +0 -1
  421. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  422. package/dist/multistream/receiveSlotManager.js +0 -174
  423. package/dist/multistream/receiveSlotManager.js.map +0 -1
  424. package/dist/multistream/remoteMedia.d.ts +0 -72
  425. package/dist/multistream/remoteMedia.js +0 -268
  426. package/dist/multistream/remoteMedia.js.map +0 -1
  427. package/dist/multistream/remoteMediaGroup.d.ts +0 -47
  428. package/dist/multistream/remoteMediaGroup.js +0 -267
  429. package/dist/multistream/remoteMediaGroup.js.map +0 -1
  430. package/dist/multistream/remoteMediaManager.d.ts +0 -285
  431. package/dist/multistream/remoteMediaManager.js +0 -1211
  432. package/dist/multistream/remoteMediaManager.js.map +0 -1
  433. package/dist/multistream/sendSlotManager.d.ts +0 -61
  434. package/dist/multistream/sendSlotManager.js +0 -236
  435. package/dist/multistream/sendSlotManager.js.map +0 -1
  436. package/dist/reactions/constants.d.ts +0 -3
  437. package/dist/reactions/constants.js +0 -12
  438. package/dist/reactions/constants.js.map +0 -1
  439. package/dist/rtcMetrics/constants.d.ts +0 -4
  440. package/dist/rtcMetrics/constants.js +0 -11
  441. package/dist/rtcMetrics/constants.js.map +0 -1
  442. package/dist/rtcMetrics/index.d.ts +0 -54
  443. package/dist/rtcMetrics/index.js +0 -140
  444. package/dist/rtcMetrics/index.js.map +0 -1
  445. package/dist/webinar/collection.d.ts +0 -16
  446. package/dist/webinar/collection.js +0 -43
  447. package/dist/webinar/collection.js.map +0 -1
  448. package/dist/webinar/index.d.ts +0 -5
  449. package/dist/webinar/index.js +0 -68
  450. package/dist/webinar/index.js.map +0 -1
  451. package/src/annotation/annotation.types.ts +0 -50
  452. package/src/annotation/constants.ts +0 -36
  453. package/src/annotation/index.ts +0 -328
  454. package/src/breakouts/README.md +0 -220
  455. package/src/breakouts/breakout.ts +0 -188
  456. package/src/breakouts/collection.ts +0 -19
  457. package/src/breakouts/edit-lock-error.ts +0 -25
  458. package/src/breakouts/events.ts +0 -56
  459. package/src/breakouts/index.ts +0 -925
  460. package/src/breakouts/request.ts +0 -55
  461. package/src/breakouts/utils.ts +0 -57
  462. package/src/common/errors/no-meeting-info.ts +0 -24
  463. package/src/controls-options-manager/types.ts +0 -59
  464. package/src/index.ts +0 -40
  465. package/src/interpretation/README.md +0 -60
  466. package/src/interpretation/collection.ts +0 -19
  467. package/src/interpretation/index.ts +0 -332
  468. package/src/interpretation/siLanguage.ts +0 -18
  469. package/src/meeting/locusMediaRequest.ts +0 -313
  470. package/src/meeting/request.type.ts +0 -13
  471. package/src/meetings/meetings.types.ts +0 -12
  472. package/src/member/types.ts +0 -38
  473. package/src/multistream/mediaRequestManager.ts +0 -440
  474. package/src/multistream/receiveSlot.ts +0 -184
  475. package/src/multistream/receiveSlotManager.ts +0 -166
  476. package/src/multistream/remoteMedia.ts +0 -254
  477. package/src/multistream/remoteMediaGroup.ts +0 -284
  478. package/src/multistream/remoteMediaManager.ts +0 -1145
  479. package/src/multistream/sendSlotManager.ts +0 -170
  480. package/src/reactions/constants.ts +0 -4
  481. package/src/rtcMetrics/constants.ts +0 -3
  482. package/src/rtcMetrics/index.ts +0 -124
  483. package/src/webinar/collection.ts +0 -31
  484. package/src/webinar/index.ts +0 -62
  485. package/test/integration/spec/converged-space-meetings.js +0 -233
  486. package/test/unit/spec/annotation/index.ts +0 -418
  487. package/test/unit/spec/breakouts/breakout.ts +0 -237
  488. package/test/unit/spec/breakouts/collection.ts +0 -15
  489. package/test/unit/spec/breakouts/edit-lock-error.ts +0 -30
  490. package/test/unit/spec/breakouts/events.ts +0 -89
  491. package/test/unit/spec/breakouts/index.ts +0 -1790
  492. package/test/unit/spec/breakouts/request.ts +0 -104
  493. package/test/unit/spec/breakouts/utils.js +0 -72
  494. package/test/unit/spec/interpretation/collection.ts +0 -15
  495. package/test/unit/spec/interpretation/index.ts +0 -589
  496. package/test/unit/spec/interpretation/siLanguage.ts +0 -28
  497. package/test/unit/spec/locus-info/mediaSharesUtils.ts +0 -32
  498. package/test/unit/spec/media/index.ts +0 -290
  499. package/test/unit/spec/meeting/locusMediaRequest.ts +0 -442
  500. package/test/unit/spec/meeting-info/index.js +0 -300
  501. package/test/unit/spec/multistream/mediaRequestManager.ts +0 -1418
  502. package/test/unit/spec/multistream/receiveSlot.ts +0 -163
  503. package/test/unit/spec/multistream/receiveSlotManager.ts +0 -203
  504. package/test/unit/spec/multistream/remoteMedia.ts +0 -255
  505. package/test/unit/spec/multistream/remoteMediaGroup.ts +0 -662
  506. package/test/unit/spec/multistream/remoteMediaManager.ts +0 -1924
  507. package/test/unit/spec/multistream/sendSlotManager.ts +0 -242
  508. package/test/unit/spec/reachability/request.js +0 -68
  509. package/test/unit/spec/roap/request.ts +0 -232
  510. package/test/unit/spec/rtcMetrics/index.ts +0 -93
  511. package/test/unit/spec/webinar/collection.ts +0 -13
  512. package/test/unit/spec/webinar/index.ts +0 -60
  513. package/test/utils/constants.js +0 -9
  514. package/test/utils/integrationTestUtils.js +0 -46
  515. /package/dist/common/errors/{reclaim-host-role-errors.d.ts → reclaim-host-role-error.d.ts} +0 -0
  516. /package/src/common/errors/{reclaim-host-role-errors.ts → reclaim-host-role-error.ts} +0 -0
@@ -0,0 +1,671 @@
1
+ "use strict";
2
+
3
+ var _Array$from = require("@babel/runtime-corejs2/core-js/array/from");
4
+ var _Symbol = require("@babel/runtime-corejs2/core-js/symbol");
5
+ var _Symbol$iterator = require("@babel/runtime-corejs2/core-js/symbol/iterator");
6
+ var _Array$isArray = require("@babel/runtime-corejs2/core-js/array/is-array");
7
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
8
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
9
+ _Object$defineProperty(exports, "__esModule", {
10
+ value: true
11
+ });
12
+ exports.default = void 0;
13
+ var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
14
+ var _now = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/date/now"));
15
+ var _parseInt2 = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/parse-int"));
16
+ var _window = _interopRequireDefault(require("global/window"));
17
+ var _sdpTransform = _interopRequireDefault(require("sdp-transform"));
18
+ var _metrics = _interopRequireDefault(require("../metrics"));
19
+ var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
20
+ var _config = _interopRequireDefault(require("../common/config"));
21
+ var _constants = require("../constants");
22
+ var _constants2 = _interopRequireDefault(require("../metrics/constants"));
23
+ var _config2 = require("../metrics/config");
24
+ var _media = _interopRequireDefault(require("../common/errors/media"));
25
+ var _parameter = _interopRequireDefault(require("../common/errors/parameter"));
26
+ var _webexErrors = require("../common/errors/webex-errors");
27
+ var _browserDetection = _interopRequireDefault(require("../common/browser-detection"));
28
+ var _util = _interopRequireDefault(require("./util"));
29
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && o[_Symbol$iterator] || o["@@iterator"]; if (!it) { if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
30
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
31
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
32
+ var _BrowserDetection = (0, _browserDetection.default)(),
33
+ isBrowser = _BrowserDetection.isBrowser;
34
+
35
+ /**
36
+ * @export
37
+ * @public
38
+ */
39
+ var pc = {};
40
+
41
+ /**
42
+ * munges the bandwidth limit into the sdp
43
+ * @param {String} sdpLines
44
+ * @param {Number} index
45
+ * @returns {String}
46
+ */
47
+ var insertBandwidthLimit = function insertBandwidthLimit(sdpLines, index) {
48
+ // eslint-disable-next-line no-warning-comments
49
+ // TODO convert to sdp parser
50
+ var limit;
51
+ var periodicKeyFrame = '';
52
+ if (sdpLines[index].search(_constants.AUDIO) !== -1) {
53
+ limit = _config.default.meetings.bandwidth.audio;
54
+ } else {
55
+ limit = _config.default.meetings.bandwidth.video;
56
+ periodicKeyFrame = _constants.SDP.PERIODIC_KEYFRAME;
57
+ sdpLines.splice(index + 2, 0, periodicKeyFrame);
58
+ }
59
+ sdpLines.splice(index + 1, 0, "".concat(_constants.SDP.B_LINE, ":").concat(limit));
60
+ return sdpLines;
61
+ };
62
+
63
+ /**
64
+ * needed for calliope max-fs
65
+ * @param {String} sdp
66
+ * @param {String} [level=QUALITY_LEVELS.HIGH] quality level for max-fs
67
+ * @returns {String}
68
+ */
69
+ var setRemoteVideoConstraints = function setRemoteVideoConstraints(sdp) {
70
+ var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _constants.QUALITY_LEVELS.HIGH;
71
+ var maxFs = _constants.REMOTE_VIDEO_CONSTRAINTS.MAX_FS[level];
72
+ if (!maxFs) {
73
+ throw new _parameter.default("setRemoteVideoConstraints: unable to set max framesize, value for level \"".concat(level, "\" is not defined"));
74
+ }
75
+ var modifiedSdp = _util.default.adjustH264Profile(sdp, maxFs);
76
+ return modifiedSdp;
77
+ };
78
+ var setStartBitrateOnRemoteSdp = function setStartBitrateOnRemoteSdp(sdp) {
79
+ if (_config.default.meetings.bandwidth.startBitrate) {
80
+ sdp = sdp.replace(/(\na=fmtp:(\d+).*profile-level-id=.*)/gi, "$1;x-google-start-bitrate=".concat(_config.default.meetings.bandwidth.startBitrate));
81
+ }
82
+ return sdp;
83
+ };
84
+
85
+ /**
86
+ * checks that sdp has h264 codec in it
87
+ * @param {String} sdp
88
+ * @returns {boolean}
89
+ */
90
+ var checkH264Support = function checkH264Support(sdp) {
91
+ // eslint-disable-next-line no-warning-comments
92
+ // TODO convert to sdp parser to read rtp.codec
93
+ var videoPresent = sdp.match(/\nm=video.*/g);
94
+ var h264Present = sdp.match(/\na=rtpmap:\d+\sH264.*/g);
95
+ if (videoPresent) {
96
+ return !!h264Present;
97
+ }
98
+ return true;
99
+ };
100
+
101
+ /**
102
+ * validates the sdp, checks port, candidates, and ice info
103
+ * @param {String} sdp
104
+ * @returns {String}
105
+ */
106
+ var isSdpInvalid = function isSdpInvalid(sdp) {
107
+ var parsedSdp = _sdpTransform.default.parse(sdp);
108
+ var _iterator = _createForOfIteratorHelper(parsedSdp.media),
109
+ _step;
110
+ try {
111
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
112
+ var _mediaLine$candidates;
113
+ var mediaLine = _step.value;
114
+ if (!mediaLine.candidates || ((_mediaLine$candidates = mediaLine.candidates) === null || _mediaLine$candidates === void 0 ? void 0 : _mediaLine$candidates.length) === 0) {
115
+ _loggerProxy.default.logger.error('PeerConnectionManager:index#isSdpInvalid --> iceCandidate: Ice candidate never completed');
116
+ return 'iceCandidate: Ice gathering never completed';
117
+ }
118
+ if (_constants.SDP.BAD_MEDIA_PORTS.includes(mediaLine.port)) {
119
+ _loggerProxy.default.logger.error('PeerConnectionManager:index#isSdpInvalid --> iceCandidate: Found invalid port number for the ice candidate');
120
+ return 'iceCandidate: Found invalid port number for the ice candidate';
121
+ }
122
+ if (!mediaLine.icePwd || !mediaLine.iceUfrag) {
123
+ _loggerProxy.default.logger.error('PeerConnectionManager:index#isSdpInvalid --> iceCandidate: ice ufrag and password not found');
124
+ return 'iceCandidate: ice ufrag and password not found';
125
+ }
126
+ }
127
+ } catch (err) {
128
+ _iterator.e(err);
129
+ } finally {
130
+ _iterator.f();
131
+ }
132
+ return '';
133
+ };
134
+
135
+ /**
136
+ * munges the bandwidth into the sdp
137
+ * @param {String} sdp
138
+ * @returns {String}
139
+ */
140
+ var limitBandwidth = function limitBandwidth(sdp) {
141
+ // TODO convert to sdp parser
142
+ var offerSdp = sdp;
143
+ var sdpLines = offerSdp.split(_constants.SDP.CARRIAGE_RETURN);
144
+ for (var i = 0; i < sdpLines.length; i += 1) {
145
+ if (sdpLines[i].search(_constants.SDP.M_LINE) !== -1) {
146
+ sdpLines = insertBandwidthLimit(sdpLines, i);
147
+ }
148
+ }
149
+ offerSdp = sdpLines.join(_constants.SDP.CARRIAGE_RETURN);
150
+ return offerSdp;
151
+ };
152
+
153
+ /**
154
+ * makes sure the screen pc sdp has content:slides for server
155
+ * @param {RTCPeerConnection} screenPc
156
+ * @returns {RTCPeerConnection}
157
+ */
158
+ pc.setContentSlides = function (screenPc) {
159
+ if (screenPc && screenPc.sdp) {
160
+ screenPc.sdp += "".concat(_constants.SDP.A_CONTENT_SLIDES).concat(_constants.SDP.CARRIAGE_RETURN);
161
+ }
162
+ return screenPc;
163
+ };
164
+
165
+ /**
166
+ * handles ice trickling and establishes ICE connection onto peer connection object
167
+ * @param {Object} peerConnection
168
+ * @param {Object} options
169
+ * @param {String} options.remoteQualityLevel
170
+ * @returns {Promise.RTCPeerConnection}
171
+ */
172
+ pc.iceCandidate = function (peerConnection, _ref) {
173
+ var remoteQualityLevel = _ref.remoteQualityLevel;
174
+ return new _promise.default(function (resolve, reject) {
175
+ var now = (0, _now.default)();
176
+ var doneGatheringIceCandidate = function doneGatheringIceCandidate() {
177
+ // @ts-ignore
178
+ var miliseconds = (0, _parseInt2.default)(Math.abs((0, _now.default)() - now), 4);
179
+ peerConnection.sdp = limitBandwidth(peerConnection.localDescription.sdp);
180
+ peerConnection.sdp = _util.default.convertCLineToIpv4(peerConnection.sdp);
181
+ peerConnection.sdp = setRemoteVideoConstraints(peerConnection.sdp, remoteQualityLevel);
182
+ var invalidSdpPresent = isSdpInvalid(peerConnection.sdp);
183
+ if (invalidSdpPresent) {
184
+ _loggerProxy.default.logger.error('PeerConnectionManager:index#iceCandidate --> SDP not valid after waiting.');
185
+ reject(new _webexErrors.InvalidSdpError(invalidSdpPresent));
186
+ }
187
+ _loggerProxy.default.logger.log("PeerConnectionManager:index#iceCandidate --> Time to gather ice candidate ".concat(miliseconds, " miliseconds"));
188
+ resolve();
189
+ };
190
+
191
+ // If ice has already been gathered
192
+ if (peerConnection.iceGatheringState === _constants.COMPLETE) {
193
+ doneGatheringIceCandidate();
194
+ }
195
+ peerConnection.onIceGatheringStateChange = function () {
196
+ if (peerConnection.iceGatheringState === _constants.COMPLETE) {
197
+ // @ts-ignore
198
+ doneGatheringIceCandidate(peerConnection);
199
+ }
200
+ if (peerConnection.iceGatheringState === _constants.GATHERING) {
201
+ _loggerProxy.default.logger.log('PeerConnectionManager:index#onIceGatheringStateChange --> Ice state changed to gathering');
202
+ }
203
+ };
204
+ peerConnection.onicecandidate = function (evt) {
205
+ if (evt.candidate === null) {
206
+ // @ts-ignore
207
+ doneGatheringIceCandidate(peerConnection);
208
+ } else {
209
+ var _evt$candidate, _evt$candidate2, _evt$candidate3, _evt$candidate4;
210
+ _loggerProxy.default.logger.log("PeerConnectionManager:index#onicecandidate --> Candidate ".concat((_evt$candidate = evt.candidate) === null || _evt$candidate === void 0 ? void 0 : _evt$candidate.type, " ").concat((_evt$candidate2 = evt.candidate) === null || _evt$candidate2 === void 0 ? void 0 : _evt$candidate2.protocol, " ").concat((_evt$candidate3 = evt.candidate) === null || _evt$candidate3 === void 0 ? void 0 : _evt$candidate3.address, ":").concat((_evt$candidate4 = evt.candidate) === null || _evt$candidate4 === void 0 ? void 0 : _evt$candidate4.port));
211
+ }
212
+ };
213
+ peerConnection.onicecandidateerror = function (event) {
214
+ // we can often get ICE candidate errors (for example when failing to communicate with a TURN server)
215
+ // they don't mean that the whole ICE connection will fail, so it's OK to ignore them
216
+ _loggerProxy.default.logger.error('PeerConnectionManager:index#onicecandidateerror --> ignoring ice error:', event);
217
+ };
218
+ });
219
+ };
220
+
221
+ /**
222
+ * swapping tracks
223
+ * @param {Object} peerConnection
224
+ * @param {Object} track
225
+ * @returns {undefined}
226
+ */
227
+ pc.replaceTrack = function (peerConnection, track) {
228
+ try {
229
+ var senders = peerConnection.getSenders();
230
+ if (senders.length > 0) {
231
+ senders.forEach(function (sender) {
232
+ if (sender.track && sender.track.kind === track.kind) {
233
+ sender.replaceTrack(track);
234
+ }
235
+ });
236
+ }
237
+ } catch (err) {
238
+ _loggerProxy.default.logger.error("PeerConnectionManager:index#replaceTrack --> Error replacing track, ".concat(err));
239
+ }
240
+ };
241
+
242
+ /**
243
+ * adding streams to peerConnection
244
+ * @param {Object} peerConnection
245
+ * @param {Object} stream
246
+ * @returns {undefined}
247
+ */
248
+ pc.addStream = function (peerConnection, stream) {
249
+ try {
250
+ if (stream && !isBrowser('edge')) {
251
+ var tracksPresent = peerConnection.getSenders && peerConnection.getSenders().find(function (sender) {
252
+ return sender.track != null;
253
+ });
254
+ if (tracksPresent) {
255
+ stream.getTracks().forEach(function (track) {
256
+ pc.replaceTrack(peerConnection, track);
257
+ });
258
+ return;
259
+ }
260
+ stream.getTracks().forEach(function (track) {
261
+ peerConnection.addTrack(track, stream);
262
+ });
263
+ // // TODO : may come back disable addTracks for chrome they are moving back to addStream
264
+ // // https://bugs.chromium.org/p/chromium/issues/detail?id=764414
265
+ // // https://bugs.chromium.org/p/chromium/issues/detail?id=738918#c7
266
+ // peerConnection.addStream(stream);
267
+ } else if (isBrowser('edge')) {
268
+ peerConnection.addStream(stream);
269
+ }
270
+ } catch (err) {
271
+ _loggerProxy.default.logger.error("PeerConnectionManager:index#addStream --> Error adding stream, error: ".concat(_config2.error));
272
+ }
273
+ };
274
+
275
+ /**
276
+ * setting the remote description
277
+ * @param {Object} peerConnection
278
+ * @param {String} typeStr
279
+ * @param {String} remoteSdp
280
+ * @param {String} meetingId
281
+ * @returns {undefined}
282
+ */
283
+ pc.setRemoteSessionDetails = function (peerConnection, typeStr, remoteSdp, meetingId) {
284
+ _loggerProxy.default.logger.log("PeerConnectionManager:index#setRemoteSessionDetails --> Setting the remote description type: ".concat(typeStr, "State: ").concat(peerConnection.signalingState));
285
+ var sdp = remoteSdp;
286
+
287
+ // making sure that the remoteDescription is only set when there is a answer for offer
288
+ // or there is a offer from the server
289
+
290
+ if (!sdp) {
291
+ _metrics.default.postEvent({
292
+ event: _config2.eventType.REMOTE_SDP_RECEIVED,
293
+ meetingId: meetingId,
294
+ data: {
295
+ canProceed: false,
296
+ errors: [_metrics.default.generateErrorPayload(2001, true, _config2.error.name.MEDIA_ENGINE, 'missing remoteSdp')]
297
+ }
298
+ });
299
+ }
300
+ if (peerConnection.signalingState === _constants.SDP.HAVE_LOCAL_OFFER || peerConnection.signalingState === _constants.SDP.STABLE && typeStr === _constants.SDP.OFFER) {
301
+ sdp = setStartBitrateOnRemoteSdp(sdp);
302
+ if (!peerConnection.enableExtmap) {
303
+ sdp = sdp.replace(/\na=extmap.*/g, '');
304
+ }
305
+
306
+ // remove any xtls candidates
307
+ sdp = sdp.replace(/^a=candidate:.*xTLS.*\r\n/gim, '');
308
+ return peerConnection.setRemoteDescription(new _window.default.RTCSessionDescription({
309
+ type: typeStr,
310
+ sdp: sdp
311
+ })).then(function () {
312
+ if (peerConnection.signalingState === _constants.SDP.STABLE) {
313
+ _metrics.default.postEvent({
314
+ event: _config2.eventType.REMOTE_SDP_RECEIVED,
315
+ meetingId: meetingId
316
+ });
317
+ }
318
+ })
319
+ // eslint-disable-next-line @typescript-eslint/no-shadow
320
+ .catch(function (error) {
321
+ _loggerProxy.default.logger.error("Peer-connection-manager:index#setRemoteDescription --> ".concat(error, " missing remotesdp"));
322
+ var metricName = _constants2.default.PEERCONNECTION_FAILURE;
323
+ var data = {
324
+ correlation_id: meetingId,
325
+ reason: error.message,
326
+ stack: error.stack
327
+ };
328
+ var metadata = {
329
+ type: error.name
330
+ };
331
+ _metrics.default.sendBehavioralMetric(metricName, data, metadata);
332
+ return _metrics.default.postEvent({
333
+ event: _config2.eventType.REMOTE_SDP_RECEIVED,
334
+ meetingId: meetingId,
335
+ data: {
336
+ canProceed: false,
337
+ errors: [_metrics.default.generateErrorPayload(2001, true, error.name.MEDIA_ENGINE, 'missing remoteSdp')]
338
+ }
339
+ });
340
+ });
341
+ }
342
+ return _promise.default.reject(new _media.default('PeerConnection in wrong state'));
343
+ };
344
+
345
+ /**
346
+ * Create offer with a valid parameter
347
+ * @param {Object} peerConnection
348
+ * @param {Object} meetingProperties
349
+ * @param {string} meetingProperties.meetingId
350
+ * @param {string} meetingProperties.remoteQualityLevel LOW|MEDIUM|HIGH
351
+ * @param {string} meetingProperties.enableRtx
352
+ * @param {string} meetingProperties.enableExtmap
353
+ * @returns {RTCPeerConnection}
354
+ */
355
+ pc.createOffer = function (peerConnection, _ref2) {
356
+ var meetingId = _ref2.meetingId,
357
+ remoteQualityLevel = _ref2.remoteQualityLevel,
358
+ enableRtx = _ref2.enableRtx,
359
+ enableExtmap = _ref2.enableExtmap;
360
+ _loggerProxy.default.logger.log('PeerConnectionManager:index#createOffer --> creating a new offer');
361
+
362
+ // saving the extMap State to use in setRemoteDescription
363
+
364
+ peerConnection.enableExtmap = enableExtmap;
365
+ return peerConnection.createOffer().then(function (description) {
366
+ // bug https://bugs.chromium.org/p/chromium/issues/detail?id=1020642
367
+ // chrome currently generates RTX line irrespective of whether the server side supports it
368
+ // we are removing apt as well because its associated with rtx line
369
+
370
+ if (!enableRtx) {
371
+ description.sdp = description.sdp.replace(/\r\na=rtpmap:\d+ rtx\/\d+/g, '');
372
+ description.sdp = description.sdp.replace(/\r\na=fmtp:\d+ apt=\d+/g, '');
373
+ }
374
+ return peerConnection.setLocalDescription(description);
375
+ }).then(function () {
376
+ return pc.iceCandidate(peerConnection, {
377
+ remoteQualityLevel: remoteQualityLevel
378
+ });
379
+ }).then(function () {
380
+ if (!checkH264Support(peerConnection.sdp)) {
381
+ throw new _media.default('openH264 is downloading please Wait. Upload logs if not working on second try');
382
+ }
383
+ if (!enableExtmap) {
384
+ peerConnection.sdp = peerConnection.sdp.replace(/\na=extmap.*/g, '');
385
+ }
386
+ pc.setContentSlides(peerConnection);
387
+ _metrics.default.postEvent({
388
+ event: _config2.eventType.LOCAL_SDP_GENERATED,
389
+ meetingId: meetingId
390
+ });
391
+ return peerConnection;
392
+ })
393
+ // eslint-disable-next-line @typescript-eslint/no-shadow
394
+ .catch(function (error) {
395
+ _loggerProxy.default.logger.error("Peer-connection-manager:index#createOffer --> ".concat(error));
396
+ if (error instanceof _webexErrors.InvalidSdpError) {
397
+ _metrics.default.sendBehavioralMetric(_constants2.default.INVALID_ICE_CANDIDATE, {
398
+ correlation_id: meetingId,
399
+ code: error.code,
400
+ reason: error.message
401
+ });
402
+ } else {
403
+ var metricName = _constants2.default.PEERCONNECTION_FAILURE;
404
+ var data = {
405
+ correlation_id: meetingId,
406
+ reason: error.message,
407
+ stack: error.stack
408
+ };
409
+ var metadata = {
410
+ type: error.name
411
+ };
412
+ _metrics.default.sendBehavioralMetric(metricName, data, metadata);
413
+ }
414
+ _metrics.default.postEvent({
415
+ event: _config2.eventType.LOCAL_SDP_GENERATED,
416
+ meetingId: meetingId,
417
+ data: {
418
+ canProceed: false,
419
+ errors: [
420
+ // @ts-ignore
421
+ _metrics.default.generateErrorPayload(2001, true, error.name.MEDIA_ENGINE)]
422
+ }
423
+ });
424
+ pc.close(peerConnection);
425
+ throw error;
426
+ });
427
+ };
428
+
429
+ /**
430
+ * rollBack local description in peerconnection
431
+ * @param {Object} peerConnection
432
+ * @returns {Promise.RTCPeerConnection}
433
+ */
434
+ pc.rollBackLocalDescription = function (peerConnection) {
435
+ return peerConnection
436
+ // @ts-ignore
437
+ .setLocalDescription(new RTCSessionDescription({
438
+ type: _constants.SDP.ROLLBACK
439
+ })).then(function () {
440
+ return peerConnection;
441
+ }).catch(function (err) {
442
+ _loggerProxy.default.logger.error("Peer-connection-manager:index#setLocalDescription --> ".concat(err, " "));
443
+
444
+ // @ts-ignore
445
+ return _promise.default.error(err);
446
+ });
447
+ };
448
+
449
+ /**
450
+ * @param {Object} params {
451
+ * @param {Boolean} params.offerToReceiveAudio
452
+ * @param {Boolean} params.offerToReceiveVideo
453
+ * @param {string} params.offerSdp
454
+ * @param {MediaStream} params.stream
455
+ * @param {Object} meetingProperties
456
+ * @param {string} meetingProperties.meetingId
457
+ * @param {string} meetingProperties.remoteQualityLevel LOW|MEDIUM|HIGH
458
+ * @returns {Promise.<Array>} [MediaSDP, ScreenSDP]
459
+ */
460
+ pc.updatePeerConnection = function (params, _ref3) {
461
+ var meetingId = _ref3.meetingId,
462
+ remoteQualityLevel = _ref3.remoteQualityLevel;
463
+ _loggerProxy.default.logger.log("PeerConnectionManager:index#updatePeerConnection --> updating the peerConnection with params: ".concat(params));
464
+ var peerConnection = params.peerConnection,
465
+ offerSdp = params.offerSdp;
466
+ return pc.createAnswer({
467
+ peerConnection: peerConnection,
468
+ offerSdp: offerSdp[0]
469
+ }, {
470
+ meetingId: meetingId,
471
+ remoteQualityLevel: remoteQualityLevel
472
+ }).then(function (peerconnection) {
473
+ // The content slides should also be set when we are sending inactive
474
+ pc.setContentSlides(peerconnection);
475
+ return _promise.default.resolve([peerconnection.sdp]);
476
+ });
477
+ };
478
+
479
+ /**
480
+ * @param {Object} params
481
+ * @param {Object} params.peerConnection
482
+ * @param {Object} params.sdpConstraints
483
+ * @param {Object} meetingProperties
484
+ * @param {string} meetingProperties.meetingId
485
+ * @param {string} meetingProperties.remoteQualityLevel LOW|MEDIUM|HIGH
486
+ * @returns {RTCPeerConnection} peerConnection
487
+ */
488
+ pc.createAnswer = function (params, _ref4) {
489
+ var meetingId = _ref4.meetingId,
490
+ remoteQualityLevel = _ref4.remoteQualityLevel;
491
+ var peerConnection = params.peerConnection;
492
+
493
+ // TODO: Some times to many mercury event comes at the same time
494
+ // Need to maintain state of peerconnection
495
+ if (peerConnection.signalingState === _constants.SDP.HAVE_REMOTE_OFFER) {
496
+ return _promise.default.resolve(peerConnection);
497
+ }
498
+ return pc.setRemoteSessionDetails(peerConnection, _constants.OFFER, params.offerSdp, meetingId).then(function () {
499
+ return peerConnection.createAnswer(params.sdpConstraints);
500
+ }).then(function (answer) {
501
+ return peerConnection.setLocalDescription(answer);
502
+ }).then(function () {
503
+ return pc.iceCandidate(peerConnection, {
504
+ remoteQualityLevel: remoteQualityLevel
505
+ });
506
+ }).then(function () {
507
+ peerConnection.sdp = limitBandwidth(peerConnection.localDescription.sdp);
508
+ peerConnection.sdp = _util.default.convertCLineToIpv4(peerConnection.sdp);
509
+ peerConnection.sdp = setRemoteVideoConstraints(peerConnection.sdp, remoteQualityLevel);
510
+ if (!checkH264Support(peerConnection.sdp)) {
511
+ throw new _media.default('openH264 is downloading please Wait. Upload logs if not working on second try');
512
+ }
513
+ return peerConnection;
514
+ })
515
+ // eslint-disable-next-line @typescript-eslint/no-shadow
516
+ .catch(function (error) {
517
+ if (error instanceof _webexErrors.InvalidSdpError) {
518
+ _metrics.default.sendBehavioralMetric(_constants2.default.INVALID_ICE_CANDIDATE, {
519
+ correlation_id: meetingId
520
+ });
521
+ } else {
522
+ var metricName = _constants2.default.PEERCONNECTION_FAILURE;
523
+ var data = {
524
+ correlation_id: meetingId,
525
+ reason: error.message,
526
+ stack: error.stack
527
+ };
528
+ var metadata = {
529
+ type: error.name
530
+ };
531
+ _metrics.default.sendBehavioralMetric(metricName, data, metadata);
532
+ }
533
+ _loggerProxy.default.logger.error("PeerConnectionManager:index#setRemoteSessionDetails --> Error creating remote session, error: ".concat(error));
534
+ });
535
+ };
536
+
537
+ /**
538
+ * shut down the peer connection
539
+ * @param {Object} peerConnection
540
+ * @returns {undefined}
541
+ */
542
+ pc.close = function (peerConnection) {
543
+ // peerConnection.close() fails on firefox on network changes and gives a Dom exception
544
+ // To avoid this we have added a try catch block.
545
+ // Please refer to https://bugzilla.mozilla.org/show_bug.cgi?id=1274407 for more information
546
+ _loggerProxy.default.logger.log('PeerConnectionManager:index#close --> pc: close() -> attempting to close the peer connection');
547
+ if (peerConnection && peerConnection.connectionState === _constants.PEER_CONNECTION_STATE.CLOSED) {
548
+ _loggerProxy.default.logger.log('PeerConnectionManager:index#close --> pc: close() -> connection already closed');
549
+ return _promise.default.resolve();
550
+ }
551
+ _loggerProxy.default.logger.log('PeerConnectionManager:index#close --> pc: close() -> closing the mediaPeerConnection');
552
+ return _promise.default.resolve().then(function () {
553
+ if (peerConnection && peerConnection.close) {
554
+ peerConnection.close();
555
+ }
556
+ });
557
+ };
558
+ pc.setPeerConnectionEvents = function (meeting) {
559
+ // In case ICE fail
560
+ var peerConnection = meeting.mediaProperties.peerConnection;
561
+ var connectionFailed = function connectionFailed() {
562
+ if (meeting.reconnectionManager.iceState.resolve) {
563
+ // DISCONNECTED state triggers first then it goes to FAILED STATE
564
+ // sometimes the failed state can happen before 10 seconds (Which is the timer for the reconnect for ice disconnect)
565
+ meeting.reconnectionManager.iceState.resolve();
566
+ }
567
+ meeting.reconnect({
568
+ networkDisconnect: true
569
+ });
570
+ _metrics.default.postEvent({
571
+ event: _config2.eventType.ICE_END,
572
+ meeting: meeting,
573
+ data: {
574
+ canProceed: false,
575
+ errors: [
576
+ // @ts-ignore
577
+ _metrics.default.generateErrorPayload(2004, false, _config2.error.name.MEDIA_ENGINE)]
578
+ }
579
+ });
580
+ meeting.uploadLogs({
581
+ file: 'peer-connection-manager/index',
582
+ function: 'connectionFailed'
583
+ });
584
+ _metrics.default.sendBehavioralMetric(_constants2.default.CONNECTION_FAILURE, {
585
+ correlation_id: meeting.correlationId,
586
+ locus_id: meeting.locusId
587
+ });
588
+ };
589
+ peerConnection.oniceconnectionstatechange = function () {
590
+ _loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> ICE STATE CHANGE.');
591
+ switch (peerConnection.iceConnectionState) {
592
+ case _constants.ICE_STATE.CHECKING:
593
+ _loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> ICE STATE CHECKING.');
594
+ _metrics.default.postEvent({
595
+ event: _config2.eventType.ICE_START,
596
+ meeting: meeting
597
+ });
598
+ break;
599
+ case _constants.ICE_STATE.COMPLETED:
600
+ _loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> ICE STATE COMPLETED.');
601
+ break;
602
+ case _constants.ICE_STATE.CONNECTED:
603
+ // Ice connection state goes to connected when both client and server sends STUN packets and
604
+ // Established connected between them. Firefox does not trigger COMPLETED and only trigger CONNECTED
605
+ _metrics.default.postEvent({
606
+ event: _config2.eventType.ICE_END,
607
+ meeting: meeting
608
+ });
609
+ _metrics.default.sendBehavioralMetric(_constants2.default.CONNECTION_SUCCESS, {
610
+ correlation_id: meeting.correlationId,
611
+ locus_id: meeting.locusId
612
+ });
613
+ meeting.setNetworkStatus(_constants.NETWORK_STATUS.CONNECTED);
614
+ meeting.reconnectionManager.iceReconnected();
615
+ _loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> ICE STATE CONNECTED.');
616
+ break;
617
+ case _constants.ICE_STATE.CLOSED:
618
+ _loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> ICE STATE CLOSED.');
619
+ break;
620
+ case _constants.ICE_STATE.DISCONNECTED:
621
+ meeting.setNetworkStatus(_constants.NETWORK_STATUS.DISCONNECTED);
622
+ meeting.reconnectionManager.waitForIceReconnect().catch(function () {
623
+ _loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> ICE STATE DISCONNECTED. Automatic Reconnection Timed Out.');
624
+ connectionFailed();
625
+ });
626
+ _loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> ICE STATE DISCONNECTED.');
627
+ break;
628
+ case _constants.ICE_STATE.FAILED:
629
+ _loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> ICE STATE FAILED.');
630
+ // notify of ice failure
631
+ // Ice failure is the only indicator currently for identifying the actual connection drop
632
+ // Firefox takes sometime 10-15 seconds to go to failed state
633
+ connectionFailed();
634
+ break;
635
+ default:
636
+ break;
637
+ }
638
+ };
639
+ peerConnection.onconnectionstatechange = function () {
640
+ _loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> CONNECTION STATE CHANGE.');
641
+ switch (peerConnection.connectionState) {
642
+ case _constants.CONNECTION_STATE.NEW:
643
+ _loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> CONNECTION STATE NEW.');
644
+ break;
645
+ case _constants.CONNECTION_STATE.CONNECTING:
646
+ _loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> CONNECTION STATE CONNECTING.');
647
+ break;
648
+ case _constants.CONNECTION_STATE.CONNECTED:
649
+ _loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> CONNECTION STATE CONNECTED.');
650
+ break;
651
+ case _constants.CONNECTION_STATE.CLOSED:
652
+ _loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> CONNECTION STATE CLOSED.');
653
+ break;
654
+ case _constants.CONNECTION_STATE.DISCONNECTED:
655
+ _loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> CONNECTION STATE DISCONNECTED.');
656
+ break;
657
+ case _constants.CONNECTION_STATE.FAILED:
658
+ _loggerProxy.default.logger.info('PeerConnectionManager:index#setPeerConnectionEvents --> CONNECTION STATE FAILED.');
659
+ // Special case happens only on chrome where there is no ICE FAILED event
660
+ // only CONNECTION FAILED event gets triggered
661
+
662
+ connectionFailed();
663
+ break;
664
+ default:
665
+ break;
666
+ }
667
+ };
668
+ };
669
+ var _default = pc;
670
+ exports.default = _default;
671
+ //# sourceMappingURL=index.js.map