@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
@@ -1 +1 @@
1
- {"version":3,"names":["_lodash","require","_queue","_interopRequireDefault","_loggerProxy","_metrics","_constants","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","_templateObject7","_templateObject8","_templateObject9","_templateObject10","MAX_OOO_DELTA_COUNT","OOO_DELTA_WAIT_TIME","OOO_DELTA_WAIT_TIME_RANDOM_DELAY","Parser","exports","default","_classCallCheck2","_defineProperty2","deltaCompareFunc","left","right","_Parser$loci","loci","LT","GT","extract","extractComparisonState","isSequenceEmpty","result","compareSequence","baseSequence","queue","SortedQueue","status","onDeltaAction","workingCopy","syncTimer","undefined","_createClass2","key","value","isNewFullLocus","incomingFullDto","isLoci","LoggerProxy","logger","info","comparisonResult","compareFullDtoSequence","USE_INCOMING","isValidLocus","newLoci","isValid","nextEvent","size","processDeltaEvent","action","locus","onDeltaEvent","enqueue","triggerSync","pause","reason","concat","stopSyncTimer","DESYNC","startSyncTimer","_this","timeout","Math","random","setTimeout","clearTimeout","_Parser$loci2","WAIT","LOCUS_URL_CHANGED","dequeue","compare","lociComparison","debug","needToWait","locus2string","resume","_locus$sequence","sequence","entries","length","at","checkSequenceOverlap","current","incoming","comparison","min","max","checkUnequalRanges","currentIsNotUnique","unique","incomingIsNotUnique","currentTotalRange","end","incomingTotalRange","EQ","checkForUniqueEntries","currentIsUnique","incomingIsUnique","checkIfOutOfSync","currentUniqueMin","incomingUniqueMin","currentHasNoRange","start","incomingHasNoRange","neitherSeqHasRange","hasUniqOverlap","list","some","seq","currentUniqOverlap","incomingUniqOverlap","debugInfo","pack","packComparisonResult","compareDelta","compareToAction","_Parser$loci3","url","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","LOCUS_DELTA_OUT_OF_ORDER","stack","Error","slice","USE_CURRENT","local","getMetaData","delta","getUniqueSequences","rules","_i","_rules","rule","ERROR","_Parser$loci4","lociComparisonResult","split","first","last","rangeStart","rangeEnd","baseLoci","otherLoci","diff","difference","getNumbersOutOfRange","output","filter","num","sort","a","b","_sequence$entries","hasEmptyEntries","hasEmptyRange","hasProp","prop","Object","prototype","hasOwnProperty","call","newData","oldData","getDebugMessage","debugCode","mStr","strings","join","replace","resolutionMap","debugMap","SO001","title","description","_taggedTemplateLiteral2","logic","SO002","UR001","UR002","UR003","UE001","UE002","OOS001","OOS002","OOS003","debugObj","resolution"],"sources":["parser.ts"],"sourcesContent":["import {difference} from 'lodash';\n\nimport SortedQueue from '../common/queue';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport Metrics from '../metrics';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\n\nconst MAX_OOO_DELTA_COUNT = 5; // when we receive an out-of-order delta and the queue builds up to MAX_OOO_DELTA_COUNT, we do a sync with Locus\nconst OOO_DELTA_WAIT_TIME = 10000; // [ms] minimum wait time before we do a sync if we get out-of-order deltas\nconst OOO_DELTA_WAIT_TIME_RANDOM_DELAY = 5000; // [ms] max random delay added to OOO_DELTA_WAIT_TIME\n\ntype LocusDeltaDto = {\n url: string;\n baseSequence: {\n rangeStart: number;\n rangeEnd: number;\n entries: number[];\n };\n sequence: {\n rangeStart: number;\n rangeEnd: number;\n entries: number[];\n };\n syncUrl: string;\n};\n\n/**\n * Locus Delta Parser\n * @private\n * https://sqbu-github.cisco.com/WebExSquared/cloud-apps/wiki/Locus-Delta-Events\n */\nexport default class Parser {\n // processing status\n status:\n | 'IDLE' // not doing anything\n | 'PAUSED' // paused, because we are doing a sync\n | 'WORKING' // processing a delta event\n | 'BLOCKED'; // received an out-of-order delta, so waiting for the missing one\n\n // loci comparison states\n static loci = {\n EQ: 'EQUAL',\n GT: 'GREATER_THAN',\n LT: 'LESS_THAN',\n DESYNC: 'DESYNC',\n USE_INCOMING: 'USE_INCOMING',\n USE_CURRENT: 'USE_CURRENT',\n WAIT: 'WAIT',\n ERROR: 'ERROR',\n LOCUS_URL_CHANGED: 'LOCUS_URL_CHANGED',\n };\n\n queue: SortedQueue<LocusDeltaDto>;\n workingCopy: any;\n syncTimer?: ReturnType<typeof setTimeout>;\n\n /**\n * @constructs Parser\n */\n constructor() {\n const deltaCompareFunc = (left: LocusDeltaDto, right: LocusDeltaDto) => {\n const {LT, GT} = Parser.loci;\n const {extractComparisonState: extract} = Parser;\n\n if (Parser.isSequenceEmpty(left)) {\n return -1;\n }\n if (Parser.isSequenceEmpty(right)) {\n return 1;\n }\n const result = extract(Parser.compareSequence(left.baseSequence, right.baseSequence));\n\n if (result === LT) {\n return -1;\n }\n if (result === GT) {\n return 1;\n }\n\n return 0;\n };\n\n this.queue = new SortedQueue<LocusDeltaDto>(deltaCompareFunc);\n this.status = 'IDLE';\n this.onDeltaAction = null;\n this.workingCopy = null;\n this.syncTimer = undefined;\n }\n\n /**\n * Returns a debug string representing a locus delta - useful for logging\n *\n * @param {LocusDeltaDto} locus Locus delta\n * @returns {string}\n */\n static locus2string(locus: LocusDeltaDto) {\n if (!locus.sequence?.entries) {\n return 'invalid';\n }\n\n return locus.sequence.entries.length ? `seq=${locus.sequence.entries.at(-1)}` : 'empty';\n }\n\n /**\n * Checks if two sequences overlap in time,\n * the sequence with the higher minimum value is greater.\n * Chooses sequence with most recent data.\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} loci comparison state\n */\n static checkSequenceOverlap(current, incoming) {\n let comparison = null;\n\n // if earliest working copy sequence is more recent than last incoming sequence\n if (current.min > incoming.max) {\n // choose left side (current)\n comparison = `${Parser.loci.GT}:SO001`;\n }\n // if last working copy sequence is before the earliest incoming sequence\n else if (current.max < incoming.min) {\n // choose right side (incoming)\n comparison = `${Parser.loci.LT}:SO002`;\n }\n\n // if no match above, defaults to null\n return comparison;\n }\n\n /**\n * Checks if two sequences have unequal ranges.\n * Chooses sequence with most larger range.\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {object} loci comparison\n */\n static checkUnequalRanges(current, incoming) {\n let comparison = null;\n const currentIsNotUnique = current.unique.length === 0;\n const incomingIsNotUnique = incoming.unique.length === 0;\n const currentTotalRange = current.end - current.min;\n const incomingTotalRange = incoming.end - incoming.min;\n\n // no unique values for both loci\n if (currentIsNotUnique && incomingIsNotUnique) {\n // current working copy loci has a larger range\n if (currentTotalRange > incomingTotalRange) {\n // choose left side (current)\n comparison = `${Parser.loci.GT}:UR001`;\n }\n // incoming delta loci has a larger range\n else if (currentTotalRange < incomingTotalRange) {\n // choose right side (incoming)\n comparison = `${Parser.loci.LT}:UR002`;\n } else {\n // with no unique entries and with ranges either absent or\n // of the same size, the sequences are considered equal.\n comparison = `${Parser.loci.EQ}:UR003`;\n }\n }\n\n return comparison;\n }\n\n /**\n * Checks if either sequences has unique entries.\n * Entries are considered unique if they do not overlap\n * with other Loci sequences or range values.\n * Chooses sequence with the unique entries.\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} loci comparison state\n */\n static checkForUniqueEntries(current, incoming) {\n let comparison = null;\n const currentIsUnique = current.unique.length > 0;\n const incomingIsUnique = incoming.unique.length > 0;\n\n // current has unique entries and incoming does not\n if (currentIsUnique && !incomingIsUnique) {\n // choose left side (current)\n comparison = `${Parser.loci.GT}:UE001`;\n }\n // current has no unique entries but incoming does\n else if (!currentIsUnique && incomingIsUnique) {\n // choose right side (incoming)\n comparison = `${Parser.loci.LT}:UE002`;\n }\n\n return comparison;\n }\n\n /**\n * Checks both Locus Delta objects to see if they are\n * out of sync with one another. If so sends a DESYNC\n * request to the server.\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} loci comparison state\n */\n static checkIfOutOfSync(current, incoming) {\n let comparison = null;\n const currentUniqueMin = current.unique[0];\n const incomingUniqueMin = incoming.unique[0];\n\n const currentHasNoRange = !current.start && !current.end;\n const incomingHasNoRange = !incoming.start && !incoming.end;\n const neitherSeqHasRange = currentHasNoRange && incomingHasNoRange;\n\n const hasUniqOverlap = (list, min, max) => list.some((seq) => min < seq && seq < max);\n // current unique entries overlap the total range of incoming\n const currentUniqOverlap = hasUniqOverlap(current.unique, incoming.min, incoming.max);\n // vice-versa, incoming unique entries overlap the total range of current\n const incomingUniqOverlap = hasUniqOverlap(incoming.unique, current.min, current.max);\n\n if (neitherSeqHasRange || currentUniqOverlap || incomingUniqOverlap) {\n // outputs string indicating which condition occurred. ex: 0,1,0\n const debugInfo = `${+neitherSeqHasRange},${+currentUniqOverlap},${+incomingUniqOverlap}`;\n\n // send DESYNC to server\n comparison = `${Parser.loci.DESYNC}:OOS001:${debugInfo}`;\n } else if (currentUniqueMin > incomingUniqueMin) {\n // choose left side (current)\n comparison = `${Parser.loci.GT}:OOS002`;\n } else {\n // choose right side (incoming)\n comparison = `${Parser.loci.LT}:OOS003`;\n }\n\n return comparison;\n }\n\n /**\n * Compares two loci to determine which one contains the most recent state\n * @instance\n * @memberof Locus\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} loci comparison state\n */\n static compare(current, incoming) {\n const {isSequenceEmpty} = Parser;\n const {extractComparisonState: extract} = Parser;\n const {packComparisonResult: pack} = Parser;\n\n if (isSequenceEmpty(current) || isSequenceEmpty(incoming)) {\n return pack(Parser.loci.USE_INCOMING, 'C001');\n }\n\n if (incoming.baseSequence) {\n return pack(Parser.compareDelta(current, incoming), 'C002');\n }\n\n const result = Parser.compareSequence(current.sequence, incoming.sequence);\n const action = Parser.compareToAction(extract(result));\n\n return pack(action, result);\n }\n\n /**\n * Compares two loci sequences (with delta params) and indicates what action\n * to take.\n * @instance\n * @memberof Locus\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @private\n * @returns {string} loci comparison state\n */\n private static compareDelta(current, incoming) {\n const {LT, GT, EQ, DESYNC, USE_INCOMING, WAIT, LOCUS_URL_CHANGED} = Parser.loci;\n\n const {extractComparisonState: extract} = Parser;\n const {packComparisonResult: pack} = Parser;\n\n const result = Parser.compareSequence(current.sequence, incoming.sequence);\n let comparison = extract(result);\n\n if (comparison !== LT) {\n return pack(Parser.compareToAction(comparison), result);\n }\n\n if (incoming.url !== current.url) {\n // when moving to/from a breakout session, the locus URL will change and also\n // the baseSequence, making incoming and current incomparable, so use a\n // unique comparison state\n return pack(LOCUS_URL_CHANGED, result);\n }\n\n comparison = Parser.compareSequence(current.sequence, incoming.baseSequence);\n\n switch (extract(comparison)) {\n case GT:\n case EQ:\n comparison = USE_INCOMING;\n break;\n\n case LT:\n if (extract(Parser.compareSequence(incoming.baseSequence, incoming.sequence)) === EQ) {\n // special case where Locus sends a delta with baseSequence === sequence to trigger a sync,\n // because the delta event is too large to be sent over mercury connection\n comparison = DESYNC;\n } else {\n // the incoming locus has baseSequence from the future, so it is out-of-order,\n // we are missing 1 or more locus that should be in front of it, we need to wait for it\n comparison = WAIT;\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.LOCUS_DELTA_OUT_OF_ORDER, {\n stack: new Error().stack,\n });\n }\n break;\n default:\n comparison = DESYNC;\n }\n\n return pack(comparison, result);\n }\n\n /**\n * Compares Locus sequences - it should be called only for full Locus DTOs, not deltas\n *\n * @param {Types~Locus} current Current working copy\n * @param {Types~Locus} incomingFullDto New Full Locus DTO\n * @returns {string} either Parser.loci.USE_INCOMING or Parser.loci.USE_CURRENT\n */\n static compareFullDtoSequence(current, incomingFullDto) {\n if (Parser.isSequenceEmpty(current) || Parser.isSequenceEmpty(incomingFullDto)) {\n return Parser.loci.USE_INCOMING;\n }\n\n // the sequence.entries list will always contain at least 1 entry\n // https://sqbu-github.cisco.com/WebExSquared/cloud-apps/wiki/Locus-Sequence-Comparison-Algorithm\n\n return incomingFullDto.sequence.entries.slice(-1)[0] > current.sequence.entries.slice(-1)[0]\n ? Parser.loci.USE_INCOMING\n : Parser.loci.USE_CURRENT;\n }\n\n /**\n * Returns true if the incoming full locus DTO is newer than the current working copy\n *\n * @param {Types~Locus} incomingFullDto New Full Locus DTO\n * @returns {string} either Parser.loci.USE_INCOMING or Parser.loci.USE_CURRENT\n */\n isNewFullLocus(incomingFullDto) {\n if (!Parser.isLoci(incomingFullDto)) {\n LoggerProxy.logger.info('Locus-info:parser#isNewFullLocus --> Ignoring non-locus object.');\n\n return false;\n }\n\n if (!this.workingCopy) {\n // we don't have a working copy yet, so any full locus is better than nothing\n return true;\n }\n\n const comparisonResult = Parser.compareFullDtoSequence(this.workingCopy, incomingFullDto);\n\n return comparisonResult === Parser.loci.USE_INCOMING;\n }\n\n /**\n * Compares Locus sequences\n * @param {Types~Locus} current Current working copy\n * @param {Types~Locus} incoming New Locus delta\n * @returns {string}\n */\n static compareSequence(current, incoming) {\n // Locus sequence comparison rules in order of priority.\n // https://sqbu-github.cisco.com/WebExSquared/cloud-apps/wiki/Locus-Sequence-Comparison-Algorithm\n\n const local: any = Parser.getMetaData(current);\n const delta: any = Parser.getMetaData(incoming);\n\n // update loci metadata\n local.unique = Parser.getUniqueSequences(local, delta);\n delta.unique = Parser.getUniqueSequences(delta, local);\n\n // Locus sequence comparison rules\n // order matters\n const rules = [\n Parser.checkSequenceOverlap,\n Parser.checkUnequalRanges,\n Parser.checkForUniqueEntries,\n Parser.checkIfOutOfSync,\n ];\n\n for (const rule of rules) {\n // Rule only returns a value if the rule applies,\n // otherwise returns null.\n const result = rule(local, delta);\n\n if (result) {\n return result;\n }\n }\n\n // error, none of rules above applied\n // should never get here as last rule\n // should be catch all.\n return Parser.loci.ERROR;\n }\n\n /**\n * Transates the result of a sequence comparison into an intended behavior\n * @param {string} result\n * @returns {string} Locus comparison action\n */\n static compareToAction(result: string) {\n const {DESYNC, EQ, ERROR, GT, LT, USE_CURRENT, USE_INCOMING} = Parser.loci;\n\n let action = ERROR;\n\n switch (result) {\n case EQ:\n case GT:\n action = USE_CURRENT;\n break;\n case LT:\n action = USE_INCOMING;\n break;\n case DESYNC:\n action = DESYNC;\n break;\n default:\n LoggerProxy.logger.info(\n `Locus-info:parser#compareToAction --> Error: ${result} is not a recognized sequence comparison result.`\n );\n }\n\n return action;\n }\n\n /**\n * Extracts a loci comparison from a string of data.\n * @param {string} lociComparisonResult Comparison result with extra data\n * @returns {string} Comparison of EQ, LT, GT, or DESYNC.\n */\n static extractComparisonState(lociComparisonResult: string) {\n return lociComparisonResult.split(':')[0];\n }\n\n /**\n * @typedef {object} LociMetadata\n * @property {number} start - Starting sequence number\n * @property {number} end - Ending sequence number\n * @property {number} first - First sequence number\n * @property {number} last - Last sequence number\n * @property {number} min - Minimum sequence number\n * @property {number} max - Maximum sequence number\n * @property {number} entries - Loci sequence entries\n */\n\n /**\n * Metadata for Locus delta\n * @param {Array.<number>} sequence Locus delta sequence\n * @returns {LociMetadata} Locus Delta Metadata\n */\n static getMetaData(sequence: any) {\n const {entries} = sequence;\n const first = entries[0];\n const last = entries.slice(-1)[0];\n\n // rangeStart or rangeEnd is 0 if a range doesn't exist\n const start = sequence.rangeStart;\n const end = sequence.rangeEnd;\n\n // sequence data\n return {\n start,\n end,\n first,\n last,\n // Rule is: rangeStart <= rangeEnd <= min(entries)\n min: start || first,\n // Grab last entry if exist else default to rangeEnd\n max: last || end,\n // keep reference to actual sequence entries\n entries,\n };\n }\n\n /**\n * Compares two Locus delta objects and notes unique\n * values contained within baseLoci.\n * @param {LociMetadata} baseLoci\n * @param {LociMetadata} otherLoci\n * @returns {Array.<number>} List of unique sequences\n */\n static getUniqueSequences(baseLoci: any, otherLoci: any) {\n const diff: any = difference(baseLoci.entries, otherLoci.entries);\n\n const {start, end} = otherLoci;\n\n return Parser.getNumbersOutOfRange(diff, start, end);\n }\n\n /**\n * Returns an array of numbers outside of a given range.\n * @param {Array.<number>} list Array to filter\n * @param {number} rangeStart Start of range\n * @param {number} rangeEnd End of range\n * @returns {Array.<number>} Array of numbers sorted ASC\n */\n static getNumbersOutOfRange(list: Array<number>, rangeStart: number, rangeEnd: number) {\n // Collect all numbers if number is outside of specified range\n const output = list.filter((num) => num < rangeStart || num > rangeEnd);\n\n // sort ascending\n return output.sort((a, b) => a - b);\n }\n\n /**\n * Checks if newLoci or workingCopy is invalid.\n * @param {Types~Locus} newLoci\n * @returns {boolean}\n */\n isValidLocus(newLoci) {\n let isValid = false;\n const {isLoci} = Parser;\n\n // one or both objects are not locus delta events\n if (!isLoci(this.workingCopy) || !isLoci(newLoci)) {\n LoggerProxy.logger.info(\n 'Locus-info:parser#processDeltaEvent --> Ignoring non-locus object. workingCopy:',\n this.workingCopy,\n 'newLoci:',\n newLoci\n );\n } else {\n isValid = true;\n }\n\n return isValid;\n }\n\n /**\n * Determines if a paricular locus's sequence is empty\n * @param {Types~Locus} locus\n * @returns {bool}\n */\n static isSequenceEmpty(locus) {\n const {sequence} = locus;\n const hasEmptyEntries = !sequence.entries?.length;\n const hasEmptyRange = sequence.rangeStart === 0 && sequence.rangeEnd === 0;\n\n return hasEmptyEntries && hasEmptyRange;\n }\n\n /**\n * Determines if an object has basic\n * structure of a locus object.\n * @param {Types~Locus} loci\n * @returns {boolean}\n */\n static isLoci(loci) {\n if (!loci || !loci.sequence) {\n return false;\n }\n const hasProp = (prop) => Object.prototype.hasOwnProperty.call(loci.sequence, prop);\n\n if (hasProp('rangeStart') && hasProp('rangeEnd')) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Processes next event in queue,\n * if queue is empty sets status to idle.\n * @returns {undefined}\n */\n nextEvent() {\n if (this.status === 'PAUSED') {\n LoggerProxy.logger.info('Locus-info:parser#nextEvent --> Locus parser paused.');\n\n return;\n }\n\n if (this.status === 'BLOCKED') {\n LoggerProxy.logger.info(\n 'Locus-info:parser#nextEvent --> Locus parser blocked by out-of-order delta.'\n );\n\n return;\n }\n\n // continue processing until queue is empty\n if (this.queue.size() > 0) {\n this.processDeltaEvent();\n } else {\n this.status = 'IDLE';\n }\n }\n\n /**\n * Function handler for delta actions,\n * is set by instance callee.\n * @param {string} action Locus delta action\n * @param {Types~Locus} locus Locus delta\n * @returns {undefined}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onDeltaAction(action: string, locus) {}\n\n /**\n * Event handler for locus delta events\n * @param {Types~Locus} loci Locus Delta\n * @returns {undefined}\n */\n onDeltaEvent(loci) {\n // enqueue the new loci\n this.queue.enqueue(loci);\n\n if (this.onDeltaAction) {\n if (this.status === 'BLOCKED') {\n if (this.queue.size() > MAX_OOO_DELTA_COUNT) {\n this.triggerSync('queue too big, blocked on out-of-order delta');\n } else {\n this.processDeltaEvent();\n }\n } else if (this.status === 'IDLE') {\n // Update status, ensure we only process one event at a time.\n this.status = 'WORKING';\n\n this.processDeltaEvent();\n }\n }\n }\n\n /**\n * Appends new data onto a string of existing data.\n * @param {string} newData\n * @param {string} oldData\n * @returns {string}\n */\n static packComparisonResult(newData: string, oldData: string) {\n return `${newData}:${oldData}`;\n }\n\n /**\n * Pause locus processing\n * @returns {undefined}\n */\n pause() {\n this.status = 'PAUSED';\n LoggerProxy.logger.info('Locus-info:parser#pause --> Locus parser paused.');\n }\n\n /**\n * Triggers a sync with Locus\n *\n * @param {string} reason used just for logging\n * @returns {undefined}\n */\n private triggerSync(reason: string) {\n LoggerProxy.logger.info(`Locus-info:parser#triggerSync --> doing sync, reason: ${reason}`);\n this.stopSyncTimer();\n this.pause();\n this.onDeltaAction(Parser.loci.DESYNC, this.workingCopy);\n }\n\n /**\n * Starts a timer with a random delay. When that timer expires we will do a sync.\n *\n * The main purpose of this timer is to handle a case when we get some out-of-order deltas,\n * so we start waiting to receive the missing delta. If that delta never arrives, this timer\n * will trigger a sync with Locus.\n *\n * @returns {undefined}\n */\n private startSyncTimer() {\n if (this.syncTimer === undefined) {\n const timeout = OOO_DELTA_WAIT_TIME + Math.random() * OOO_DELTA_WAIT_TIME_RANDOM_DELAY;\n\n this.syncTimer = setTimeout(() => {\n this.syncTimer = undefined;\n this.triggerSync('timer expired, blocked on out-of-order delta');\n }, timeout);\n }\n }\n\n /**\n * Stops the timer for triggering a sync\n *\n * @returns {undefined}\n */\n private stopSyncTimer() {\n if (this.syncTimer !== undefined) {\n clearTimeout(this.syncTimer);\n this.syncTimer = undefined;\n }\n }\n\n /**\n * Processes next locus delta in the queue,\n * continues until the queue is empty\n * or cleared.\n * @returns {undefined}\n */\n processDeltaEvent() {\n const {DESYNC, USE_INCOMING, WAIT, LOCUS_URL_CHANGED} = Parser.loci;\n const {extractComparisonState: extract} = Parser;\n const newLoci = this.queue.dequeue();\n\n if (!this.isValidLocus(newLoci)) {\n this.nextEvent();\n\n return;\n }\n\n const result = Parser.compare(this.workingCopy, newLoci);\n const lociComparison = extract(result);\n\n // limited debugging, use chrome extension\n // for full debugging.\n LoggerProxy.logger.debug(`Locus-info:parser#processDeltaEvent --> Locus Debug: ${result}`);\n\n let needToWait = false;\n\n switch (lociComparison) {\n case DESYNC:\n // wait for desync response\n this.pause();\n break;\n\n case USE_INCOMING:\n case LOCUS_URL_CHANGED:\n // update working copy for future comparisons.\n // Note: The working copy of parser gets updated in .onFullLocus()\n // and here when USE_INCOMING or LOCUS_URL_CHANGED locus.\n this.workingCopy = newLoci;\n break;\n\n case WAIT:\n // we've taken newLoci from the front of the queue, so put it back there as we have to wait\n // for the one that should be in front of it, before we can process it\n this.queue.enqueue(newLoci);\n needToWait = true;\n break;\n\n default:\n break;\n }\n\n if (needToWait) {\n this.status = 'BLOCKED';\n this.startSyncTimer();\n } else {\n this.stopSyncTimer();\n\n if (this.status === 'BLOCKED') {\n // we are not blocked anymore\n this.status = 'WORKING';\n\n LoggerProxy.logger.info(\n `Locus-info:parser#processDeltaEvent --> received delta that we were waiting for ${Parser.locus2string(\n newLoci\n )}, not blocked anymore`\n );\n }\n }\n\n if (this.onDeltaAction) {\n LoggerProxy.logger.info(\n `Locus-info:parser#processDeltaEvent --> Locus Delta ${Parser.locus2string(\n newLoci\n )}, Action: ${lociComparison}`\n );\n\n this.onDeltaAction(lociComparison, newLoci);\n }\n\n this.nextEvent();\n }\n\n /**\n * Resume from a paused state\n * @returns {undefined}\n */\n resume() {\n LoggerProxy.logger.info('Locus-info:parser#resume --> Locus parser resumed.');\n this.status = 'WORKING';\n this.nextEvent();\n }\n\n /**\n * Gets related debug info for given error code\n * @param {string} debugCode Debug code\n * @param {string} comparison Locus comparison string\n * @returns {object} Debug message\n */\n static getDebugMessage(debugCode: string, comparison: string) {\n // removes extra spaces from multiline string\n const mStr = (strings) => strings.join('').replace(/\\s{2,}/g, ' ');\n\n const resolutionMap = {\n EQ: `${Parser.loci.LT}: is equal (current == incoming).`,\n LT: `${Parser.loci.LT}: choose right side (incoming).`,\n GT: `${Parser.loci.GT}: choose left side (current).`,\n };\n\n const debugMap = {\n SO001: {\n title: 'checkSequenceOverlap-001',\n description: mStr`Occurs if earliest working copy sequence is more \\\n recent than last incoming sequence.`,\n logic: 'current.min > incoming.max',\n },\n\n SO002: {\n title: 'checkSequenceOverlap-002',\n description: mStr`Occurs if last working copy sequence is before the \\\n earliest incoming sequence.`,\n logic: 'current.max < incoming.min',\n },\n\n UR001: {\n title: 'checkUnequalRanges-001',\n description: mStr`Occurs if there are no unique values for both loci, \\\n and the current working copy loci has a larger range.`,\n logic: 'currentTotalRange > incomingTotalRange',\n },\n\n UR002: {\n title: 'checkUnequalRanges-002',\n description: mStr`Occurs if there are no unique values for both loci, \\\n and the incoming delta loci has a larger range.`,\n logic: 'currentTotalRange < incomingTotalRange',\n },\n\n UR003: {\n title: 'checkUnequalRanges-003',\n description: mStr`Occurs if there are no unique values for both loci, \\\n and with ranges either absent or of the same size, the sequences \\\n are considered equal.`,\n logic: 'currentTotalRange == incomingTotalRange',\n },\n\n UE001: {\n title: 'checkForUniqueEntries-001',\n description: mStr`Occurs if current loci has unique entries and \\\n incoming does not. Entries are considered unique if they \\\n do not overlap with other Loci sequences or range values.`,\n logic: 'currentIsUnique && !incomingIsUnique',\n },\n\n UE002: {\n title: 'checkForUniqueEntries-002',\n description: mStr`Occurs if current has no unique entries but \\\n incoming does. Entries are considered unique if they \\\n do not overlap with other Loci sequences or range values.`,\n logic: '!currentIsUnique && incomingIsUnique',\n },\n\n OOS001: {\n title: 'checkIfOutOfSync-001',\n description: mStr`Occurs if neither sequence has a range, or \\\n if the current loci unique entries overlap the total range of the \\\n incoming sequence, or if the incoming unique entries overlap \\\n the total range of current sequence.`,\n logic: 'neitherSeqHasRange || currentUniqOverlap || incomingUniqOverlap',\n },\n\n OOS002: {\n title: 'checkIfOutOfSync-002',\n description: mStr`Occurs if the minimum value from sequences that are \\\n unique to the current loci is greater than the minimum value from \\\n sequences that are unique to the incoming loci.`,\n logic: 'currentUniqueMin > incomingUniqueMin',\n },\n\n OOS003: {\n title: 'checkIfOutOfSync-003',\n description: mStr`Occurs if none of the comparison rules applied. \\\n It is a catch all.`,\n logic: 'else (catch all)',\n },\n };\n\n const debugObj = debugMap[debugCode];\n\n debugObj.title = `Debug: ${debugObj.title}`;\n debugObj.resolution = resolutionMap[comparison];\n\n return debugObj;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_queue","_interopRequireDefault","require","_loggerProxy","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","_templateObject7","_templateObject8","_templateObject9","_templateObject10","Parser","_classCallCheck2","default","_defineProperty2","queue","SimpleQueue","status","IDLE","onDeltaAction","workingCopy","_createClass2","key","value","isValidLocus","newLoci","_this","isValid","isLoci","setStatus","LoggerProxy","logger","info","nextEvent","PAUSED","size","processDeltaEvent","action","locus","onDeltaEvent","loci","enqueue","WORKING","pause","_Parser$loci","DESYNC","USE_INCOMING","extract","extractComparisonState","dequeue","result","compare","lociComparison","debug","concat","call","resume","checkSequenceOverlap","current","incoming","comparison","min","max","GT","LT","checkUnequalRanges","currentIsNotUnique","unique","length","incomingIsNotUnique","currentTotalRange","end","incomingTotalRange","EQ","checkForUniqueEntries","currentIsUnique","incomingIsUnique","checkIfOutOfSync","currentUniqueMin","incomingUniqueMin","currentHasNoRange","start","incomingHasNoRange","neitherSeqHasRange","hasUniqOverlap","list","some","seq","currentUniqOverlap","incomingUniqOverlap","debugInfo","isSequenceEmpty","pack","packComparisonResult","baseSequence","compareDelta","compareSequence","sequence","compareToAction","_Parser$loci2","local","getMetaData","delta","getUniqueSequences","rules","_i","_rules","rule","ERROR","_Parser$loci3","USE_CURRENT","lociComparisonResult","split","entries","first","last","slice","rangeStart","rangeEnd","baseLoci","otherLoci","diff","_difference2","getNumbersOutOfRange","output","filter","num","sort","a","b","_sequence$entries","hasEmptyEntries","hasEmptyRange","hasProp","prop","Object","prototype","hasOwnProperty","newData","oldData","getDebugMessage","debugCode","mStr","strings","join","replace","resolutionMap","debugMap","SO001","title","description","_taggedTemplateLiteral2","logic","SO002","UR001","UR002","UR003","UE001","UE002","OOS001","OOS002","OOS003","debugObj","resolution","exports"],"sources":["parser.ts"],"sourcesContent":["import {difference} from 'lodash';\n\nimport SimpleQueue from '../common/queue';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\n/**\n * Locus Delta Parser\n * @private\n * https://sqbu-github.cisco.com/WebExSquared/cloud-apps/wiki/Locus-Delta-Events\n */\nexport default class Parser {\n // processing status\n static status = {\n IDLE: 'IDLE',\n PAUSED: 'PAUSED',\n WORKING: 'WORKING',\n };\n\n // loci comparison states\n static loci = {\n EQ: 'EQUAL',\n GT: 'GREATER_THAN',\n LT: 'LESS_THAN',\n DESYNC: 'DESYNC',\n USE_INCOMING: 'USE_INCOMING',\n USE_CURRENT: 'USE_CURRENT',\n ERROR: 'ERROR',\n };\n\n queue: any;\n workingCopy: any;\n\n /**\n * @constructs Parser\n */\n constructor() {\n this.queue = new SimpleQueue();\n // @ts-ignore - This is declared as static class member and again being initialized here from same\n this.status = Parser.status.IDLE;\n this.onDeltaAction = null;\n this.workingCopy = null;\n }\n\n /**\n * Checks if two sequences overlap in time,\n * the sequence with the higher minimum value is greater.\n * Chooses sequence with most recent data.\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} loci comparison state\n */\n static checkSequenceOverlap(current, incoming) {\n let comparison = null;\n\n // if earliest working copy sequence is more recent than last incoming sequence\n if (current.min > incoming.max) {\n // choose left side (current)\n comparison = `${Parser.loci.GT}:SO001`;\n }\n // if last working copy sequence is before the earliest incoming sequence\n else if (current.max < incoming.min) {\n // choose right side (incoming)\n comparison = `${Parser.loci.LT}:SO002`;\n }\n\n // if no match above, defaults to null\n return comparison;\n }\n\n /**\n * Checks if two sequences have unequal ranges.\n * Chooses sequence with most larger range.\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {object} loci comparison\n */\n static checkUnequalRanges(current, incoming) {\n let comparison = null;\n const currentIsNotUnique = current.unique.length === 0;\n const incomingIsNotUnique = incoming.unique.length === 0;\n const currentTotalRange = current.end - current.min;\n const incomingTotalRange = incoming.end - incoming.min;\n\n // no unique values for both loci\n if (currentIsNotUnique && incomingIsNotUnique) {\n // current working copy loci has a larger range\n if (currentTotalRange > incomingTotalRange) {\n // choose left side (current)\n comparison = `${Parser.loci.GT}:UR001`;\n }\n // incoming delta loci has a larger range\n else if (currentTotalRange < incomingTotalRange) {\n // choose right side (incoming)\n comparison = `${Parser.loci.LT}:UR002`;\n } else {\n // with no unique entries and with ranges either absent or\n // of the same size, the sequences are considered equal.\n comparison = `${Parser.loci.EQ}:UR003`;\n }\n }\n\n return comparison;\n }\n\n /**\n * Checks if either sequences has unique entries.\n * Entries are considered unique if they do not overlap\n * with other Loci sequences or range values.\n * Chooses sequence with the unique entries.\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} loci comparison state\n */\n static checkForUniqueEntries(current, incoming) {\n let comparison = null;\n const currentIsUnique = current.unique.length > 0;\n const incomingIsUnique = incoming.unique.length > 0;\n\n // current has unique entries and incoming does not\n if (currentIsUnique && !incomingIsUnique) {\n // choose left side (current)\n comparison = `${Parser.loci.GT}:UE001`;\n }\n // current has no unique entries but incoming does\n else if (!currentIsUnique && incomingIsUnique) {\n // choose right side (incoming)\n comparison = `${Parser.loci.LT}:UE002`;\n }\n\n return comparison;\n }\n\n /**\n * Checks both Locus Delta objects to see if they are\n * out of sync with one another. If so sends a DESYNC\n * request to the server.\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} loci comparison state\n */\n static checkIfOutOfSync(current, incoming) {\n let comparison = null;\n const currentUniqueMin = current.unique[0];\n const incomingUniqueMin = incoming.unique[0];\n\n const currentHasNoRange = !current.start && !current.end;\n const incomingHasNoRange = !incoming.start && !incoming.end;\n const neitherSeqHasRange = currentHasNoRange && incomingHasNoRange;\n\n const hasUniqOverlap = (list, min, max) => list.some((seq) => min < seq && seq < max);\n // current unique entries overlap the total range of incoming\n const currentUniqOverlap = hasUniqOverlap(current.unique, incoming.min, incoming.max);\n // vice-versa, incoming unique entries overlap the total range of current\n const incomingUniqOverlap = hasUniqOverlap(incoming.unique, current.min, current.max);\n\n if (neitherSeqHasRange || currentUniqOverlap || incomingUniqOverlap) {\n // outputs string indicating which condition occurred. ex: 0,1,0\n const debugInfo = `${+neitherSeqHasRange},${+currentUniqOverlap},${+incomingUniqOverlap}`;\n\n // send DESYNC to server\n comparison = `${Parser.loci.DESYNC}:OOS001:${debugInfo}`;\n } else if (currentUniqueMin > incomingUniqueMin) {\n // choose left side (current)\n comparison = `${Parser.loci.GT}:OOS002`;\n } else {\n // choose right side (incoming)\n comparison = `${Parser.loci.LT}:OOS003`;\n }\n\n return comparison;\n }\n\n /**\n * Compares two loci to determine which one contains the most recent state\n * @instance\n * @memberof Locus\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} loci comparison state\n */\n static compare(current, incoming) {\n const {isSequenceEmpty} = Parser;\n const {extractComparisonState: extract} = Parser;\n const {packComparisonResult: pack} = Parser;\n\n if (isSequenceEmpty(current) || isSequenceEmpty(incoming)) {\n return pack(Parser.loci.USE_INCOMING, 'C001');\n }\n\n if (incoming.baseSequence) {\n return pack(Parser.compareDelta(current, incoming), 'C002');\n }\n\n const result = Parser.compareSequence(current.sequence, incoming.sequence);\n const action = Parser.compareToAction(extract(result));\n\n return pack(action, result);\n }\n\n /**\n * Compares two loci sequences (with delta params) and indicates what action\n * to take.\n * @instance\n * @memberof Locus\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @private\n * @returns {string} loci comparison state\n */\n private static compareDelta(current, incoming) {\n const {LT, GT, EQ, DESYNC, USE_INCOMING} = Parser.loci;\n\n const {extractComparisonState: extract} = Parser;\n const {packComparisonResult: pack} = Parser;\n\n const result = Parser.compareSequence(current.sequence, incoming.sequence);\n let comparison = extract(result);\n\n if (comparison !== LT) {\n return pack(Parser.compareToAction(comparison), result);\n }\n\n comparison = Parser.compareSequence(current.sequence, incoming.baseSequence);\n\n switch (extract(comparison)) {\n case GT:\n case EQ:\n comparison = USE_INCOMING;\n break;\n\n default:\n comparison = DESYNC;\n }\n\n return pack(comparison, result);\n }\n\n /**\n * Compares Locus sequences\n * @param {Types~Locus} current Current working copy\n * @param {Types~Locus} incoming New Locus delta\n * @returns {string}\n */\n static compareSequence(current, incoming) {\n // Locus sequence comparison rules in order of priority.\n // https://sqbu-github.cisco.com/WebExSquared/cloud-apps/wiki/Locus-Sequence-Comparison-Algorithm\n\n const local: any = Parser.getMetaData(current);\n const delta: any = Parser.getMetaData(incoming);\n\n // update loci metadata\n local.unique = Parser.getUniqueSequences(local, delta);\n delta.unique = Parser.getUniqueSequences(delta, local);\n\n // Locus sequence comparison rules\n // order matters\n const rules = [\n Parser.checkSequenceOverlap,\n Parser.checkUnequalRanges,\n Parser.checkForUniqueEntries,\n Parser.checkIfOutOfSync,\n ];\n\n for (const rule of rules) {\n // Rule only returns a value if the rule applies,\n // otherwise returns null.\n const result = rule(local, delta);\n\n if (result) {\n return result;\n }\n }\n\n // error, none of rules above applied\n // should never get here as last rule\n // should be catch all.\n return Parser.loci.ERROR;\n }\n\n /**\n * Transates the result of a sequence comparison into an intended behavior\n * @param {string} result\n * @returns {string} Locus comparison action\n */\n static compareToAction(result: string) {\n const {DESYNC, EQ, ERROR, GT, LT, USE_CURRENT, USE_INCOMING} = Parser.loci;\n\n let action = ERROR;\n\n switch (result) {\n case EQ:\n case GT:\n action = USE_CURRENT;\n break;\n case LT:\n action = USE_INCOMING;\n break;\n case DESYNC:\n action = DESYNC;\n break;\n default:\n LoggerProxy.logger.info(\n `Locus-info:parser#compareToAction --> Error: ${result} is not a recognized sequence comparison result.`\n );\n }\n\n return action;\n }\n\n /**\n * Extracts a loci comparison from a string of data.\n * @param {string} lociComparisonResult Comparison result with extra data\n * @returns {string} Comparison of EQ, LT, GT, or DESYNC.\n */\n static extractComparisonState(lociComparisonResult: string) {\n return lociComparisonResult.split(':')[0];\n }\n\n /**\n * @typedef {object} LociMetadata\n * @property {number} start - Starting sequence number\n * @property {number} end - Ending sequence number\n * @property {number} first - First sequence number\n * @property {number} last - Last sequence number\n * @property {number} min - Minimum sequence number\n * @property {number} max - Maximum sequence number\n * @property {number} entries - Loci sequence entries\n */\n\n /**\n * Metadata for Locus delta\n * @param {Array.<number>} sequence Locus delta sequence\n * @returns {LociMetadata} Locus Delta Metadata\n */\n static getMetaData(sequence: any) {\n const {entries} = sequence;\n const first = entries[0];\n const last = entries.slice(-1)[0];\n\n // rangeStart or rangeEnd is 0 if a range doesn't exist\n const start = sequence.rangeStart;\n const end = sequence.rangeEnd;\n\n // sequence data\n return {\n start,\n end,\n first,\n last,\n // Rule is: rangeStart <= rangeEnd <= min(entries)\n min: start || first,\n // Grab last entry if exist else default to rangeEnd\n max: last || end,\n // keep reference to actual sequence entries\n entries,\n };\n }\n\n /**\n * Compares two Locus delta objects and notes unique\n * values contained within baseLoci.\n * @param {LociMetadata} baseLoci\n * @param {LociMetadata} otherLoci\n * @returns {Array.<number>} List of unique sequences\n */\n static getUniqueSequences(baseLoci: any, otherLoci: any) {\n const diff: any = difference(baseLoci.entries, otherLoci.entries);\n\n const {start, end} = otherLoci;\n\n return Parser.getNumbersOutOfRange(diff, start, end);\n }\n\n /**\n * Returns an array of numbers outside of a given range.\n * @param {Array.<number>} list Array to filter\n * @param {number} rangeStart Start of range\n * @param {number} rangeEnd End of range\n * @returns {Array.<number>} Array of numbers sorted ASC\n */\n static getNumbersOutOfRange(list: Array<number>, rangeStart: number, rangeEnd: number) {\n // Collect all numbers if number is outside of specified range\n const output = list.filter((num) => num < rangeStart || num > rangeEnd);\n\n // sort ascending\n return output.sort((a, b) => a - b);\n }\n\n /**\n * Checks if newLoci or workingCopy is invalid.\n * @param {Types~Locus} newLoci\n * @returns {boolean}\n */\n isValidLocus(newLoci) {\n let isValid = false;\n const {IDLE} = Parser.status;\n const {isLoci} = Parser;\n // @ts-ignore\n const setStatus = (status) => {\n // @ts-ignore\n this.status = status;\n };\n\n // one or both objects are not locus delta events\n if (!isLoci(this.workingCopy) || !isLoci(newLoci)) {\n setStatus(IDLE);\n LoggerProxy.logger.info(\n 'Locus-info:parser#processDeltaEvent --> Ignoring non-locus object. workingCopy:',\n this.workingCopy,\n 'newLoci:',\n newLoci\n );\n } else {\n isValid = true;\n }\n\n return isValid;\n }\n\n /**\n * Determines if a paricular locus's sequence is empty\n * @param {Types~Locus} locus\n * @returns {bool}\n */\n static isSequenceEmpty(locus) {\n const {sequence} = locus;\n const hasEmptyEntries = !sequence.entries?.length;\n const hasEmptyRange = sequence.rangeStart === 0 && sequence.rangeEnd === 0;\n\n return hasEmptyEntries && hasEmptyRange;\n }\n\n /**\n * Determines if an object has basic\n * structure of a locus object.\n * @param {Types~Locus} loci\n * @returns {boolean}\n */\n static isLoci(loci) {\n if (!loci || !loci.sequence) {\n return false;\n }\n const hasProp = (prop) => Object.prototype.hasOwnProperty.call(loci.sequence, prop);\n\n if (hasProp('rangeStart') && hasProp('rangeEnd')) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Processes next event in queue,\n * if queue is empty sets status to idle.\n * @returns {undefined}\n */\n nextEvent() {\n // @ts-ignore\n if (this.status === Parser.status.PAUSED) {\n LoggerProxy.logger.info('Locus-info:parser#nextEvent --> Locus parser paused.');\n\n return;\n }\n\n // continue processing until queue is empty\n if (this.queue.size() > 0) {\n this.processDeltaEvent();\n } else {\n // @ts-ignore\n this.status = Parser.status.IDLE;\n }\n }\n\n /**\n * Function handler for delta actions,\n * is set by instance callee.\n * @param {string} action Locus delta action\n * @param {Types~Locus} locus Locus delta\n * @returns {undefined}\n */\n // eslint-disable-next-line no-unused-vars\n onDeltaAction(action: string, locus) {}\n\n /**\n * Event handler for locus delta events\n * @param {Types~Locus} loci Locus Delta\n * @returns {undefined}\n */\n onDeltaEvent(loci) {\n // enqueue the new loci\n this.queue.enqueue(loci);\n // start processing events in the queue if idle\n // and a function handler is defined\n // @ts-ignore\n if (this.status === Parser.status.IDLE && this.onDeltaAction) {\n // Update status, ensure we only process one event at a time.\n // @ts-ignore\n this.status = Parser.status.WORKING;\n\n this.processDeltaEvent();\n }\n }\n\n /**\n * Appends new data onto a string of existing data.\n * @param {string} newData\n * @param {string} oldData\n * @returns {string}\n */\n static packComparisonResult(newData: string, oldData: string) {\n return `${newData}:${oldData}`;\n }\n\n /**\n * Pause locus processing\n * @returns {undefined}\n */\n pause() {\n // @ts-ignore\n this.status = Parser.status.PAUSED;\n LoggerProxy.logger.info('Locus-info:parser#pause --> Locus parser paused.');\n }\n\n /**\n * Processes next locus delta in the queue,\n * continues until the queue is empty\n * or cleared.\n * @returns {undefined}\n */\n processDeltaEvent() {\n const {DESYNC, USE_INCOMING} = Parser.loci;\n const {extractComparisonState: extract} = Parser;\n const newLoci = this.queue.dequeue();\n\n if (!this.isValidLocus(newLoci)) {\n return;\n }\n\n const result = Parser.compare(this.workingCopy, newLoci);\n const lociComparison = extract(result);\n\n // limited debugging, use chrome extension\n // for full debugging.\n LoggerProxy.logger.debug(`Locus-info:parser#processDeltaEvent --> Locus Debug: ${result}`);\n\n if (lociComparison === DESYNC) {\n // wait for desync response\n this.pause();\n } else if (lociComparison === USE_INCOMING) {\n // update working copy for future comparisons.\n // Note: The working copy of parser gets updated in .onFullLocus()\n // and here when USE_INCOMING locus.\n this.workingCopy = newLoci;\n }\n\n if (this.onDeltaAction) {\n LoggerProxy.logger.info(\n `Locus-info:parser#processDeltaEvent --> Locus Delta Action: ${lociComparison}`\n );\n\n // eslint-disable-next-line no-useless-call\n this.onDeltaAction.call(this, lociComparison, newLoci);\n }\n\n this.nextEvent();\n }\n\n /**\n * Resume from a paused state\n * @returns {undefined}\n */\n resume() {\n LoggerProxy.logger.info('Locus-info:parser#resume --> Locus parser resumed.');\n // @ts-ignore\n this.status = Parser.status.WORKING;\n this.nextEvent();\n }\n\n /**\n * Gets related debug info for given error code\n * @param {string} debugCode Debug code\n * @param {string} comparison Locus comparison string\n * @returns {object} Debug message\n */\n static getDebugMessage(debugCode: string, comparison: string) {\n // removes extra spaces from multiline string\n const mStr = (strings) => strings.join('').replace(/\\s{2,}/g, ' ');\n\n const resolutionMap = {\n EQ: `${Parser.loci.LT}: is equal (current == incoming).`,\n LT: `${Parser.loci.LT}: choose right side (incoming).`,\n GT: `${Parser.loci.GT}: choose left side (current).`,\n };\n\n const debugMap = {\n SO001: {\n title: 'checkSequenceOverlap-001',\n description: mStr`Occurs if earliest working copy sequence is more \\\n recent than last incoming sequence.`,\n logic: 'current.min > incoming.max',\n },\n\n SO002: {\n title: 'checkSequenceOverlap-002',\n description: mStr`Occurs if last working copy sequence is before the \\\n earliest incoming sequence.`,\n logic: 'current.max < incoming.min',\n },\n\n UR001: {\n title: 'checkUnequalRanges-001',\n description: mStr`Occurs if there are no unique values for both loci, \\\n and the current working copy loci has a larger range.`,\n logic: 'currentTotalRange > incomingTotalRange',\n },\n\n UR002: {\n title: 'checkUnequalRanges-002',\n description: mStr`Occurs if there are no unique values for both loci, \\\n and the incoming delta loci has a larger range.`,\n logic: 'currentTotalRange < incomingTotalRange',\n },\n\n UR003: {\n title: 'checkUnequalRanges-003',\n description: mStr`Occurs if there are no unique values for both loci, \\\n and with ranges either absent or of the same size, the sequences \\\n are considered equal.`,\n logic: 'currentTotalRange == incomingTotalRange',\n },\n\n UE001: {\n title: 'checkForUniqueEntries-001',\n description: mStr`Occurs if current loci has unique entries and \\\n incoming does not. Entries are considered unique if they \\\n do not overlap with other Loci sequences or range values.`,\n logic: 'currentIsUnique && !incomingIsUnique',\n },\n\n UE002: {\n title: 'checkForUniqueEntries-002',\n description: mStr`Occurs if current has no unique entries but \\\n incoming does. Entries are considered unique if they \\\n do not overlap with other Loci sequences or range values.`,\n logic: '!currentIsUnique && incomingIsUnique',\n },\n\n OOS001: {\n title: 'checkIfOutOfSync-001',\n description: mStr`Occurs if neither sequence has a range, or \\\n if the current loci unique entries overlap the total range of the \\\n incoming sequence, or if the incoming unique entries overlap \\\n the total range of current sequence.`,\n logic: 'neitherSeqHasRange || currentUniqOverlap || incomingUniqOverlap',\n },\n\n OOS002: {\n title: 'checkIfOutOfSync-002',\n description: mStr`Occurs if the minimum value from sequences that are \\\n unique to the current loci is greater than the minimum value from \\\n sequences that are unique to the incoming loci.`,\n logic: 'currentUniqueMin > incomingUniqueMin',\n },\n\n OOS003: {\n title: 'checkIfOutOfSync-003',\n description: mStr`Occurs if none of the comparison rules applied. \\\n It is a catch all.`,\n logic: 'else (catch all)',\n },\n };\n\n const debugObj = debugMap[debugCode];\n\n debugObj.title = `Debug: ${debugObj.title}`;\n debugObj.resolution = resolutionMap[comparison];\n\n return debugObj;\n }\n}\n"],"mappings":"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"}
@@ -7,7 +7,6 @@ _Object$defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
  var _isArray = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/array/is-array"));
