@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,119 +0,0 @@
1
- import {parse} from '@webex/ts-sdp';
2
-
3
- interface IPeerConnectionUtils {
4
- convertCLineToIpv4: (sdp: string) => string;
5
- adjustH264Profile: (sdp: string, maxFsValue: number) => string;
6
- }
7
-
8
- const PeerConnectionUtils = {} as IPeerConnectionUtils;
9
-
10
- // max-fs values for all H264 profile levels
11
- const maxFsForProfileLevel = {
12
- 10: 99,
13
- 11: 396,
14
- 12: 396,
15
- 13: 396,
16
- 20: 396,
17
- 21: 792,
18
- 22: 1620,
19
- 30: 1620,
20
- 31: 3600,
21
- 32: 5120,
22
- 40: 8192,
23
- 41: 8192,
24
- 42: 8704,
25
- 50: 22080,
26
- 51: 36864,
27
- 52: 36864,
28
- 60: 139264,
29
- 61: 139264,
30
- 62: 139264,
31
- };
32
-
33
- const framesPerSecond = 30;
34
-
35
- /**
36
- * Convert C line to IPv4
37
- * @param {string} sdp
38
- * @returns {string}
39
- */
40
- PeerConnectionUtils.convertCLineToIpv4 = (sdp: string) => {
41
- let replaceSdp = sdp;
42
-
43
- // TODO: remove this once linus supports Ipv6 c line.currently linus rejects SDP with c line having ipv6 candidates we are
44
- // mocking ipv6 to ipv4 candidates
45
- // https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-299232
46
- replaceSdp = replaceSdp.replace(/c=IN IP6 .*/gi, 'c=IN IP4 0.0.0.0');
47
-
48
- return replaceSdp;
49
- };
50
-
51
- /**
52
- * estimate profile levels for max-fs & max-mbps values
53
- * @param {string} sdp
54
- * @param {number} maxFsValue
55
- * @returns {string}
56
- */
57
- PeerConnectionUtils.adjustH264Profile = (sdp: string, maxFsValue: number) => {
58
- // converting with ts-sdp parser, no munging
59
- const parsedSdp = parse(sdp);
60
-
61
- parsedSdp.avMedia.forEach((media) => {
62
- if (media.type === 'video') {
63
- media.codecs.forEach((codec) => {
64
- if (codec.name?.toUpperCase() === 'H264') {
65
- // there should really be just 1 fmtp line, but just in case, we process all of them
66
- codec.fmtParams = codec.fmtParams.map((fmtp) => {
67
- const parsedRegex = fmtp.match(/(.*)profile-level-id=(\w{4})(\w{2})(.*)/);
68
-
69
- if (parsedRegex && parsedRegex.length === 5) {
70
- const stuffBeforeProfileLevelId = parsedRegex[1];
71
- const profile = parsedRegex[2].toLowerCase();
72
- const levelId = parseInt(parsedRegex[3], 16);
73
- const stuffAfterProfileLevelId = parsedRegex[4];
74
-
75
- if (!maxFsForProfileLevel[levelId]) {
76
- throw new Error(
77
- `found unsupported h264 profile level id value in the SDP: ${levelId}`
78
- );
79
- }
80
-
81
- if (maxFsForProfileLevel[levelId] === maxFsValue) {
82
- // profile level already matches our desired max-fs value, so we don't need to do anything
83
- return fmtp;
84
- }
85
- if (maxFsForProfileLevel[levelId] < maxFsValue) {
86
- // profile level has too low max-fs, so we need to override it (this is upgrading)
87
- return `${fmtp};max-fs=${maxFsValue};max-mbps=${maxFsValue * framesPerSecond}`;
88
- }
89
-
90
- // profile level has too high max-fs value, so we need to use a lower level
91
-
92
- // find highest level that has the matching maxFs
93
- const newLevelId = Object.keys(maxFsForProfileLevel)
94
- .reverse()
95
- .find((key) => maxFsForProfileLevel[key] === maxFsValue);
96
-
97
- if (newLevelId) {
98
- // Object.keys returns keys as strings, so we need to parse it to an int again and then convert to hex
99
- const newLevelIdHex = parseInt(newLevelId, 10).toString(16);
100
-
101
- return `${stuffBeforeProfileLevelId}profile-level-id=${profile}${newLevelIdHex};max-mbps=${
102
- maxFsValue * framesPerSecond
103
- }${stuffAfterProfileLevelId}`;
104
- }
105
-
106
- throw new Error(`unsupported maxFsValue: ${maxFsValue}`);
107
- }
108
-
109
- return fmtp;
110
- });
111
- }
112
- });
113
- }
114
- });
115
-
116
- return parsedSdp.toString();
117
- };
118
-
119
- export default PeerConnectionUtils;
@@ -1,62 +0,0 @@
1
- import RoapStateMachine from './state';
2
-
3
- /* eslint-disable */
4
- const RoapCollection = {
5
- sessions: {},
6
-
7
- getSession(id) {
8
- if (!this.sessions[id]) {
9
- this.sessions[id] = {
10
- activeSequences: 0,
11
- };
12
- }
13
- return this.sessions[id];
14
- },
15
-
16
- deleteSession(id) {
17
- if (this.getSession(id)) {
18
- delete this.sessions[id];
19
- }
20
- },
21
-
22
- getSessionSequence(id, seqId) {
23
- const session = this.getSession(id);
24
- if (!session[seqId]) {
25
- session[seqId] = {
26
- state: RoapStateMachine.createState(),
27
- finished: false,
28
- };
29
- session.activeSequences += 1;
30
- }
31
- return session[seqId];
32
- },
33
-
34
- deleteSessionSequence(id, seqId) {
35
- const seq = this.getSessionSequence(id, seqId);
36
- if (seq) {
37
- if (!seq.finished) {
38
- // @ts-ignore
39
- session.activeSequences -= 1;
40
- }
41
- delete this.sessions[id][seqId];
42
- }
43
- },
44
-
45
- isBusy(id) {
46
- const session = this.getSession(id);
47
- if (!session) return false;
48
-
49
- return session.activeSequences > 0;
50
- },
51
-
52
- onSessionSequenceFinish(id, seqId) {
53
- const session = this.getSession(id);
54
- const seq = session[seqId];
55
- if (seq && !seq.finished) {
56
- seq.finished = true;
57
- session.activeSequences -= 1;
58
- }
59
- },
60
- };
61
-
62
- export default RoapCollection;
@@ -1,294 +0,0 @@
1
- /* no-param-reassign */
2
- // @ts-ignore
3
- import {StatelessWebexPlugin} from '@webex/webex-core';
4
-
5
- import LoggerProxy from '../common/logs/logger-proxy';
6
- import {ROAP, _OFFER_} from '../constants';
7
- import Metrics from '../metrics';
8
- import BEHAVIORAL_METRICS from '../metrics/constants';
9
-
10
- import RoapUtil from './util';
11
- import RoapCollection from './collection';
12
- import Meeting from '../meeting';
13
-
14
- const checkForAndHandleErrors = (action, meeting, correlationId) => {
15
- if (action && action.type) {
16
- if (action.msg && action.msg.messageType && action.msg.errorType) {
17
- if (RoapUtil.findError(action.msg.messageType, action.msg.errorType, action.type)) {
18
- RoapUtil.handleError(meeting.mediaProperties.peerConnection)
19
- .then((res) => {
20
- if (res) {
21
- RoapCollection.deleteSessionSequence(correlationId, action.msg.seq);
22
- }
23
- })
24
- .catch((err) => {
25
- LoggerProxy.logger.warn(
26
- `Roap:handler#checkForAndHandleErrors --> Cannot reset the peer connection with error: ${err}`
27
- );
28
- });
29
-
30
- return true;
31
- }
32
- }
33
- if (!RoapUtil.ensureMeeting(meeting, action.type)) {
34
- return true;
35
- }
36
- }
37
-
38
- return false;
39
- };
40
-
41
- const compareWithLastRoapMessage = (lastRoapMessage, currentRoapMessage) =>
42
- lastRoapMessage?.msg?.seq === currentRoapMessage.msg.seq &&
43
- lastRoapMessage?.msg?.messageType === currentRoapMessage.msg.messageType;
44
-
45
- const handleSessionStep = ({roap, session, locusUrl, correlationId}) => {
46
- const {seq: sequenceId, messageType} = roap.msg;
47
-
48
- if (session.OFFER && messageType === _OFFER_) {
49
- session.GLARE_OFFER = roap.msg;
50
- session.GLARE_OFFER.remote = !!roap.remote;
51
- const metricName = BEHAVIORAL_METRICS.ROAP_GLARE_CONDITION;
52
- const data = {
53
- correlation_id: correlationId,
54
- locus_id: locusUrl.split('/').pop(),
55
- sequence: sequenceId,
56
- };
57
-
58
- Metrics.sendBehavioralMetric(metricName, data);
59
-
60
- LoggerProxy.logger.warn(
61
- `Roap:handler#handleSessionStep --> Glare condition occurred with new mercury event, sequenceId: ${sequenceId}`
62
- );
63
- } else {
64
- LoggerProxy.logger.info(
65
- `Roap:handler#handleSessionStep --> Save OFFER/ANSWER seq:${sequenceId} new mercury event ${messageType}local state: ${JSON.stringify(
66
- session.state.state,
67
- null,
68
- 2
69
- )}`
70
- );
71
- session[messageType] = roap.msg;
72
- session[messageType].remote = !!roap.remote;
73
- }
74
- };
75
-
76
- /**
77
- * @class RoapHandler
78
- */
79
- export default class RoapHandler extends StatelessWebexPlugin {
80
- attrs: any;
81
- lastRoapMessage: any;
82
- options: any;
83
- roapAnswer: any;
84
- roapFinished: any;
85
- roapOk: any;
86
-
87
- constructor(attrs, options, roapOk, roapAnswer, roapFinished) {
88
- super({}, options);
89
- this.attrs = attrs;
90
- this.options = options;
91
- this.roapOk = roapOk;
92
- this.roapFinished = roapFinished;
93
- this.roapAnswer = roapAnswer;
94
- this.lastRoapMessage = null;
95
- }
96
-
97
- /**
98
- *
99
- * @param {Object} session
100
- * @param {Meeting} meeting
101
- * @param {Object} action
102
- * @returns {null}
103
- */
104
- perform(session: any, meeting: any, action: any) {
105
- switch (session.state.state) {
106
- case ROAP.ROAP_STATE.INIT:
107
- this.roapFinished(meeting.correlationId, action.msg.seq);
108
- break;
109
-
110
- // TODO: (important )handle roap state for sending offers as well
111
- // case ROAP.ROAP_STATE.WAIT_RX_OFFER:
112
- // case ROAP.ROAP_STATE.WAIT_RX_ANSWER:
113
- // case ROAP.ROAP_STATE.WAIT_RX_OK:
114
- case ROAP.ROAP_STATE.WAIT_TX_ANSWER:
115
- // eslint-disable-next-line no-warning-comments
116
- // TODO: sometime the you get an answer while you are creating an offer so SKIP
117
- // Server will send the mercury event comes back
118
- if (RoapUtil.shouldHandleMedia(meeting)) {
119
- RoapUtil.updatePeerConnection(meeting, session)
120
- .then((answerSdps) => {
121
- this.roapAnswer({
122
- mediaId: meeting.mediaId,
123
- sdps: answerSdps,
124
- seq: session.OFFER.seq,
125
- correlationId: meeting.correlationId,
126
- audioMuted: meeting.isAudioMuted(),
127
- videoMuted: meeting.isVideoMuted(),
128
- });
129
- })
130
- .catch((error) => {
131
- const metricName = BEHAVIORAL_METRICS.ROAP_ANSWER_FAILURE;
132
- const data = {
133
- correlation_id: meeting.correlationId,
134
- locus_id: meeting.locusUrl.split('/').pop(),
135
- reason: error.message,
136
- stack: error.stack,
137
- };
138
- const metadata = {
139
- type: error.name,
140
- };
141
-
142
- Metrics.sendBehavioralMetric(metricName, data, metadata);
143
- LoggerProxy.logger.error(
144
- `Roap:handler#perform --> Error occured during wait receive answer, continuing, ${error}`
145
- );
146
- });
147
- }
148
- break;
149
- case ROAP.ROAP_STATE.WAIT_TX_OK:
150
- if (!RoapUtil.shouldHandleMedia(meeting)) {
151
- RoapUtil.setRemoteDescription(meeting, session).then((res) => {
152
- this.roapOk(res);
153
- });
154
- }
155
- break;
156
- // case ROAP.ROAP_STATE.IDLE_LOCAL_OFFER:
157
- case ROAP.ROAP_STATE.ERROR:
158
- LoggerProxy.logger.error(
159
- `Roap:handler#perform --> Roap State ERROR for session: ${session}`
160
- );
161
- break;
162
- case ROAP.ROAP_STATE.GLARE:
163
- session.GLARE_OFFER.tieBreaker = session.GLARE_OFFER.tieBreaker || 0;
164
- session.OFFER.tieBreaker = session.OFFER.tieBreaker || 0;
165
- LoggerProxy.logger.warn(
166
- 'Roap:handler#perform --> Roap State resolved the GLARE condition.'
167
- );
168
- if (session.GLARE_OFFER.tieBreaker < session.OFFER.tieBreaker) {
169
- // 2
170
- LoggerProxy.logger.log(
171
- 'Roap:handler#perform --> Roap State local offer won after GLARE.'
172
- );
173
- } else {
174
- LoggerProxy.logger.log(
175
- 'Roap:handler#perform --> Roap State remote offer won after GLARE.'
176
- );
177
- }
178
- session.state.step(ROAP.ROAP_SIGNAL.GLARE_RESOLVED, meeting, action);
179
- // @ts-ignore
180
- this.perform(session, meeting);
181
- break;
182
- default:
183
- break;
184
- }
185
- }
186
-
187
- /**
188
- *
189
- * @param {String} signal
190
- * @param {Object} session
191
- * @param {Object} action
192
- * @param {Meeting} meeting
193
- * @param {String} prefix
194
- * @returns {null}
195
- */
196
- execute(signal: string, session: any, action: any, meeting: Meeting, prefix: string) {
197
- if (session && session.state) {
198
- handleSessionStep({
199
- roap: action,
200
- locusUrl: meeting.locusUrl,
201
- correlationId: meeting.correlationId,
202
- session,
203
- });
204
- signal = ROAP.ROAP_SIGNAL[`${prefix}${action.msg.messageType}`];
205
- session.state.step(signal, meeting, action);
206
- this.perform(session, meeting, action);
207
- }
208
- }
209
-
210
- /**
211
- *
212
- * @param {Object} session
213
- * @param {Object} action
214
- * @param {Meeting} meeting
215
- * @param {String} correlationId
216
- * @returns {Boolean}
217
- */
218
- handleAction(session: object, action: any, meeting: Meeting, correlationId: string) {
219
- let signal;
220
-
221
- switch (action.type) {
222
- case ROAP.RECEIVE_ROAP_MSG:
223
- LoggerProxy.logger.log(
224
- `Roap:handler#handleAction --> RECEIVE_ROAP_MSG event captured, reciving a roap message : ${JSON.stringify(
225
- action
226
- )}`
227
- );
228
- if (compareWithLastRoapMessage(this.lastRoapMessage, action)) {
229
- LoggerProxy.logger.warn(
230
- `Roap:handler#handleAction --> duplicate roap offer from server: ${action.msg.seq}`
231
- );
232
- } else {
233
- this.lastRoapMessage = action;
234
- action.remote = true;
235
- this.execute(signal, session, action, meeting, ROAP.RX_);
236
- }
237
- break;
238
- case ROAP.SEND_ROAP_MSG:
239
- LoggerProxy.logger.log(
240
- `Roap:handler#handleAction --> SEND_ROAP_MSG event captured, sending roap message ${JSON.stringify(
241
- action
242
- )}`
243
- );
244
-
245
- action.local = true;
246
- this.execute(signal, session, action, meeting, ROAP.TX_);
247
- break;
248
- case ROAP.SEND_ROAP_MSG_SUCCESS:
249
- // NOTE: When server send back an answer via mercury the
250
- // remote SDP is already saved sent and ok message is sent back
251
- // We dont have to indicate the roapHandler about the RX_ANSWER via SEND_ROAP_MSG_SUCCESS
252
- break;
253
- case ROAP.RECEIVE_CALL_LEAVE:
254
- RoapCollection.deleteSession(correlationId);
255
- LoggerProxy.logger.log(
256
- `Roap:handler#handleAction --> RECEIVE_CALL_LEAVE event captured, cleaning up the RoapHandler for correlationId: ${correlationId}`
257
- );
258
- break;
259
- case ROAP.RESET_ROAP_STATE:
260
- RoapCollection.deleteSessionSequence(correlationId, action.msg.seq);
261
- LoggerProxy.logger.log(
262
- `Roap:handler#handleAction --> RESET_ROAP_STATE event captured, resetting the RoapHandler state based on sequenceId: ${action.msg.seq}`
263
- );
264
- break;
265
- default:
266
- return true;
267
- }
268
-
269
- return true;
270
- }
271
-
272
- /**
273
- *
274
- * @param {Object} action
275
- * @returns {Boolean}
276
- */
277
- submit(action: any) {
278
- const {correlationId} = action;
279
- let {seq} = action;
280
-
281
- if (!seq && action.msg) {
282
- seq = action.msg.seq;
283
- }
284
- const session = RoapCollection.getSessionSequence(correlationId, seq);
285
- // @ts-ignore
286
- const meeting = this.webex.meetings.meetingCollection.getByKey('correlationId', correlationId);
287
-
288
- if (checkForAndHandleErrors(action, meeting, correlationId)) {
289
- return true;
290
- }
291
-
292
- return this.handleAction(session, action, meeting, correlationId);
293
- }
294
- }
package/src/roap/state.ts DELETED
@@ -1,156 +0,0 @@
1
- import StateMachine from 'javascript-state-machine';
2
-
3
- import LoggerProxy from '../common/logs/logger-proxy';
4
- import {ROAP, _OFFER_, _ANSWER_, _REQUESTED_} from '../constants';
5
- import Meeting from '../meeting';
6
-
7
- const shouldStep = (roap, meeting) => {
8
- const {messageType} = roap.msg;
9
-
10
- if (meeting) {
11
- if (messageType === _OFFER_ && roap.remote && meeting.shareStatus === _REQUESTED_) {
12
- // The peer-connection is waiting for answer but got an offer Reset. Try to
13
- // send the offer later after you accept the answer
14
- return false;
15
- }
16
- // Assuming the mercury event has come first before the response for the event
17
- // we have to wait for the response and trigger the ROAP request later on
18
- if (!meeting.mediaProperties.peerConnection && messageType === _ANSWER_) {
19
- return false;
20
- }
21
- }
22
- LoggerProxy.logger.log(
23
- 'Roap:state#shouldStep --> RoapStateMachine: PeerConnectionState, ',
24
- meeting.mediaProperties.peerConnection.signalingState
25
- );
26
- LoggerProxy.logger.log(
27
- 'Roap:state#shouldStep --> RoapStateMachine: success save proceeding with transition, ',
28
- roap.msg
29
- );
30
-
31
- return true;
32
- };
33
-
34
- const handleTransition = (value, signal, meeting) => {
35
- LoggerProxy.logger.log(`Roap:state#handleTransition --> current ${value} to ${signal}`);
36
-
37
- switch (value) {
38
- case ROAP.ROAP_STATE.INIT:
39
- if (signal === ROAP.ROAP_SIGNAL.RX_OFFER) {
40
- return ROAP.ROAP_STATE.WAIT_TX_ANSWER;
41
- }
42
- if (signal === ROAP.ROAP_SIGNAL.TX_OFFER) {
43
- return ROAP.ROAP_STATE.WAIT_RX_ANSWER;
44
- }
45
-
46
- return value;
47
-
48
- case ROAP.ROAP_STATE.WAIT_RX_OFFER:
49
- return value;
50
-
51
- case ROAP.ROAP_STATE.WAIT_RX_ANSWER:
52
- if (signal === ROAP.ROAP_SIGNAL.RX_ANSWER) {
53
- // There is a race condition where the /call response comes after mercury event from the server
54
- // As mercury sends roap event if it didnt get back a response. We can send the roap ok after that
55
- if (meeting.mediaId) {
56
- return ROAP.ROAP_STATE.WAIT_TX_OK;
57
- }
58
- LoggerProxy.logger.error(
59
- 'Roap:state#handleTransition --> Race Condition no mediaId, continuing.'
60
- );
61
-
62
- return value;
63
- }
64
-
65
- if (signal === ROAP.ROAP_SIGNAL.RX_OFFER) {
66
- return ROAP.ROAP_STATE.GLARE;
67
- }
68
-
69
- return value;
70
-
71
- case ROAP.ROAP_STATE.WAIT_TX_OFFER:
72
- return value;
73
-
74
- case ROAP.ROAP_STATE.WAIT_TX_ANSWER:
75
- if (signal === ROAP.ROAP_SIGNAL.TX_ANSWER) {
76
- return ROAP.ROAP_STATE.WAIT_RX_OK;
77
- }
78
-
79
- return value;
80
-
81
- case ROAP.ROAP_STATE.WAIT_TX_OK:
82
- if (signal === ROAP.ROAP_SIGNAL.TX_OK) {
83
- return ROAP.ROAP_STATE.INIT;
84
- }
85
-
86
- return value;
87
-
88
- case ROAP.ROAP_STATE.WAIT_RX_OK:
89
- if (signal === ROAP.ROAP_SIGNAL.RX_OK) {
90
- return ROAP.ROAP_STATE.INIT;
91
- }
92
-
93
- return value;
94
-
95
- case ROAP.ROAP_STATE.ERROR:
96
- // eslint-disable-next-line no-warning-comments
97
- // TODO: resolve error state. Add a signal constant and handle the cleanup
98
- return ROAP.ROAP_STATE.INIT;
99
-
100
- case ROAP.ROAP_STATE.GLARE:
101
- return ROAP.ROAP_STATE.WAIT_RX_ANSWER;
102
- default:
103
- return value;
104
- }
105
- };
106
-
107
- const RoapStateMachine = {
108
- /**
109
- * @param {Roap} roapRef
110
- * initializes the state machine
111
- * @returns {StateMachine} an instance of a state machine
112
- */
113
- createState() {
114
- const RoapState = StateMachine.factory({
115
- init: ROAP.ROAP_STATE.INIT,
116
- transitions: [
117
- {
118
- name: ROAP.ROAP_TRANSITIONS.STEP,
119
- from: '*',
120
- /**
121
- * Method to handle the transitions between states
122
- * @param {String} signal
123
- * @param {Meeting} meeting instance of a Meeting
124
- * @param {Object} roap
125
- * @returns {String} new state value
126
- */
127
- to(signal: string, meeting: Meeting, roap: object) {
128
- const value = this.state;
129
-
130
- if (!shouldStep(roap, meeting)) {
131
- return value;
132
- }
133
-
134
- return handleTransition(value, signal, meeting);
135
- },
136
- },
137
- ],
138
- methods: {
139
- /**
140
- * Event that fires after we've transitioned to a new state
141
- * @param {Object} transition
142
- * @returns {null}
143
- */
144
- onAfterStep(transition: any) {
145
- LoggerProxy.logger.log(
146
- `Roap:state#onAfterStep --> RoapStateMachine->onAfterStep#fired! State changed from '${transition.from}' to '${transition.to}' with transition '${transition.transition}''.`
147
- );
148
- },
149
- },
150
- });
151
-
152
- return new RoapState();
153
- },
154
- };
155
-
156
- export default RoapStateMachine;