10
- var _lodash = require("lodash");
11
10
  var _constants = require("../constants");
12
11
  var _parameter = _interopRequireDefault(require("../common/errors/parameter"));
13
12
  /* eslint-disable default-param-last */
@@ -31,11 +30,9 @@ SelfUtils.parse = function (self, deviceId) {
31
30
  return PSTN_DEVICE_TYPE === device.deviceType;
32
31
  });
33
32
  return {
34
- remoteVideoMuted: SelfUtils.getRemoteVideoMuted(self),
35
33
  remoteMuted: SelfUtils.getRemoteMuted(self),
36
34
  unmuteAllowed: SelfUtils.getUnmuteAllowed(self),
37
35
  localAudioUnmuteRequested: SelfUtils.getLocalAudioUnmuteRequested(self),
38
- localAudioUnmuteRequestedTimeStamp: SelfUtils.getLocalAudioUnmuteRequestedTimeStamp(self),
39
36
  localAudioUnmuteRequired: SelfUtils.getLocalAudioUnmuteRequired(self),
40
37
  lastModified: SelfUtils.getLastModified(self),
41
38
  modifiedBy: SelfUtils.getModifiedBy(self),
@@ -62,33 +59,18 @@ SelfUtils.parse = function (self, deviceId) {
62
59
  isUserUnadmitted: self.state === _constants._IDLE_ && (joinedWith === null || joinedWith === void 0 ? void 0 : (_joinedWith$intent = joinedWith.intent) === null || _joinedWith$intent === void 0 ? void 0 : _joinedWith$intent.type) === _constants._WAIT_,
63
60
  layout: SelfUtils.getLayout(self),
64
61
  canNotViewTheParticipantList: SelfUtils.canNotViewTheParticipantList(self),
65
- isSharingBlocked: SelfUtils.isSharingBlocked(self),
66
- breakoutSessions: SelfUtils.getBreakoutSessions(self),
67
- breakout: SelfUtils.getBreakout(self),
68
- interpretation: SelfUtils.getInterpretation(self)
62
+ isSharingBlocked: SelfUtils.isSharingBlocked(self)
69
63
  };
70
64
  }
71
65
  return null;
72
66
  };
73
- SelfUtils.getBreakoutSessions = function (self) {
74
- var _self$controls, _self$controls$breako;
75
- return self === null || self === void 0 ? void 0 : (_self$controls = self.controls) === null || _self$controls === void 0 ? void 0 : (_self$controls$breako = _self$controls.breakout) === null || _self$controls$breako === void 0 ? void 0 : _self$controls$breako.sessions;
76
- };
77
- SelfUtils.getBreakout = function (self) {
78
- var _self$controls2;
79
- return self === null || self === void 0 ? void 0 : (_self$controls2 = self.controls) === null || _self$controls2 === void 0 ? void 0 : _self$controls2.breakout;
80
- };
81
- SelfUtils.getInterpretation = function (self) {
82
- var _self$controls3;
83
- return self === null || self === void 0 ? void 0 : (_self$controls3 = self.controls) === null || _self$controls3 === void 0 ? void 0 : _self$controls3.interpretation;
84
- };
85
67
  SelfUtils.getLayout = function (self) {
86
- var _self$controls4;
87
- return (0, _isArray.default)(self === null || self === void 0 ? void 0 : (_self$controls4 = self.controls) === null || _self$controls4 === void 0 ? void 0 : _self$controls4.layouts) ? self.controls.layouts[0].type : undefined;
68
+ var _self$controls;
69
+ return (0, _isArray.default)(self === null || self === void 0 ? void 0 : (_self$controls = self.controls) === null || _self$controls === void 0 ? void 0 : _self$controls.layouts) ? self.controls.layouts[0].type : undefined;
88
70
  };
89
71
  SelfUtils.getRoles = function (self) {
90
- var _self$controls5, _self$controls5$role;
91
- return ((self === null || self === void 0 ? void 0 : (_self$controls5 = self.controls) === null || _self$controls5 === void 0 ? void 0 : (_self$controls5$role = _self$controls5.role) === null || _self$controls5$role === void 0 ? void 0 : _self$controls5$role.roles) || []).reduce(function (roles, role) {
72
+ var _self$controls2, _self$controls2$role;
73
+ return ((self === null || self === void 0 ? void 0 : (_self$controls2 = self.controls) === null || _self$controls2 === void 0 ? void 0 : (_self$controls2$role = _self$controls2.role) === null || _self$controls2$role === void 0 ? void 0 : _self$controls2$role.roles) || []).reduce(function (roles, role) {
92
74
  if (role.hasRole) {
93
75
  roles.push(role.type);
94
76
  }
@@ -107,12 +89,10 @@ SelfUtils.getSelves = function (oldSelf, newSelf, deviceId) {
107
89
  var updates = {};
108
90
  updates.isUserUnadmitted = SelfUtils.isUserUnadmitted(current);
109
91
  updates.isUserAdmitted = SelfUtils.isUserAdmitted(previous, current);
110
- updates.isVideoMutedByOthersChanged = SelfUtils.videoMutedByOthersChanged(previous, current);
111
92
  updates.isMutedByOthersChanged = SelfUtils.mutedByOthersChanged(previous, current);
112
93
  updates.localAudioUnmuteRequestedByServer = SelfUtils.localAudioUnmuteRequestedByServer(previous, current);
113
94
  updates.localAudioUnmuteRequiredByServer = SelfUtils.localAudioUnmuteRequiredByServer(previous, current);
114
95
  updates.moderatorChanged = SelfUtils.moderatorChanged(previous, current);
115
- updates.isRolesChanged = SelfUtils.isRolesChanged(previous, current);
116
96
  updates.isMediaInactiveOrReleased = SelfUtils.wasMediaInactiveOrReleased(previous, current);
117
97
  updates.isUserObserving = SelfUtils.isDeviceObserving(previous, current);
118
98
  updates.layoutChanged = SelfUtils.layoutChanged(previous, current);
@@ -122,8 +102,6 @@ SelfUtils.getSelves = function (oldSelf, newSelf, deviceId) {
122
102
  updates.shareStateChange = (previous === null || previous === void 0 ? void 0 : previous.currentMediaStatus.share) !== current.currentMediaStatus.share;
123
103
  updates.canNotViewTheParticipantListChanged = (previous === null || previous === void 0 ? void 0 : previous.canNotViewTheParticipantList) !== current.canNotViewTheParticipantList;
124
104
  updates.isSharingBlockedChanged = (previous === null || previous === void 0 ? void 0 : previous.isSharingBlocked) !== current.isSharingBlocked;
125
- updates.breakoutsChanged = SelfUtils.breakoutsChanged(previous, current);
126
- updates.interpretationChanged = SelfUtils.interpretationChanged(previous, current);
127
105
  return {
128
106
  previous: previous,
129
107
  current: current,
@@ -145,17 +123,11 @@ SelfUtils.isJoined = function (self) {
145
123
  *
146
124
  * @param {Self} previous - Previous self state
147
125
  * @param {Self} current - Current self state [per event]
148
- * @returns {boolean} - If the Meeting Layout Controls Layout has changed.
126
+ * @returns {boolean} - If the MEeting Layout Controls Layout has changed.
149
127
  */
150
128
  SelfUtils.layoutChanged = function (previous, current) {
151
129
  return (current === null || current === void 0 ? void 0 : current.layout) && (previous === null || previous === void 0 ? void 0 : previous.layout) !== (current === null || current === void 0 ? void 0 : current.layout);
152
130
  };
153
- SelfUtils.breakoutsChanged = function (previous, current) {
154
- return !(0, _lodash.isEqual)(previous === null || previous === void 0 ? void 0 : previous.breakoutSessions, current === null || current === void 0 ? void 0 : current.breakoutSessions) && !!(current !== null && current !== void 0 && current.breakout);
155
- };
156
- SelfUtils.interpretationChanged = function (previous, current) {
157
- return !(0, _lodash.isEqual)(previous === null || previous === void 0 ? void 0 : previous.interpretation, current === null || current === void 0 ? void 0 : current.interpretation) && !!(current !== null && current !== void 0 && current.interpretation);
158
- };
159
131
  SelfUtils.isMediaInactive = function (previous, current) {
160
132
  if (previous && previous.joinedWith && previous.joinedWith.mediaSessions && current && current.joinedWith && current.joinedWith.mediaSessions) {
161
133
  var previousMediaStatus = SelfUtils.getMediaStatus(previous.joinedWith.mediaSessions);
@@ -198,18 +170,6 @@ SelfUtils.getSelfIdentity = function (self) {
198
170
  return self.person.id;
199
171
  };
200
172
 
201
- /**
202
- * get the "remote video mute" property from the self object
203
- * @param {Object} self
204
- * @returns {Boolean}
205
- */
206
- SelfUtils.getRemoteVideoMuted = function (self) {
207
- if (!self || !self.controls || !self.controls.video) {
208
- return null;
209
- }
210
- return self.controls.video.muted;
211
- };
212
-
213
173
  /**
214
174
  * get the "remote mute" property from the self object
215
175
  * @param {Object} self
@@ -222,14 +182,8 @@ SelfUtils.getRemoteMuted = function (self) {
222
182
  return self.controls.audio.muted;
223
183
  };
224
184
  SelfUtils.getLocalAudioUnmuteRequested = function (self) {
225
- var _self$controls6, _self$controls6$audio;
226
- return !!(self !== null && self !== void 0 && (_self$controls6 = self.controls) !== null && _self$controls6 !== void 0 && (_self$controls6$audio = _self$controls6.audio) !== null && _self$controls6$audio !== void 0 && _self$controls6$audio.requestedToUnmute);
227
- };
228
-
229
- // requestedToUnmute timestamp
230
- SelfUtils.getLocalAudioUnmuteRequestedTimeStamp = function (self) {
231
- var _self$controls7, _self$controls7$audio;
232
- return Date.parse(self === null || self === void 0 ? void 0 : (_self$controls7 = self.controls) === null || _self$controls7 === void 0 ? void 0 : (_self$controls7$audio = _self$controls7.audio) === null || _self$controls7$audio === void 0 ? void 0 : _self$controls7$audio.lastModifiedRequestedToUnmute) || 0;
185
+ var _self$controls3, _self$controls3$audio;
186
+ return !!(self !== null && self !== void 0 && (_self$controls3 = self.controls) !== null && _self$controls3 !== void 0 && (_self$controls3$audio = _self$controls3.audio) !== null && _self$controls3$audio !== void 0 && _self$controls3$audio.requestedToUnmute);
233
187
  };
234
188
  SelfUtils.getUnmuteAllowed = function (self) {
235
189
  if (!self || !self.controls || !self.controls.audio) {
@@ -238,8 +192,8 @@ SelfUtils.getUnmuteAllowed = function (self) {
238
192
  return !self.controls.audio.disallowUnmute;
239
193
  };
240
194
  SelfUtils.getLocalAudioUnmuteRequired = function (self) {
241
- var _self$controls8, _self$controls8$audio;
242
- return !!(self !== null && self !== void 0 && (_self$controls8 = self.controls) !== null && _self$controls8 !== void 0 && (_self$controls8$audio = _self$controls8.audio) !== null && _self$controls8$audio !== void 0 && _self$controls8$audio.localAudioUnmuteRequired);
195
+ var _self$controls4, _self$controls4$audio;
196
+ return !!(self !== null && self !== void 0 && (_self$controls4 = self.controls) !== null && _self$controls4 !== void 0 && (_self$controls4$audio = _self$controls4.audio) !== null && _self$controls4$audio !== void 0 && _self$controls4$audio.localAudioUnmuteRequired);
243
197
  };
244
198
  SelfUtils.getStatus = function (status) {
245
199
  return {
@@ -299,19 +253,6 @@ SelfUtils.moderatorChanged = function (oldSelf, changedSelf) {
299
253
  return oldSelf.moderator !== changedSelf.moderator;
300
254
  };
301
255
 
302
- /**
303
- * determine whether the roles of self is changed or not
304
- * @param {Object} oldSelf
305
- * @param {Object} changedSelf
306
- * @returns {Boolean}
307
- */
308
- SelfUtils.isRolesChanged = function (oldSelf, changedSelf) {
309
- if (!changedSelf) {
310
- // no new self means no change
311
- return false;
312
- }
313
- return !(0, _lodash.isEqual)(oldSelf === null || oldSelf === void 0 ? void 0 : oldSelf.roles, changedSelf === null || changedSelf === void 0 ? void 0 : changedSelf.roles);
314
- };
315
256
  /**
316
257
  * @param {Object} oldSelf
317
258
  * @param {Object} changedSelf
@@ -339,20 +280,6 @@ SelfUtils.isUserAdmitted = function (oldSelf, changedSelf) {
339
280
  }
340
281
  return SelfUtils.isLocusUserUnadmitted(oldSelf) && SelfUtils.isLocusUserAdmitted(changedSelf);
341
282
  };
342
- SelfUtils.videoMutedByOthersChanged = function (oldSelf, changedSelf) {
343
- if (!changedSelf) {
344
- throw new _parameter.default('New self must be defined to determine if self was video muted by others.');
345
- }
346
- if (!oldSelf || oldSelf.remoteVideoMuted === null) {
347
- if (changedSelf.remoteVideoMuted) {
348
- return true; // this happens when host disables "Allow start video"
349
- }
350
-
351
- // we don't want to be sending the 'meeting:self:videoUnmutedByOthers' notification on meeting join
352
- return false;
353
- }
354
- return oldSelf.remoteVideoMuted !== changedSelf.remoteVideoMuted;
355
- };
356
283
  SelfUtils.mutedByOthersChanged = function (oldSelf, changedSelf) {
357
284
  if (!changedSelf) {
358
285
  throw new _parameter.default('New self must be defined to determine if self was muted by others.');
@@ -373,7 +300,7 @@ SelfUtils.localAudioUnmuteRequestedByServer = function () {
373
300
  if (!changedSelf) {
374
301
  throw new _parameter.default('New self must be defined to determine if self received request to unmute.');
375
302
  }
376
- return changedSelf.localAudioUnmuteRequested && changedSelf.localAudioUnmuteRequestedTimeStamp > oldSelf.localAudioUnmuteRequestedTimeStamp;
303
+ return changedSelf.localAudioUnmuteRequested && !oldSelf.localAudioUnmuteRequested;
377
304
  };
378
305
  SelfUtils.localAudioUnmuteRequiredByServer = function () {
379
306
  var oldSelf = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -420,17 +347,6 @@ SelfUtils.getMediaStatus = function () {
420
347
  });
421
348
  return mediaStatus;
422
349
  };
423
- SelfUtils.getReplacedBreakoutMoveId = function (self, deviceId) {
424
- if (self && (0, _isArray.default)(self.devices)) {
425
- var joinedDevice = self.devices.find(function (device) {
426
- return deviceId === device.url;
427
- });
428
- if ((0, _isArray.default)(joinedDevice === null || joinedDevice === void 0 ? void 0 : joinedDevice.replaces)) {
429
- var _joinedDevice$replace;
430
- return (_joinedDevice$replace = joinedDevice.replaces[0]) === null || _joinedDevice$replace === void 0 ? void 0 : _joinedDevice$replace.breakoutMoveId;
431
- }
432
- }
433
- return null;
434
- };
435
- var _default = exports.default = SelfUtils;
350
+ var _default = SelfUtils;
351
+ exports.default = _default;
436
352
  //# sourceMappingURL=selfUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_lodash","require","_constants","_parameter","_interopRequireDefault","SelfUtils","PSTN_DEVICE_TYPE","parse","self","deviceId","_joinedWith$intent","joinedWith","devices","find","device","url","pstnDevices","filter","deviceType","remoteVideoMuted","getRemoteVideoMuted","remoteMuted","getRemoteMuted","unmuteAllowed","getUnmuteAllowed","localAudioUnmuteRequested","getLocalAudioUnmuteRequested","localAudioUnmuteRequestedTimeStamp","getLocalAudioUnmuteRequestedTimeStamp","localAudioUnmuteRequired","getLocalAudioUnmuteRequired","lastModified","getLastModified","modifiedBy","getModifiedBy","guest","moderator","mediaStatus","getStatus","status","state","currentMediaStatus","getMediaStatus","mediaSessions","creator","isCreator","selfId","id","selfIdentity","getSelfIdentity","selfUrl","removed","roles","getRoles","isUserUnadmitted","_IDLE_","intent","type","_WAIT_","layout","getLayout","canNotViewTheParticipantList","isSharingBlocked","breakoutSessions","getBreakoutSessions","breakout","getBreakout","interpretation","getInterpretation","_self$controls","_self$controls$breako","controls","sessions","_self$controls2","_self$controls3","_self$controls4","_isArray","default","layouts","undefined","_self$controls5","_self$controls5$role","role","reduce","hasRole","push","getSelves","oldSelf","newSelf","previous","current","updates","isUserAdmitted","isVideoMutedByOthersChanged","videoMutedByOthersChanged","isMutedByOthersChanged","mutedByOthersChanged","localAudioUnmuteRequestedByServer","localAudioUnmuteRequiredByServer","moderatorChanged","isRolesChanged","isMediaInactiveOrReleased","wasMediaInactiveOrReleased","isUserObserving","isDeviceObserving","layoutChanged","isMediaInactive","audioStateChange","audio","videoStateChange","video","shareStateChange","share","canNotViewTheParticipantListChanged","isSharingBlockedChanged","breakoutsChanged","interpretationChanged","isJoined","_JOINED_","isEqual","previousMediaStatus","MEDIA_STATE","inactive","direction","meta","person","muted","_self$controls6","_self$controls6$audio","requestedToUnmute","_self$controls7","_self$controls7$audio","Date","lastModifiedRequestedToUnmute","disallowUnmute","_self$controls8","_self$controls8$audio","audioStatus","videoStatus","slides","videoSlidesStatus","arguments","length","changedSelf","_LEFT_","reason","MEETING_END_REASON","INACTIVE","MEDIA_RELEASED","isLocusUserUnadmitted","check","_check$joinedWith","_check$joinedWith$int","isLocusUserAdmitted","_check$joinedWith2","_check$joinedWith2$in","ParameterError","_oldSelf$joinedWith","_oldSelf$joinedWith$i","_changedSelf$joinedWi","_changedSelf$joinedWi2","_MOVE_MEDIA_","_OBSERVE_","getSipUrl","partner","sipUri","_CALL_","sipUrl","media","mediaType","AUDIO","mediaContent","MediaContent","main","VIDEO","getReplacedBreakoutMoveId","joinedDevice","replaces","_joinedDevice$replace","breakoutMoveId","_default","exports"],"sources":["selfUtils.ts"],"sourcesContent":["/* eslint-disable default-param-last */\n\nimport {isEqual} from 'lodash';\nimport {\n _IDLE_,\n _JOINED_,\n _CALL_,\n _WAIT_,\n _MOVE_MEDIA_,\n _OBSERVE_,\n _LEFT_,\n MEETING_END_REASON,\n MEDIA_STATE,\n AUDIO,\n VIDEO,\n MediaContent,\n} from '../constants';\nimport ParameterError from '../common/errors/parameter';\n\nconst SelfUtils: any = {};\nconst PSTN_DEVICE_TYPE = 'PROVISIONAL';\n\n/**\n * parses the relevant values for self: muted, guest, moderator, mediaStatus, state, joinedWith, pstnDevices, creator, id\n * @param {Object} self\n * @param {String} deviceId\n * @returns {undefined}\n */\nSelfUtils.parse = (self: any, deviceId: string) => {\n if (self) {\n const joinedWith = self.devices.find((device) => deviceId === device.url);\n const pstnDevices = self.devices.filter((device) => PSTN_DEVICE_TYPE === device.deviceType);\n\n return {\n remoteVideoMuted: SelfUtils.getRemoteVideoMuted(self),\n remoteMuted: SelfUtils.getRemoteMuted(self),\n unmuteAllowed: SelfUtils.getUnmuteAllowed(self),\n localAudioUnmuteRequested: SelfUtils.getLocalAudioUnmuteRequested(self),\n localAudioUnmuteRequestedTimeStamp: SelfUtils.getLocalAudioUnmuteRequestedTimeStamp(self),\n localAudioUnmuteRequired: SelfUtils.getLocalAudioUnmuteRequired(self),\n lastModified: SelfUtils.getLastModified(self),\n modifiedBy: SelfUtils.getModifiedBy(self),\n guest: self.guest,\n moderator: self.moderator,\n // cumulative media stats\n mediaStatus: SelfUtils.getStatus(self.status),\n // TODO: what should be the status if user has refreshed the page,\n // check the joinedWith parameter and communicate to the user\n state: self.state,\n // TODO: give a proper name . With same device as login or different login`\n // Some times we might have joined with both mobile and web\n joinedWith,\n pstnDevices,\n // current media stats is for the current device who has joined\n currentMediaStatus: SelfUtils.getMediaStatus(joinedWith?.mediaSessions),\n creator: self.isCreator, // check if its used,\n selfId: self.id,\n selfIdentity: SelfUtils.getSelfIdentity(self),\n selfUrl: self.url,\n removed: self.removed,\n roles: SelfUtils.getRoles(self),\n isUserUnadmitted: self.state === _IDLE_ && joinedWith?.intent?.type === _WAIT_,\n layout: SelfUtils.getLayout(self),\n canNotViewTheParticipantList: SelfUtils.canNotViewTheParticipantList(self),\n isSharingBlocked: SelfUtils.isSharingBlocked(self),\n breakoutSessions: SelfUtils.getBreakoutSessions(self),\n breakout: SelfUtils.getBreakout(self),\n interpretation: SelfUtils.getInterpretation(self),\n };\n }\n\n return null;\n};\n\nSelfUtils.getBreakoutSessions = (self) => self?.controls?.breakout?.sessions;\nSelfUtils.getBreakout = (self) => self?.controls?.breakout;\nSelfUtils.getInterpretation = (self) => self?.controls?.interpretation;\n\nSelfUtils.getLayout = (self) =>\n Array.isArray(self?.controls?.layouts) ? self.controls.layouts[0].type : undefined;\n\nSelfUtils.getRoles = (self) =>\n (self?.controls?.role?.roles || []).reduce((roles, role) => {\n if (role.hasRole) {\n roles.push(role.type);\n }\n\n return roles;\n }, []);\n\nSelfUtils.canNotViewTheParticipantList = (self) => !!self?.canNotViewTheParticipantList;\n\nSelfUtils.isSharingBlocked = (self) => !!self?.isSharingBlocked;\n\nSelfUtils.getSelves = (oldSelf, newSelf, deviceId) => {\n const previous = oldSelf && SelfUtils.parse(oldSelf, deviceId);\n const current = newSelf && SelfUtils.parse(newSelf, deviceId);\n const updates: any = {};\n\n updates.isUserUnadmitted = SelfUtils.isUserUnadmitted(current);\n updates.isUserAdmitted = SelfUtils.isUserAdmitted(previous, current);\n updates.isVideoMutedByOthersChanged = SelfUtils.videoMutedByOthersChanged(previous, current);\n updates.isMutedByOthersChanged = SelfUtils.mutedByOthersChanged(previous, current);\n updates.localAudioUnmuteRequestedByServer = SelfUtils.localAudioUnmuteRequestedByServer(\n previous,\n current\n );\n updates.localAudioUnmuteRequiredByServer = SelfUtils.localAudioUnmuteRequiredByServer(\n previous,\n current\n );\n updates.moderatorChanged = SelfUtils.moderatorChanged(previous, current);\n updates.isRolesChanged = SelfUtils.isRolesChanged(previous, current);\n updates.isMediaInactiveOrReleased = SelfUtils.wasMediaInactiveOrReleased(previous, current);\n updates.isUserObserving = SelfUtils.isDeviceObserving(previous, current);\n updates.layoutChanged = SelfUtils.layoutChanged(previous, current);\n\n updates.isMediaInactive = SelfUtils.isMediaInactive(previous, current);\n updates.audioStateChange =\n previous?.currentMediaStatus.audio !== current.currentMediaStatus.audio;\n updates.videoStateChange =\n previous?.currentMediaStatus.video !== current.currentMediaStatus.video;\n updates.shareStateChange =\n previous?.currentMediaStatus.share !== current.currentMediaStatus.share;\n\n updates.canNotViewTheParticipantListChanged =\n previous?.canNotViewTheParticipantList !== current.canNotViewTheParticipantList;\n updates.isSharingBlockedChanged = previous?.isSharingBlocked !== current.isSharingBlocked;\n updates.breakoutsChanged = SelfUtils.breakoutsChanged(previous, current);\n updates.interpretationChanged = SelfUtils.interpretationChanged(previous, current);\n\n return {\n previous,\n current,\n updates,\n };\n};\n\n/**\n * Checks if user has joined the meeting\n * @param {Object} self\n * @returns {boolean} isJoined\n */\nSelfUtils.isJoined = (self: any) => self?.state === _JOINED_;\n\n/**\n * Validate if the Meeting Layout Controls Layout has changed.\n *\n * @param {Self} previous - Previous self state\n * @param {Self} current - Current self state [per event]\n * @returns {boolean} - If the Meeting Layout Controls Layout has changed.\n */\nSelfUtils.layoutChanged = (previous: any, current: any) =>\n current?.layout && previous?.layout !== current?.layout;\n\nSelfUtils.breakoutsChanged = (previous, current) =>\n !isEqual(previous?.breakoutSessions, current?.breakoutSessions) && !!current?.breakout;\n\nSelfUtils.interpretationChanged = (previous, current) =>\n !isEqual(previous?.interpretation, current?.interpretation) && !!current?.interpretation;\n\nSelfUtils.isMediaInactive = (previous, current) => {\n if (\n previous &&\n previous.joinedWith &&\n previous.joinedWith.mediaSessions &&\n current &&\n current.joinedWith &&\n current.joinedWith.mediaSessions\n ) {\n const previousMediaStatus = SelfUtils.getMediaStatus(previous.joinedWith.mediaSessions);\n const currentMediaStatus = SelfUtils.getMediaStatus(current.joinedWith.mediaSessions);\n\n if (\n previousMediaStatus.audio &&\n currentMediaStatus.audio &&\n previousMediaStatus.audio.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.audio.state === MEDIA_STATE.inactive &&\n currentMediaStatus.audio.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n if (\n previousMediaStatus.video &&\n currentMediaStatus.video &&\n previousMediaStatus.video.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.video.state === MEDIA_STATE.inactive &&\n currentMediaStatus.video.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n if (\n previousMediaStatus.share &&\n currentMediaStatus.share &&\n previousMediaStatus.share.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.share.state === MEDIA_STATE.inactive &&\n currentMediaStatus.share.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n return false;\n }\n\n return false;\n};\n\nSelfUtils.getLastModified = (self) => {\n if (\n !self ||\n !self.controls ||\n !self.controls.audio ||\n !self.controls.audio.meta ||\n !self.controls.audio.meta.lastModified\n ) {\n return null;\n }\n\n return self.controls.audio.meta.lastModified;\n};\n\nSelfUtils.getModifiedBy = (self) => {\n if (\n !self ||\n !self.controls ||\n !self.controls.audio ||\n !self.controls.audio.meta ||\n !self.controls.audio.meta.modifiedBy\n ) {\n return null;\n }\n\n return self.controls.audio.meta.modifiedBy;\n};\n\n/**\n * get the id from the self object\n * @param {Object} self\n * @returns {String}\n */\nSelfUtils.getSelfIdentity = (self: any) => {\n if (!self && !self.person) {\n return null;\n }\n\n return self.person.id;\n};\n\n/**\n * get the \"remote video mute\" property from the self object\n * @param {Object} self\n * @returns {Boolean}\n */\nSelfUtils.getRemoteVideoMuted = (self: any) => {\n if (!self || !self.controls || !self.controls.video) {\n return null;\n }\n\n return self.controls.video.muted;\n};\n\n/**\n * get the \"remote mute\" property from the self object\n * @param {Object} self\n * @returns {Boolean}\n */\nSelfUtils.getRemoteMuted = (self: any) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return self.controls.audio.muted;\n};\n\nSelfUtils.getLocalAudioUnmuteRequested = (self) => !!self?.controls?.audio?.requestedToUnmute;\n\n// requestedToUnmute timestamp\nSelfUtils.getLocalAudioUnmuteRequestedTimeStamp = (self) =>\n Date.parse(self?.controls?.audio?.lastModifiedRequestedToUnmute) || 0;\n\nSelfUtils.getUnmuteAllowed = (self) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return !self.controls.audio.disallowUnmute;\n};\n\nSelfUtils.getLocalAudioUnmuteRequired = (self) => !!self?.controls?.audio?.localAudioUnmuteRequired;\n\nSelfUtils.getStatus = (status) => ({\n audio: status.audioStatus,\n video: status.videoStatus,\n slides: status.videoSlidesStatus,\n});\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n */\nSelfUtils.wasMediaInactiveOrReleased = (oldSelf: any = {}, changedSelf: any) =>\n oldSelf.joinedWith &&\n oldSelf.joinedWith.state === _JOINED_ &&\n changedSelf.joinedWith &&\n changedSelf.joinedWith.state === _LEFT_ &&\n (changedSelf.joinedWith.reason === MEETING_END_REASON.INACTIVE ||\n changedSelf.joinedWith.reason === MEETING_END_REASON.MEDIA_RELEASED);\n\n/**\n * @param {Object} check\n * @returns {Boolean}\n */\nSelfUtils.isLocusUserUnadmitted = (check: any) =>\n check && check.joinedWith?.intent?.type === _WAIT_ && check.state === _IDLE_;\n\n/**\n * @param {Object} check\n * @returns {Boolean}\n */\nSelfUtils.isLocusUserAdmitted = (check: any) =>\n check && check.joinedWith?.intent?.type !== _WAIT_ && check.state === _JOINED_;\n\n/**\n * @param {Object} self\n * @returns {Boolean}\n * @throws {Error} when self is undefined\n */\nSelfUtils.isUserUnadmitted = (self: object) => {\n if (!self) {\n throw new ParameterError('self must be defined to determine if self is unadmitted as guest.');\n }\n\n return SelfUtils.isLocusUserUnadmitted(self);\n};\n\nSelfUtils.moderatorChanged = (oldSelf, changedSelf) => {\n if (!oldSelf) {\n return true;\n }\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self transitioned moderator status.'\n );\n }\n\n return oldSelf.moderator !== changedSelf.moderator;\n};\n\n/**\n * determine whether the roles of self is changed or not\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n */\nSelfUtils.isRolesChanged = (oldSelf, changedSelf) => {\n if (!changedSelf) {\n // no new self means no change\n return false;\n }\n\n return !isEqual(oldSelf?.roles, changedSelf?.roles);\n};\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\nSelfUtils.isDeviceObserving = (oldSelf: any, changedSelf: any) =>\n oldSelf &&\n oldSelf.joinedWith?.intent?.type === _MOVE_MEDIA_ &&\n changedSelf &&\n changedSelf.joinedWith?.intent?.type === _OBSERVE_;\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\nSelfUtils.isUserAdmitted = (oldSelf: object, changedSelf: object) => {\n if (!oldSelf) {\n // if there was no previous locus, it couldn't have been admitted yet\n return false;\n }\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self transitioned to admitted as guest.'\n );\n }\n\n return SelfUtils.isLocusUserUnadmitted(oldSelf) && SelfUtils.isLocusUserAdmitted(changedSelf);\n};\n\nSelfUtils.videoMutedByOthersChanged = (oldSelf, changedSelf) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self was video muted by others.'\n );\n }\n\n if (!oldSelf || oldSelf.remoteVideoMuted === null) {\n if (changedSelf.remoteVideoMuted) {\n return true; // this happens when host disables \"Allow start video\"\n }\n\n // we don't want to be sending the 'meeting:self:videoUnmutedByOthers' notification on meeting join\n return false;\n }\n\n return oldSelf.remoteVideoMuted !== changedSelf.remoteVideoMuted;\n};\n\nSelfUtils.mutedByOthersChanged = (oldSelf, changedSelf) => {\n if (!changedSelf) {\n throw new ParameterError('New self must be defined to determine if self was muted by others.');\n }\n\n if (!oldSelf || oldSelf.remoteMuted === null) {\n if (changedSelf.remoteMuted) {\n return true; // this happens when mute on-entry is enabled\n }\n\n // we don't want to be sending the 'meeting:self:unmutedByOthers' notification on meeting join\n return false;\n }\n\n return (\n changedSelf.remoteMuted !== null &&\n (oldSelf.remoteMuted !== changedSelf.remoteMuted ||\n (changedSelf.remoteMuted && oldSelf.unmuteAllowed !== changedSelf.unmuteAllowed))\n );\n};\n\nSelfUtils.localAudioUnmuteRequestedByServer = (oldSelf: any = {}, changedSelf: any) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self received request to unmute.'\n );\n }\n\n return (\n changedSelf.localAudioUnmuteRequested &&\n changedSelf.localAudioUnmuteRequestedTimeStamp > oldSelf.localAudioUnmuteRequestedTimeStamp\n );\n};\n\nSelfUtils.localAudioUnmuteRequiredByServer = (oldSelf: any = {}, changedSelf: any) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if localAudioUnmuteRequired changed.'\n );\n }\n\n return (\n !changedSelf.remoteMuted &&\n changedSelf.localAudioUnmuteRequired &&\n oldSelf.localAudioUnmuteRequired !== changedSelf.localAudioUnmuteRequired\n );\n};\n\n/**\n * extract the sipUrl from the partner\n * @param {Object} partner\n * @param {Object} info\n * @returns {Object}\n */\n\nSelfUtils.getSipUrl = (partner: any, type, sipUri) => {\n // For webex meeting the sipUrl gets updated in info parser\n if (partner && type === _CALL_) {\n return {sipUri: partner.person.sipUrl || partner.person.id};\n }\n\n return {sipUri};\n};\n\nSelfUtils.getMediaStatus = (mediaSessions = []) => {\n const mediaStatus = {\n audio: {},\n video: {},\n share: {},\n };\n\n mediaStatus.audio = mediaSessions.find(\n (media) => media.mediaType === AUDIO && media.mediaContent === MediaContent.main\n );\n mediaStatus.video = mediaSessions.find(\n (media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.main\n );\n mediaStatus.share = mediaSessions.find(\n (media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.slides\n );\n\n return mediaStatus;\n};\n\nSelfUtils.getReplacedBreakoutMoveId = (self: any, deviceId: string) => {\n if (self && Array.isArray(self.devices)) {\n const joinedDevice = self.devices.find((device) => deviceId === device.url);\n if (Array.isArray(joinedDevice?.replaces)) {\n return joinedDevice.replaces[0]?.breakoutMoveId;\n }\n }\n\n return null;\n};\nexport default SelfUtils;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_constants","require","_parameter","_interopRequireDefault","SelfUtils","PSTN_DEVICE_TYPE","parse","self","deviceId","_joinedWith$intent","joinedWith","devices","find","device","url","pstnDevices","filter","deviceType","remoteMuted","getRemoteMuted","unmuteAllowed","getUnmuteAllowed","localAudioUnmuteRequested","getLocalAudioUnmuteRequested","localAudioUnmuteRequired","getLocalAudioUnmuteRequired","lastModified","getLastModified","modifiedBy","getModifiedBy","guest","moderator","mediaStatus","getStatus","status","state","currentMediaStatus","getMediaStatus","mediaSessions","creator","isCreator","selfId","id","selfIdentity","getSelfIdentity","selfUrl","removed","roles","getRoles","isUserUnadmitted","_IDLE_","intent","type","_WAIT_","layout","getLayout","canNotViewTheParticipantList","isSharingBlocked","_self$controls","_isArray","default","controls","layouts","undefined","_self$controls2","_self$controls2$role","role","reduce","hasRole","push","getSelves","oldSelf","newSelf","previous","current","updates","isUserAdmitted","isMutedByOthersChanged","mutedByOthersChanged","localAudioUnmuteRequestedByServer","localAudioUnmuteRequiredByServer","moderatorChanged","isMediaInactiveOrReleased","wasMediaInactiveOrReleased","isUserObserving","isDeviceObserving","layoutChanged","isMediaInactive","audioStateChange","audio","videoStateChange","video","shareStateChange","share","canNotViewTheParticipantListChanged","isSharingBlockedChanged","isJoined","_JOINED_","previousMediaStatus","MEDIA_STATE","inactive","direction","meta","person","muted","_self$controls3","_self$controls3$audio","requestedToUnmute","disallowUnmute","_self$controls4","_self$controls4$audio","audioStatus","videoStatus","slides","videoSlidesStatus","arguments","length","changedSelf","_LEFT_","reason","MEETING_END_REASON","INACTIVE","MEDIA_RELEASED","isLocusUserUnadmitted","check","_check$joinedWith","_check$joinedWith$int","isLocusUserAdmitted","_check$joinedWith2","_check$joinedWith2$in","ParameterError","_oldSelf$joinedWith","_oldSelf$joinedWith$i","_changedSelf$joinedWi","_changedSelf$joinedWi2","_MOVE_MEDIA_","_OBSERVE_","getSipUrl","partner","sipUri","_CALL_","sipUrl","media","mediaType","AUDIO","mediaContent","MediaContent","main","VIDEO","_default","exports"],"sources":["selfUtils.ts"],"sourcesContent":["/* eslint-disable default-param-last */\n\nimport {\n _IDLE_,\n _JOINED_,\n _CALL_,\n _WAIT_,\n _MOVE_MEDIA_,\n _OBSERVE_,\n _LEFT_,\n MEETING_END_REASON,\n MEDIA_STATE,\n AUDIO,\n VIDEO,\n MediaContent,\n} from '../constants';\nimport ParameterError from '../common/errors/parameter';\n\nconst SelfUtils: any = {};\nconst PSTN_DEVICE_TYPE = 'PROVISIONAL';\n\n/**\n * parses the relevant values for self: muted, guest, moderator, mediaStatus, state, joinedWith, pstnDevices, creator, id\n * @param {Object} self\n * @param {String} deviceId\n * @returns {undefined}\n */\nSelfUtils.parse = (self: any, deviceId: string) => {\n if (self) {\n const joinedWith = self.devices.find((device) => deviceId === device.url);\n const pstnDevices = self.devices.filter((device) => PSTN_DEVICE_TYPE === device.deviceType);\n\n return {\n remoteMuted: SelfUtils.getRemoteMuted(self),\n unmuteAllowed: SelfUtils.getUnmuteAllowed(self),\n localAudioUnmuteRequested: SelfUtils.getLocalAudioUnmuteRequested(self),\n localAudioUnmuteRequired: SelfUtils.getLocalAudioUnmuteRequired(self),\n lastModified: SelfUtils.getLastModified(self),\n modifiedBy: SelfUtils.getModifiedBy(self),\n guest: self.guest,\n moderator: self.moderator,\n // cumulative media stats\n mediaStatus: SelfUtils.getStatus(self.status),\n // TODO: what should be the status if user has refreshed the page,\n // check the joinedWith parameter and communicate to the user\n state: self.state,\n // TODO: give a proper name . With same device as login or different login`\n // Some times we might have joined with both mobile and web\n joinedWith,\n pstnDevices,\n // current media stats is for the current device who has joined\n currentMediaStatus: SelfUtils.getMediaStatus(joinedWith?.mediaSessions),\n creator: self.isCreator, // check if its used,\n selfId: self.id,\n selfIdentity: SelfUtils.getSelfIdentity(self),\n selfUrl: self.url,\n removed: self.removed,\n roles: SelfUtils.getRoles(self),\n isUserUnadmitted: self.state === _IDLE_ && joinedWith?.intent?.type === _WAIT_,\n layout: SelfUtils.getLayout(self),\n canNotViewTheParticipantList: SelfUtils.canNotViewTheParticipantList(self),\n isSharingBlocked: SelfUtils.isSharingBlocked(self),\n };\n }\n\n return null;\n};\n\nSelfUtils.getLayout = (self) =>\n Array.isArray(self?.controls?.layouts) ? self.controls.layouts[0].type : undefined;\n\nSelfUtils.getRoles = (self) =>\n (self?.controls?.role?.roles || []).reduce((roles, role) => {\n if (role.hasRole) {\n roles.push(role.type);\n }\n\n return roles;\n }, []);\n\nSelfUtils.canNotViewTheParticipantList = (self) => !!self?.canNotViewTheParticipantList;\n\nSelfUtils.isSharingBlocked = (self) => !!self?.isSharingBlocked;\n\nSelfUtils.getSelves = (oldSelf, newSelf, deviceId) => {\n const previous = oldSelf && SelfUtils.parse(oldSelf, deviceId);\n const current = newSelf && SelfUtils.parse(newSelf, deviceId);\n const updates: any = {};\n\n updates.isUserUnadmitted = SelfUtils.isUserUnadmitted(current);\n updates.isUserAdmitted = SelfUtils.isUserAdmitted(previous, current);\n updates.isMutedByOthersChanged = SelfUtils.mutedByOthersChanged(previous, current);\n updates.localAudioUnmuteRequestedByServer = SelfUtils.localAudioUnmuteRequestedByServer(\n previous,\n current\n );\n updates.localAudioUnmuteRequiredByServer = SelfUtils.localAudioUnmuteRequiredByServer(\n previous,\n current\n );\n updates.moderatorChanged = SelfUtils.moderatorChanged(previous, current);\n updates.isMediaInactiveOrReleased = SelfUtils.wasMediaInactiveOrReleased(previous, current);\n updates.isUserObserving = SelfUtils.isDeviceObserving(previous, current);\n updates.layoutChanged = SelfUtils.layoutChanged(previous, current);\n\n updates.isMediaInactive = SelfUtils.isMediaInactive(previous, current);\n updates.audioStateChange =\n previous?.currentMediaStatus.audio !== current.currentMediaStatus.audio;\n updates.videoStateChange =\n previous?.currentMediaStatus.video !== current.currentMediaStatus.video;\n updates.shareStateChange =\n previous?.currentMediaStatus.share !== current.currentMediaStatus.share;\n\n updates.canNotViewTheParticipantListChanged =\n previous?.canNotViewTheParticipantList !== current.canNotViewTheParticipantList;\n updates.isSharingBlockedChanged = previous?.isSharingBlocked !== current.isSharingBlocked;\n\n return {\n previous,\n current,\n updates,\n };\n};\n\n/**\n * Checks if user has joined the meeting\n * @param {Object} self\n * @returns {boolean} isJoined\n */\nSelfUtils.isJoined = (self: any) => self?.state === _JOINED_;\n\n/**\n * Validate if the Meeting Layout Controls Layout has changed.\n *\n * @param {Self} previous - Previous self state\n * @param {Self} current - Current self state [per event]\n * @returns {boolean} - If the MEeting Layout Controls Layout has changed.\n */\nSelfUtils.layoutChanged = (previous: any, current: any) =>\n current?.layout && previous?.layout !== current?.layout;\n\nSelfUtils.isMediaInactive = (previous, current) => {\n if (\n previous &&\n previous.joinedWith &&\n previous.joinedWith.mediaSessions &&\n current &&\n current.joinedWith &&\n current.joinedWith.mediaSessions\n ) {\n const previousMediaStatus = SelfUtils.getMediaStatus(previous.joinedWith.mediaSessions);\n const currentMediaStatus = SelfUtils.getMediaStatus(current.joinedWith.mediaSessions);\n\n if (\n previousMediaStatus.audio &&\n currentMediaStatus.audio &&\n previousMediaStatus.audio.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.audio.state === MEDIA_STATE.inactive &&\n currentMediaStatus.audio.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n if (\n previousMediaStatus.video &&\n currentMediaStatus.video &&\n previousMediaStatus.video.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.video.state === MEDIA_STATE.inactive &&\n currentMediaStatus.video.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n if (\n previousMediaStatus.share &&\n currentMediaStatus.share &&\n previousMediaStatus.share.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.share.state === MEDIA_STATE.inactive &&\n currentMediaStatus.share.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n return false;\n }\n\n return false;\n};\n\nSelfUtils.getLastModified = (self) => {\n if (\n !self ||\n !self.controls ||\n !self.controls.audio ||\n !self.controls.audio.meta ||\n !self.controls.audio.meta.lastModified\n ) {\n return null;\n }\n\n return self.controls.audio.meta.lastModified;\n};\n\nSelfUtils.getModifiedBy = (self) => {\n if (\n !self ||\n !self.controls ||\n !self.controls.audio ||\n !self.controls.audio.meta ||\n !self.controls.audio.meta.modifiedBy\n ) {\n return null;\n }\n\n return self.controls.audio.meta.modifiedBy;\n};\n\n/**\n * get the id from the self object\n * @param {Object} self\n * @returns {String}\n */\nSelfUtils.getSelfIdentity = (self: any) => {\n if (!self && !self.person) {\n return null;\n }\n\n return self.person.id;\n};\n\n/**\n * get the \"remote mute\" property from the self object\n * @param {Object} self\n * @returns {Boolean}\n */\nSelfUtils.getRemoteMuted = (self: any) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return self.controls.audio.muted;\n};\n\nSelfUtils.getLocalAudioUnmuteRequested = (self) => !!self?.controls?.audio?.requestedToUnmute;\n\nSelfUtils.getUnmuteAllowed = (self) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return !self.controls.audio.disallowUnmute;\n};\n\nSelfUtils.getLocalAudioUnmuteRequired = (self) => !!self?.controls?.audio?.localAudioUnmuteRequired;\n\nSelfUtils.getStatus = (status) => ({\n audio: status.audioStatus,\n video: status.videoStatus,\n slides: status.videoSlidesStatus,\n});\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n */\nSelfUtils.wasMediaInactiveOrReleased = (oldSelf: any = {}, changedSelf: any) =>\n oldSelf.joinedWith &&\n oldSelf.joinedWith.state === _JOINED_ &&\n changedSelf.joinedWith &&\n changedSelf.joinedWith.state === _LEFT_ &&\n (changedSelf.joinedWith.reason === MEETING_END_REASON.INACTIVE ||\n changedSelf.joinedWith.reason === MEETING_END_REASON.MEDIA_RELEASED);\n\n/**\n * @param {Object} check\n * @returns {Boolean}\n */\nSelfUtils.isLocusUserUnadmitted = (check: any) =>\n check && check.joinedWith?.intent?.type === _WAIT_ && check.state === _IDLE_;\n\n/**\n * @param {Object} check\n * @returns {Boolean}\n */\nSelfUtils.isLocusUserAdmitted = (check: any) =>\n check && check.joinedWith?.intent?.type !== _WAIT_ && check.state === _JOINED_;\n\n/**\n * @param {Object} self\n * @returns {Boolean}\n * @throws {Error} when self is undefined\n */\nSelfUtils.isUserUnadmitted = (self: object) => {\n if (!self) {\n throw new ParameterError('self must be defined to determine if self is unadmitted as guest.');\n }\n\n return SelfUtils.isLocusUserUnadmitted(self);\n};\n\nSelfUtils.moderatorChanged = (oldSelf, changedSelf) => {\n if (!oldSelf) {\n return true;\n }\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self transitioned moderator status.'\n );\n }\n\n return oldSelf.moderator !== changedSelf.moderator;\n};\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\nSelfUtils.isDeviceObserving = (oldSelf: any, changedSelf: any) =>\n oldSelf &&\n oldSelf.joinedWith?.intent?.type === _MOVE_MEDIA_ &&\n changedSelf &&\n changedSelf.joinedWith?.intent?.type === _OBSERVE_;\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\nSelfUtils.isUserAdmitted = (oldSelf: object, changedSelf: object) => {\n if (!oldSelf) {\n // if there was no previous locus, it couldn't have been admitted yet\n return false;\n }\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self transitioned to admitted as guest.'\n );\n }\n\n return SelfUtils.isLocusUserUnadmitted(oldSelf) && SelfUtils.isLocusUserAdmitted(changedSelf);\n};\n\nSelfUtils.mutedByOthersChanged = (oldSelf, changedSelf) => {\n if (!changedSelf) {\n throw new ParameterError('New self must be defined to determine if self was muted by others.');\n }\n\n if (!oldSelf || oldSelf.remoteMuted === null) {\n if (changedSelf.remoteMuted) {\n return true; // this happens when mute on-entry is enabled\n }\n\n // we don't want to be sending the 'meeting:self:unmutedByOthers' notification on meeting join\n return false;\n }\n\n return (\n changedSelf.remoteMuted !== null &&\n (oldSelf.remoteMuted !== changedSelf.remoteMuted ||\n (changedSelf.remoteMuted && oldSelf.unmuteAllowed !== changedSelf.unmuteAllowed))\n );\n};\n\nSelfUtils.localAudioUnmuteRequestedByServer = (oldSelf: any = {}, changedSelf: any) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self received request to unmute.'\n );\n }\n\n return changedSelf.localAudioUnmuteRequested && !oldSelf.localAudioUnmuteRequested;\n};\n\nSelfUtils.localAudioUnmuteRequiredByServer = (oldSelf: any = {}, changedSelf: any) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if localAudioUnmuteRequired changed.'\n );\n }\n\n return (\n !changedSelf.remoteMuted &&\n changedSelf.localAudioUnmuteRequired &&\n oldSelf.localAudioUnmuteRequired !== changedSelf.localAudioUnmuteRequired\n );\n};\n\n/**\n * extract the sipUrl from the partner\n * @param {Object} partner\n * @param {Object} info\n * @returns {Object}\n */\n\nSelfUtils.getSipUrl = (partner: any, type, sipUri) => {\n // For webex meeting the sipUrl gets updated in info parser\n if (partner && type === _CALL_) {\n return {sipUri: partner.person.sipUrl || partner.person.id};\n }\n\n return {sipUri};\n};\n\nSelfUtils.getMediaStatus = (mediaSessions = []) => {\n const mediaStatus = {\n audio: {},\n video: {},\n share: {},\n };\n\n mediaStatus.audio = mediaSessions.find(\n (media) => media.mediaType === AUDIO && media.mediaContent === MediaContent.main\n );\n mediaStatus.video = mediaSessions.find(\n (media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.main\n );\n mediaStatus.share = mediaSessions.find(\n (media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.slides\n );\n\n return mediaStatus;\n};\n\nexport default SelfUtils;\n"],"mappings":"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"}
@@ -1,8 +1,6 @@
1
1
  /*!
2
2
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
3
  */
4
- import { type MultistreamConnectionConfig } from '@webex/internal-media-core';
5
- export type BundlePolicy = MultistreamConnectionConfig['bundlePolicy'];
6
4
  /**
7
5
  * MediaDirection
8
6
  * @typedef {Object} MediaDirection