@webex/plugin-meetings 3.6.0 → 3.7.0-next.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. package/README.md +2 -1
  2. package/dist/breakouts/breakout.js +1 -1
  3. package/dist/breakouts/index.js +1 -1
  4. package/dist/common/errors/webinar-registration-error.js +50 -0
  5. package/dist/common/errors/webinar-registration-error.js.map +1 -0
  6. package/dist/config.js +4 -1
  7. package/dist/config.js.map +1 -1
  8. package/dist/constants.js +40 -2
  9. package/dist/constants.js.map +1 -1
  10. package/dist/controls-options-manager/enums.js +1 -0
  11. package/dist/controls-options-manager/enums.js.map +1 -1
  12. package/dist/controls-options-manager/index.js +10 -3
  13. package/dist/controls-options-manager/index.js.map +1 -1
  14. package/dist/controls-options-manager/types.js.map +1 -1
  15. package/dist/controls-options-manager/util.js +12 -0
  16. package/dist/controls-options-manager/util.js.map +1 -1
  17. package/dist/index.js +7 -0
  18. package/dist/index.js.map +1 -1
  19. package/dist/interpretation/index.js +1 -1
  20. package/dist/interpretation/siLanguage.js +1 -1
  21. package/dist/locus-info/controlsUtils.js +28 -4
  22. package/dist/locus-info/controlsUtils.js.map +1 -1
  23. package/dist/locus-info/fullState.js +2 -1
  24. package/dist/locus-info/fullState.js.map +1 -1
  25. package/dist/locus-info/index.js +61 -3
  26. package/dist/locus-info/index.js.map +1 -1
  27. package/dist/locus-info/parser.js +5 -1
  28. package/dist/locus-info/parser.js.map +1 -1
  29. package/dist/meeting/in-meeting-actions.js +29 -1
  30. package/dist/meeting/in-meeting-actions.js.map +1 -1
  31. package/dist/meeting/index.js +786 -528
  32. package/dist/meeting/index.js.map +1 -1
  33. package/dist/meeting/locusMediaRequest.js +2 -6
  34. package/dist/meeting/locusMediaRequest.js.map +1 -1
  35. package/dist/meeting/muteState.js +5 -2
  36. package/dist/meeting/muteState.js.map +1 -1
  37. package/dist/meeting/request.js +21 -29
  38. package/dist/meeting/request.js.map +1 -1
  39. package/dist/meeting/util.js +98 -61
  40. package/dist/meeting/util.js.map +1 -1
  41. package/dist/meeting-info/meeting-info-v2.js +68 -17
  42. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  43. package/dist/meetings/index.js +29 -2
  44. package/dist/meetings/index.js.map +1 -1
  45. package/dist/members/index.js +3 -2
  46. package/dist/members/index.js.map +1 -1
  47. package/dist/members/util.js +13 -7
  48. package/dist/members/util.js.map +1 -1
  49. package/dist/metrics/constants.js +4 -1
  50. package/dist/metrics/constants.js.map +1 -1
  51. package/dist/multistream/remoteMedia.js +4 -0
  52. package/dist/multistream/remoteMedia.js.map +1 -1
  53. package/dist/reachability/clusterReachability.js +12 -15
  54. package/dist/reachability/clusterReachability.js.map +1 -1
  55. package/dist/reachability/index.js +433 -136
  56. package/dist/reachability/index.js.map +1 -1
  57. package/dist/{rtcMetrics/constants.js → reachability/reachability.types.js} +1 -5
  58. package/dist/reachability/reachability.types.js.map +1 -0
  59. package/dist/reachability/request.js +23 -9
  60. package/dist/reachability/request.js.map +1 -1
  61. package/dist/recording-controller/enums.js +8 -4
  62. package/dist/recording-controller/enums.js.map +1 -1
  63. package/dist/recording-controller/index.js +18 -9
  64. package/dist/recording-controller/index.js.map +1 -1
  65. package/dist/recording-controller/util.js +13 -9
  66. package/dist/recording-controller/util.js.map +1 -1
  67. package/dist/roap/index.js +5 -7
  68. package/dist/roap/index.js.map +1 -1
  69. package/dist/roap/request.js +45 -79
  70. package/dist/roap/request.js.map +1 -1
  71. package/dist/roap/turnDiscovery.js +3 -6
  72. package/dist/roap/turnDiscovery.js.map +1 -1
  73. package/dist/{common/errors/parameter.d.ts → types/common/errors/webinar-registration-error.d.ts} +4 -5
  74. package/dist/types/config.d.ts +3 -0
  75. package/dist/types/constants.d.ts +33 -0
  76. package/dist/types/controls-options-manager/enums.d.ts +2 -1
  77. package/dist/types/controls-options-manager/index.d.ts +2 -1
  78. package/dist/types/controls-options-manager/types.d.ts +2 -0
  79. package/dist/types/index.d.ts +2 -1
  80. package/dist/types/locus-info/index.d.ts +9 -0
  81. package/dist/types/meeting/in-meeting-actions.d.ts +28 -0
  82. package/dist/types/meeting/index.d.ts +34 -3
  83. package/dist/types/meeting/locusMediaRequest.d.ts +2 -3
  84. package/dist/types/meeting/muteState.d.ts +2 -1
  85. package/dist/types/meeting/request.d.ts +2 -2
  86. package/dist/types/meeting/util.d.ts +2 -2
  87. package/dist/types/meeting-info/meeting-info-v2.d.ts +23 -0
  88. package/dist/types/meetings/index.d.ts +13 -1
  89. package/dist/types/members/index.d.ts +2 -1
  90. package/dist/types/members/util.d.ts +5 -1
  91. package/dist/types/metrics/constants.d.ts +3 -0
  92. package/dist/types/multistream/remoteMedia.d.ts +1 -0
  93. package/dist/types/reachability/clusterReachability.d.ts +1 -10
  94. package/dist/types/reachability/index.d.ts +74 -35
  95. package/dist/types/reachability/reachability.types.d.ts +64 -0
  96. package/dist/types/reachability/request.d.ts +5 -1
  97. package/dist/types/recording-controller/enums.d.ts +5 -2
  98. package/dist/types/recording-controller/index.d.ts +1 -0
  99. package/dist/types/recording-controller/util.d.ts +2 -1
  100. package/dist/types/roap/request.d.ts +1 -13
  101. package/dist/webinar/index.js +64 -19
  102. package/dist/webinar/index.js.map +1 -1
  103. package/package.json +22 -22
  104. package/src/common/errors/webinar-registration-error.ts +27 -0
  105. package/src/config.ts +3 -0
  106. package/src/constants.ts +41 -0
  107. package/src/controls-options-manager/enums.ts +1 -0
  108. package/src/controls-options-manager/index.ts +19 -2
  109. package/src/controls-options-manager/types.ts +2 -0
  110. package/src/controls-options-manager/util.ts +12 -0
  111. package/src/index.ts +2 -0
  112. package/src/locus-info/controlsUtils.ts +46 -2
  113. package/src/locus-info/fullState.ts +1 -0
  114. package/src/locus-info/index.ts +60 -0
  115. package/src/locus-info/parser.ts +8 -1
  116. package/src/meeting/in-meeting-actions.ts +58 -0
  117. package/src/meeting/index.ts +247 -22
  118. package/src/meeting/locusMediaRequest.ts +4 -8
  119. package/src/meeting/muteState.ts +6 -2
  120. package/src/meeting/request.ts +4 -11
  121. package/src/meeting/util.ts +31 -6
  122. package/src/meeting-info/meeting-info-v2.ts +51 -0
  123. package/src/meetings/index.ts +74 -40
  124. package/src/members/index.ts +4 -2
  125. package/src/members/util.ts +4 -1
  126. package/src/metrics/constants.ts +3 -0
  127. package/src/multistream/remoteMedia.ts +5 -0
  128. package/src/reachability/clusterReachability.ts +5 -15
  129. package/src/reachability/index.ts +285 -77
  130. package/src/reachability/reachability.types.ts +85 -0
  131. package/src/reachability/request.ts +55 -30
  132. package/src/recording-controller/enums.ts +5 -2
  133. package/src/recording-controller/index.ts +17 -4
  134. package/src/recording-controller/util.ts +20 -5
  135. package/src/roap/index.ts +4 -5
  136. package/src/roap/request.ts +32 -44
  137. package/src/roap/turnDiscovery.ts +2 -4
  138. package/src/webinar/index.ts +62 -16
  139. package/test/unit/spec/controls-options-manager/index.js +56 -32
  140. package/test/unit/spec/controls-options-manager/util.js +44 -0
  141. package/test/unit/spec/locus-info/controlsUtils.js +80 -4
  142. package/test/unit/spec/locus-info/index.js +88 -2
  143. package/test/unit/spec/meeting/in-meeting-actions.ts +31 -1
  144. package/test/unit/spec/meeting/index.js +346 -82
  145. package/test/unit/spec/meeting/locusMediaRequest.ts +18 -11
  146. package/test/unit/spec/meeting/muteState.js +8 -4
  147. package/test/unit/spec/meeting/request.js +3 -26
  148. package/test/unit/spec/meeting/utils.js +71 -14
  149. package/test/unit/spec/meeting-info/meetinginfov2.js +37 -0
  150. package/test/unit/spec/meetings/index.js +41 -6
  151. package/test/unit/spec/members/index.js +25 -2
  152. package/test/unit/spec/members/request.js +37 -3
  153. package/test/unit/spec/members/utils.js +110 -1
  154. package/test/unit/spec/multistream/remoteMedia.ts +16 -2
  155. package/test/unit/spec/reachability/clusterReachability.ts +7 -0
  156. package/test/unit/spec/reachability/index.ts +265 -1
  157. package/test/unit/spec/reachability/request.js +56 -15
  158. package/test/unit/spec/recording-controller/index.js +61 -5
  159. package/test/unit/spec/recording-controller/util.js +39 -3
  160. package/test/unit/spec/roap/index.ts +1 -1
  161. package/test/unit/spec/roap/request.ts +51 -109
  162. package/test/unit/spec/roap/turnDiscovery.ts +202 -147
  163. package/test/unit/spec/webinar/index.ts +128 -15
  164. package/dist/annotation/annotation.types.d.ts +0 -42
  165. package/dist/annotation/constants.d.ts +0 -31
  166. package/dist/annotation/index.d.ts +0 -117
  167. package/dist/breakouts/breakout.d.ts +0 -8
  168. package/dist/breakouts/collection.d.ts +0 -5
  169. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  170. package/dist/breakouts/events.d.ts +0 -8
  171. package/dist/breakouts/index.d.ts +0 -5
  172. package/dist/breakouts/request.d.ts +0 -22
  173. package/dist/breakouts/utils.d.ts +0 -15
  174. package/dist/common/browser-detection.d.ts +0 -9
  175. package/dist/common/collection.d.ts +0 -48
  176. package/dist/common/config.d.ts +0 -2
  177. package/dist/common/errors/captcha-error.d.ts +0 -15
  178. package/dist/common/errors/intent-to-join.d.ts +0 -16
  179. package/dist/common/errors/join-meeting.d.ts +0 -17
  180. package/dist/common/errors/media.d.ts +0 -15
  181. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  182. package/dist/common/errors/password-error.d.ts +0 -15
  183. package/dist/common/errors/permission.d.ts +0 -14
  184. package/dist/common/errors/reclaim-host-role-error.js +0 -149
  185. package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
  186. package/dist/common/errors/reclaim-host-role-errors.d.ts +0 -60
  187. package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
  188. package/dist/common/errors/reconnection-in-progress.js +0 -33
  189. package/dist/common/errors/reconnection-in-progress.js.map +0 -1
  190. package/dist/common/errors/reconnection.d.ts +0 -15
  191. package/dist/common/errors/stats.d.ts +0 -15
  192. package/dist/common/errors/webex-errors.d.ts +0 -93
  193. package/dist/common/errors/webex-meetings-error.d.ts +0 -20
  194. package/dist/common/events/events-scope.d.ts +0 -17
  195. package/dist/common/events/events.d.ts +0 -12
  196. package/dist/common/events/trigger-proxy.d.ts +0 -2
  197. package/dist/common/events/util.d.ts +0 -2
  198. package/dist/common/logs/logger-config.d.ts +0 -2
  199. package/dist/common/logs/logger-proxy.d.ts +0 -2
  200. package/dist/common/logs/request.d.ts +0 -36
  201. package/dist/common/queue.d.ts +0 -34
  202. package/dist/config.d.ts +0 -72
  203. package/dist/constants.d.ts +0 -1088
  204. package/dist/controls-options-manager/constants.d.ts +0 -4
  205. package/dist/controls-options-manager/enums.d.ts +0 -15
  206. package/dist/controls-options-manager/index.d.ts +0 -136
  207. package/dist/controls-options-manager/types.d.ts +0 -43
  208. package/dist/controls-options-manager/util.d.ts +0 -1
  209. package/dist/index.d.ts +0 -7
  210. package/dist/interceptors/index.d.ts +0 -2
  211. package/dist/interceptors/locusRetry.d.ts +0 -27
  212. package/dist/interpretation/collection.d.ts +0 -5
  213. package/dist/interpretation/index.d.ts +0 -5
  214. package/dist/interpretation/siLanguage.d.ts +0 -5
  215. package/dist/locus-info/controlsUtils.d.ts +0 -2
  216. package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
  217. package/dist/locus-info/fullState.d.ts +0 -2
  218. package/dist/locus-info/hostUtils.d.ts +0 -2
  219. package/dist/locus-info/index.d.ts +0 -322
  220. package/dist/locus-info/infoUtils.d.ts +0 -2
  221. package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
  222. package/dist/locus-info/parser.d.ts +0 -272
  223. package/dist/locus-info/selfUtils.d.ts +0 -2
  224. package/dist/media/index.d.ts +0 -34
  225. package/dist/media/properties.d.ts +0 -93
  226. package/dist/media/util.d.ts +0 -2
  227. package/dist/mediaQualityMetrics/config.d.ts +0 -241
  228. package/dist/mediaQualityMetrics/config.js +0 -502
  229. package/dist/mediaQualityMetrics/config.js.map +0 -1
  230. package/dist/meeting/effectsState.js +0 -260
  231. package/dist/meeting/effectsState.js.map +0 -1
  232. package/dist/meeting/in-meeting-actions.d.ts +0 -167
  233. package/dist/meeting/index.d.ts +0 -1825
  234. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  235. package/dist/meeting/muteState.d.ts +0 -178
  236. package/dist/meeting/request.d.ts +0 -295
  237. package/dist/meeting/request.type.d.ts +0 -11
  238. package/dist/meeting/state.d.ts +0 -9
  239. package/dist/meeting/util.d.ts +0 -119
  240. package/dist/meeting/voicea-meeting.d.ts +0 -16
  241. package/dist/meeting-info/collection.d.ts +0 -20
  242. package/dist/meeting-info/index.d.ts +0 -69
  243. package/dist/meeting-info/meeting-info-v2.d.ts +0 -123
  244. package/dist/meeting-info/request.d.ts +0 -22
  245. package/dist/meeting-info/util.d.ts +0 -2
  246. package/dist/meeting-info/utilv2.d.ts +0 -2
  247. package/dist/meetings/collection.d.ts +0 -40
  248. package/dist/meetings/index.d.ts +0 -390
  249. package/dist/meetings/meetings.types.d.ts +0 -4
  250. package/dist/meetings/request.d.ts +0 -27
  251. package/dist/meetings/util.d.ts +0 -18
  252. package/dist/member/index.d.ts +0 -160
  253. package/dist/member/member.types.js +0 -17
  254. package/dist/member/member.types.js.map +0 -1
  255. package/dist/member/types.d.ts +0 -32
  256. package/dist/member/util.d.ts +0 -2
  257. package/dist/members/collection.d.ts +0 -29
  258. package/dist/members/index.d.ts +0 -353
  259. package/dist/members/request.d.ts +0 -114
  260. package/dist/members/types.d.ts +0 -25
  261. package/dist/members/util.d.ts +0 -215
  262. package/dist/metrics/config.js +0 -276
  263. package/dist/metrics/config.js.map +0 -1
  264. package/dist/metrics/constants.d.ts +0 -70
  265. package/dist/metrics/index.d.ts +0 -45
  266. package/dist/multistream/mediaRequestManager.d.ts +0 -119
  267. package/dist/multistream/receiveSlot.d.ts +0 -68
  268. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  269. package/dist/multistream/remoteMedia.d.ts +0 -72
  270. package/dist/multistream/remoteMediaGroup.d.ts +0 -49
  271. package/dist/multistream/remoteMediaManager.d.ts +0 -300
  272. package/dist/multistream/sendSlotManager.d.ts +0 -69
  273. package/dist/networkQualityMonitor/index.d.ts +0 -70
  274. package/dist/networkQualityMonitor/index.js +0 -221
  275. package/dist/networkQualityMonitor/index.js.map +0 -1
  276. package/dist/peer-connection-manager/index.js +0 -671
  277. package/dist/peer-connection-manager/index.js.map +0 -1
  278. package/dist/peer-connection-manager/util.js +0 -109
  279. package/dist/peer-connection-manager/util.js.map +0 -1
  280. package/dist/personal-meeting-room/index.d.ts +0 -47
  281. package/dist/personal-meeting-room/request.d.ts +0 -14
  282. package/dist/personal-meeting-room/util.d.ts +0 -2
  283. package/dist/reachability/clusterReachability.d.ts +0 -109
  284. package/dist/reachability/index.d.ts +0 -105
  285. package/dist/reachability/request.d.ts +0 -39
  286. package/dist/reachability/util.d.ts +0 -8
  287. package/dist/reactions/constants.d.ts +0 -3
  288. package/dist/reactions/reactions.d.ts +0 -4
  289. package/dist/reactions/reactions.type.d.ts +0 -52
  290. package/dist/reconnection-manager/index.d.ts +0 -136
  291. package/dist/recording-controller/enums.d.ts +0 -7
  292. package/dist/recording-controller/index.d.ts +0 -207
  293. package/dist/recording-controller/util.d.ts +0 -14
  294. package/dist/roap/collection.js +0 -62
  295. package/dist/roap/collection.js.map +0 -1
  296. package/dist/roap/handler.js +0 -275
  297. package/dist/roap/handler.js.map +0 -1
  298. package/dist/roap/index.d.ts +0 -86
  299. package/dist/roap/request.d.ts +0 -39
  300. package/dist/roap/state.js +0 -126
  301. package/dist/roap/state.js.map +0 -1
  302. package/dist/roap/turnDiscovery.d.ts +0 -155
  303. package/dist/roap/util.js +0 -75
  304. package/dist/roap/util.js.map +0 -1
  305. package/dist/rtcMetrics/constants.d.ts +0 -4
  306. package/dist/rtcMetrics/constants.js.map +0 -1
  307. package/dist/rtcMetrics/index.d.ts +0 -61
  308. package/dist/rtcMetrics/index.js +0 -197
  309. package/dist/rtcMetrics/index.js.map +0 -1
  310. package/dist/statsAnalyzer/global.d.ts +0 -36
  311. package/dist/statsAnalyzer/global.js +0 -126
  312. package/dist/statsAnalyzer/global.js.map +0 -1
  313. package/dist/statsAnalyzer/index.d.ts +0 -217
  314. package/dist/statsAnalyzer/index.js +0 -1013
  315. package/dist/statsAnalyzer/index.js.map +0 -1
  316. package/dist/statsAnalyzer/mqaUtil.d.ts +0 -48
  317. package/dist/statsAnalyzer/mqaUtil.js +0 -179
  318. package/dist/statsAnalyzer/mqaUtil.js.map +0 -1
  319. package/dist/transcription/index.d.ts +0 -64
  320. package/dist/types/common/errors/reconnection-in-progress.d.ts +0 -9
  321. package/dist/types/mediaQualityMetrics/config.d.ts +0 -241
  322. package/dist/types/networkQualityMonitor/index.d.ts +0 -70
  323. package/dist/types/rtcMetrics/constants.d.ts +0 -4
  324. package/dist/types/rtcMetrics/index.d.ts +0 -71
  325. package/dist/types/statsAnalyzer/global.d.ts +0 -36
  326. package/dist/types/statsAnalyzer/index.d.ts +0 -217
  327. package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -48
  328. package/dist/webinar/collection.d.ts +0 -16
  329. package/dist/webinar/index.d.ts +0 -5
@@ -29,32 +29,145 @@ describe('plugin-meetings', () => {
29
29
  });
30
30
  });
31
31
 
32
- describe('#webcastUrlUpdate', () => {
33
- it('sets the webcast url', () => {
34
- webinar.webcastUrlUpdate('newUrl');
32
+ describe('#updateWebcastUrl', () => {
33
+ it('sets the webcast instance url', () => {
34
+ webinar.updateWebcastUrl({resources: {webcastInstance: {url:'newUrl'}}});
35
35
 
36
- assert.equal(webinar.webcastUrl, 'newUrl');
36
+ assert.equal(webinar.webcastInstanceUrl, 'newUrl');
37
37
  });
38
38
  });
39
39
 
40
- describe('#webinarAttendeesSearchingUrlUpdate', () => {
41
- it('sets the webinarAttendeesSearching url', () => {
42
- webinar.webinarAttendeesSearchingUrlUpdate('newUrl');
43
40
 
44
- assert.equal(webinar.webinarAttendeesSearchingUrl, 'newUrl');
45
- });
41
+ describe('#updateCanManageWebcast', () => {
42
+ it('sets the webcast instance url when valid', () => {
43
+ webinar.updateWebcastUrl({resources: {webcastInstance: {url:'newUrl'}}});
44
+ assert.equal(webinar.webcastInstanceUrl, 'newUrl', 'webcast instance URL should be updated');
45
+ });
46
+
47
+ it('handles missing resources gracefully', () => {
48
+ webinar.updateWebcastUrl({});
49
+ assert.isUndefined(webinar.webcastInstanceUrl, 'webcast instance URL should be undefined');
50
+ });
51
+
52
+ it('handles missing webcastInstance gracefully', () => {
53
+ webinar.updateWebcastUrl({resources: {}});
54
+ assert.isUndefined(webinar.webcastInstanceUrl, 'webcast instance URL should be undefined');
55
+ });
56
+
57
+ it('handles missing URL gracefully', () => {
58
+ webinar.updateWebcastUrl({resources: {webcastInstance: {}}});
59
+ assert.isUndefined(webinar.webcastInstanceUrl, 'webcast instance URL should be undefined');
60
+ });
46
61
  });
47
62
 
48
- describe('#updateCanManageWebcast', () => {
49
- it('update canManageWebcast', () => {
50
- webinar.updateCanManageWebcast(true);
63
+ describe('#updateRoleChanged', () => {
64
+ it('updates roles when promoted from attendee to panelist', () => {
65
+ const payload = {
66
+ oldRoles: ['ATTENDEE'],
67
+ newRoles: ['PANELIST']
68
+ };
69
+
70
+ const result = webinar.updateRoleChanged(payload);
51
71
 
52
- assert.equal(webinar.canManageWebcast, true);
72
+ assert.equal(webinar.selfIsPanelist, true, 'self should be a panelist');
73
+ assert.equal(webinar.selfIsAttendee, false, 'self should not be an attendee');
74
+ assert.equal(webinar.canManageWebcast, false, 'self should not have manage webcast capability');
75
+ assert.equal(result.isPromoted, true, 'should indicate promotion');
76
+ assert.equal(result.isDemoted, false, 'should not indicate demotion');
77
+ });
53
78
 
54
- webinar.updateCanManageWebcast(false);
79
+ it('updates roles when demoted from panelist to attendee', () => {
80
+ const payload = {
81
+ oldRoles: ['PANELIST'],
82
+ newRoles: ['ATTENDEE']
83
+ };
55
84
 
56
- assert.equal(webinar.canManageWebcast, false);
85
+ const result = webinar.updateRoleChanged(payload);
86
+
87
+ assert.equal(webinar.selfIsPanelist, false, 'self should not be a panelist');
88
+ assert.equal(webinar.selfIsAttendee, true, 'self should be an attendee');
89
+ assert.equal(webinar.canManageWebcast, false, 'self should not have manage webcast capability');
90
+ assert.equal(result.isPromoted, false, 'should not indicate promotion');
91
+ assert.equal(result.isDemoted, true, 'should indicate demotion');
92
+ });
93
+
94
+ it('updates roles when promoted to moderator', () => {
95
+ const payload = {
96
+ oldRoles: ['PANELIST'],
97
+ newRoles: ['MODERATOR']
98
+ };
99
+
100
+ const result = webinar.updateRoleChanged(payload);
101
+
102
+ assert.equal(webinar.selfIsPanelist, false, 'self should not be a panelist');
103
+ assert.equal(webinar.selfIsAttendee, false, 'self should not be an attendee');
104
+ assert.equal(webinar.canManageWebcast, true, 'self should have manage webcast capability');
105
+ assert.equal(result.isPromoted, false, 'should not indicate promotion');
106
+ assert.equal(result.isDemoted, false, 'should not indicate demotion');
107
+ });
108
+
109
+ it('updates roles when unchanged (remains as panelist)', () => {
110
+ const payload = {
111
+ oldRoles: ['PANELIST'],
112
+ newRoles: ['PANELIST']
113
+ };
114
+
115
+ const result = webinar.updateRoleChanged(payload);
116
+
117
+ assert.equal(webinar.selfIsPanelist, true, 'self should remain a panelist');
118
+ assert.equal(webinar.selfIsAttendee, false, 'self should not be an attendee');
119
+ assert.equal(webinar.canManageWebcast, false, 'self should not have manage webcast capability');
120
+ assert.equal(result.isPromoted, false, 'should not indicate promotion');
121
+ assert.equal(result.isDemoted, false, 'should not indicate demotion');
122
+ });
123
+ });
124
+
125
+ describe("#setPracticeSessionState", () => {
126
+ [true, false].forEach((enabled) => {
127
+ it(`sends a PATCH request to ${enabled ? "enable" : "disable"} the practice session`, async () => {
128
+ const result = await webinar.setPracticeSessionState(enabled);
129
+ assert.calledOnce(webex.request);
130
+ assert.calledWith(webex.request, {
131
+ method: "PATCH",
132
+ uri: `${webinar.locusUrl}/controls`,
133
+ body: {
134
+ practiceSession: { enabled }
135
+ }
136
+ });
137
+ assert.equal(result, "REQUEST_RETURN_VALUE", "should return the resolved value from the request");
57
138
  });
58
139
  });
140
+
141
+ it('handles API call failures gracefully', async () => {
142
+ webex.request.rejects(new Error('API_ERROR'));
143
+ const errorLogger = sinon.stub(LoggerProxy.logger, 'error');
144
+
145
+ try {
146
+ await webinar.setPracticeSessionState(true);
147
+ assert.fail('setPracticeSessionState should throw an error');
148
+ } catch (error) {
149
+ assert.equal(error.message, 'API_ERROR', 'should throw the correct error');
150
+ assert.calledOnce(errorLogger);
151
+ assert.calledWith(errorLogger, 'Meeting:webinar#setPracticeSessionState failed', sinon.match.instanceOf(Error));
152
+ }
153
+
154
+ errorLogger.restore();
155
+ });
156
+ });
157
+
158
+ describe('#updatePracticeSessionStatus', () => {
159
+ it('sets PS state true', () => {
160
+ webinar.updatePracticeSessionStatus({enabled: true});
161
+
162
+ assert.equal(webinar.practiceSessionEnabled, true);
163
+ });
164
+ it('sets PS state true', () => {
165
+ webinar.updatePracticeSessionStatus({enabled: false});
166
+
167
+ assert.equal(webinar.practiceSessionEnabled, false);
168
+ });
169
+ });
170
+
171
+
59
172
  })
60
173
  })
@@ -1,42 +0,0 @@
1
- import { ANNOTATION_POLICY } from './constants';
2
- /**
3
- * Type for an StrokeData Object
4
- */
5
- type StrokeData = {
6
- deviceId: string;
7
- toUserId: string;
8
- requesterId: string;
9
- content: string;
10
- shareInstanceId: string;
11
- encryptionKeyUrl: string;
12
- version: string;
13
- };
14
- type RequestData = {
15
- toUserId: string;
16
- toDeviceUrl: string;
17
- shareInstanceId: string;
18
- };
19
- type CommandRequestBody = {
20
- actionType: string;
21
- resourceType: string;
22
- shareInstanceId: string;
23
- receivers?: any[];
24
- };
25
- /**
26
- * Type for an annotation Object include annotation version and privilege
27
- */
28
- type AnnotationInfo = {
29
- version: string;
30
- policy: ANNOTATION_POLICY;
31
- };
32
- interface IAnnotationChannel {
33
- acceptRequest: (approval: any) => undefined | Promise<void>;
34
- declineRequest: (approval: any) => undefined | Promise<void>;
35
- closeAnnotation: (requestData: RequestData) => undefined | Promise<void>;
36
- approveAnnotation: (requestData: RequestData) => undefined | Promise<void>;
37
- cancelApproveAnnotation: (requestData: RequestData, approval: any) => undefined | Promise<void>;
38
- sendStrokeData: (strokeData: StrokeData) => void;
39
- approvalUrlUpdate: (approvalUrl: string) => void;
40
- locusUrlUpdate: (locusUrl: string) => void;
41
- }
42
- export type { StrokeData, RequestData, CommandRequestBody, IAnnotationChannel, AnnotationInfo };
@@ -1,31 +0,0 @@
1
- export declare const EVENT_TRIGGERS: {
2
- ANNOTATION_STROKE_DATA: string;
3
- ANNOTATION_COMMAND: string;
4
- };
5
- export declare const ANNOTATION_RESOURCE_TYPE = "AnnotationOnShare";
6
- export declare const ANNOTATION_RELAY_TYPES: {
7
- ANNOTATION_CLIENT: string;
8
- };
9
- export declare const ANNOTATION_STATUS: {
10
- NO_ANNOTATION: string;
11
- RUNNING_ANNOTATION: string;
12
- };
13
- export declare enum ANNOTATION_POLICY {
14
- ANYONE_CAN_ANNOTATE = "AnyoneCanAnnotate",
15
- APPROVAL = "Approval",
16
- ANNOTATION_NOT_ALLOWED = "AnnotationNotAllowed"
17
- }
18
- export declare const ANNOTATION_REQUEST_TYPE: {
19
- ANNOTATION_MESSAGE: string;
20
- };
21
- export declare const enum ANNOTATION_ACTION_TYPE {
22
- REQUESTED = "REQUESTED",
23
- ACCEPTED = "ACCEPTED",
24
- DECLINED = "DECLINED",
25
- OFFERED = "OFFERED",
26
- CANCELED = "CANCELED",
27
- EXPIRED = "EXPIRED",
28
- REVOKED = "REVOKED",
29
- CLOSED = "CLOSED"
30
- }
31
- export declare const ANNOTATION = "annotation";
@@ -1,117 +0,0 @@
1
- import { WebexPlugin } from '@webex/webex-core';
2
- import { StrokeData, RequestData, IAnnotationChannel } from './annotation.types';
3
- /**
4
- * @description Annotation to handle LLM and Mercury message and locus API
5
- * @class
6
- */
7
- declare class AnnotationChannel extends WebexPlugin implements IAnnotationChannel {
8
- namespace: string;
9
- private seqNum;
10
- hasSubscribedToEvents: boolean;
11
- approvalUrl: string;
12
- locusUrl: string;
13
- deviceUrl: string;
14
- /**
15
- * Initializes annotation module
16
- */
17
- constructor(...args: any[]);
18
- /**
19
- * Process Stroke Data
20
- * @param {object} data
21
- * @returns {void}
22
- */
23
- private processStrokeMessage;
24
- /** bind all events from mercury
25
- * @param {Object} e
26
- * @returns {undefined}
27
- */
28
- private eventCommandProcessor;
29
- /** bind all events from llm
30
- * @param {Object} e
31
- * @returns {undefined}
32
- */
33
- private eventDataProcessor;
34
- /**
35
- * Listen to websocket messages
36
- * @returns {undefined}
37
- */
38
- private listenToEvents;
39
- /**
40
- * set locusUrl
41
- * @param {string} locusUrl
42
- * @returns {void}
43
- */
44
- locusUrlUpdate(locusUrl: string): void;
45
- /**
46
- * set approved url
47
- * @param {string} approvalUrl
48
- * @returns {void}
49
- */
50
- approvalUrlUpdate(approvalUrl: string): void;
51
- /**
52
- * accept request
53
- * @param {object} approval
54
- * @returns {Promise}
55
- */
56
- acceptRequest(approval: any): any;
57
- /**
58
- * presenter declined request annotation
59
- * @param {approval} approval
60
- * @returns {Promise}
61
- */
62
- declineRequest(approval: any): any;
63
- /**
64
- * request approved annotation
65
- * @param {RequestData} requestData
66
- * @returns {Promise}
67
- */
68
- approveAnnotation(requestData: RequestData): Promise<void>;
69
- /**
70
- * cancel approved annotation
71
- * @param {object} requestData
72
- * @param {object} approval
73
- * @returns {Promise}
74
- */
75
- cancelApproveAnnotation(requestData: RequestData, approval: any): any;
76
- /**
77
- * close annotation
78
- * @param {object} requestData
79
- * @returns {Promise}
80
- */
81
- closeAnnotation(requestData: RequestData): Promise<void>;
82
- /**
83
- * send annotation command
84
- * @param {ANNOTATION_ACTION_TYPE} actionType
85
- * @param {RequestData} requestData
86
- * @returns {Promise}
87
- */
88
- private sendAnnotationAction;
89
- /**
90
- * decrypt data
91
- * @param {string} encryptionKeyUrl
92
- * @param {string} content encrypted content
93
- * @returns {string} decrypted content
94
- */
95
- private decryptContent;
96
- /**
97
- * encrypt data
98
- * @param {string} encryptionKeyUrl
99
- * @param {string} content original content
100
- * @returns {string} encrypted content
101
- */
102
- private encryptContent;
103
- /**
104
- * Sends stroke data to presenter
105
- * @param {StrokeData} strokeData
106
- * @returns {void}
107
- */
108
- sendStrokeData: (strokeData: StrokeData) => void;
109
- /**
110
- * private encrypted the strokes data
111
- * @param {string} encryptedContent
112
- * @param {StrokeData} strokeData
113
- * @returns {void}
114
- */
115
- private publishEncrypted;
116
- }
117
- export default AnnotationChannel;
@@ -1,8 +0,0 @@
1
- /*!
2
- * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
3
- */
4
- /**
5
- * @class
6
- */
7
- declare const Breakout: any;
8
- export default Breakout;
@@ -1,5 +0,0 @@
1
- /*!
2
- * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
3
- */
4
- declare const BreakoutCollection: any;
5
- export default BreakoutCollection;
@@ -1,15 +0,0 @@
1
- /**
2
- * Extended Error object to signify breakout related errors
3
- */
4
- export default class BreakoutEditLockedError extends Error {
5
- code: any;
6
- error: any;
7
- sdkMessage: any;
8
- /**
9
- *
10
- * @constructor
11
- * @param {String} [message]
12
- * @param {Object} [error]
13
- */
14
- constructor(message?: string, error?: any);
15
- }
@@ -1,8 +0,0 @@
1
- import { ClientEvent } from '@webex/internal-plugin-metrics';
2
- declare const breakoutEvent: {
3
- onBreakoutMoveRequest: (eventInfo: any, submitClientEvent: any) => void;
4
- onBreakoutMoveResponse: (eventInfo: any, submitClientEvent: any) => void;
5
- onBreakoutJoinResponse: (eventInfo: any, submitClientEvent: any) => void;
6
- postMoveCallAnalyzer: (event: ClientEvent['name'], eventInfo: any, submitClientEvent: any) => void;
7
- };
8
- export default breakoutEvent;
@@ -1,5 +0,0 @@
1
- /**
2
- * @class Breakouts
3
- */
4
- declare const Breakouts: any;
5
- export default Breakouts;
@@ -1,22 +0,0 @@
1
- import { StatelessWebexPlugin } from '@webex/webex-core';
2
- /**
3
- * @class BreakoutRequest
4
- */
5
- export default class BreakoutRequest extends StatelessWebexPlugin {
6
- /**
7
- * Broadcast message to all breakout session's participants
8
- * @param {String} url
9
- * @param {String} message
10
- * @param {Object} options
11
- * @param {string} groupId
12
- * @param {string} sessionId
13
- * @returns {Promise}
14
- */
15
- broadcast({ url, message, options, groupId, sessionId, }: {
16
- url: string;
17
- message: string;
18
- options?: object;
19
- groupId: string;
20
- sessionId?: string;
21
- }): any;
22
- }
@@ -1,15 +0,0 @@
1
- export declare const getBroadcastRoles: (options: any) => string[];
2
- /**
3
- * Deals with all kinds of errors of breakout service
4
- * @param {object} error // one of the breakout service error
5
- * @param {string} position // position of the error occur
6
- * @returns {object}
7
- */
8
- export declare const boServiceErrorHandler: (error: any, position: string) => any;
9
- /**
10
- *
11
- * @param {object} breakout
12
- * @param {string} newSessionType
13
- * @returns {boolean}
14
- */
15
- export declare const isSessionTypeChangedFromSessionToMain: (breakout: any, newSessionType: any) => boolean;
@@ -1,9 +0,0 @@
1
- /// <reference types="lodash" />
2
- declare const _default: ((agent?: any) => {
3
- getOSName: () => any;
4
- getOSVersion: () => any;
5
- getBrowserName: () => any;
6
- getBrowserVersion: () => any;
7
- isBrowser: (name: any) => boolean;
8
- }) & import("lodash").MemoizedFunction;
9
- export default _default;
@@ -1,48 +0,0 @@
1
- /**
2
- * @class Collection
3
- */
4
- export default class Collection {
5
- namespace: string;
6
- propertyName: string;
7
- /**
8
- * @param {String} property
9
- * @memberof Collection
10
- */
11
- constructor(property: string);
12
- /**
13
- * @param {String} id ID of the thing stuffed into the collection at id location
14
- * @returns {Any} returns whatever is being stuffed into the collection
15
- * @public
16
- * @memberof Collection
17
- */
18
- get(id: string): any;
19
- /**
20
- * @param {String} id the id of the meeting info instance to add to the collection
21
- * @param {Any} value the thing to set in the collection
22
- * @returns {Any} returns the thing just put in the collection
23
- * @public
24
- * @memberof Collection
25
- */
26
- set(id: string, value: any): any;
27
- /**
28
- * remove the thing at the id
29
- * @param {String} id ID of the thing you wish to delete from the collection
30
- * @returns {undefined}
31
- * @public
32
- * @memberof Collection
33
- */
34
- delete(id: string): void;
35
- /**
36
- * @returns {Object} returns an object map of things stuffed into the collection
37
- * @public
38
- * @memberof Collection
39
- */
40
- getAll(): any;
41
- /**
42
- * @param {Object} set the replacement object
43
- * @returns {Object} returns an object map of things stuffed into the collection
44
- * @public
45
- * @memberof Collection
46
- */
47
- setAll(set: object): any;
48
- }
@@ -1,2 +0,0 @@
1
- declare const StaticConfig: any;
2
- export default StaticConfig;
@@ -1,15 +0,0 @@
1
- /**
2
- * Extended Error object to signify captcha related errors
3
- */
4
- export default class CaptchaError extends Error {
5
- code: any;
6
- error: any;
7
- sdkMessage: any;
8
- /**
9
- *
10
- * @constructor
11
- * @param {String} [message]
12
- * @param {Object} [error]
13
- */
14
- constructor(message?: string, error?: any);
15
- }
@@ -1,16 +0,0 @@
1
- /**
2
- * Extended Error object to signify the intent to join for unclaimed PMR scenarios
3
- */
4
- export default class IntentToJoinError extends Error {
5
- code: any;
6
- error: any;
7
- joinIntentRequired: any;
8
- sdkMessage: any;
9
- /**
10
- *
11
- * @constructor
12
- * @param {String} [message]
13
- * @param {Object} [error]
14
- */
15
- constructor(message?: string, error?: any);
16
- }
@@ -1,17 +0,0 @@
1
- /**
2
- * Extended Error object to signify a join meeting error
3
- */
4
- export default class JoinMeetingError extends Error {
5
- code: any;
6
- error: any;
7
- joinOptions: any;
8
- sdkMessage: any;
9
- /**
10
- *
11
- * @constructor
12
- * @param {Object} [options]
13
- * @param {String} [message]
14
- * @param {Object} [error]
15
- */
16
- constructor(options?: object, message?: string, error?: any);
17
- }
@@ -1,15 +0,0 @@
1
- /**
2
- * Extended Error object for media errors
3
- */
4
- export default class MediaError extends Error {
5
- code: any;
6
- error: any;
7
- sdkMessage: any;
8
- /**
9
- *
10
- * @constructor
11
- * @param {String} [message]
12
- * @param {Object} [error]
13
- */
14
- constructor(message?: string, error?: any);
15
- }
@@ -1,14 +0,0 @@
1
- /**
2
- * Extended Error object for general parameter errors
3
- */
4
- export default class NoMeetingInfoError extends Error {
5
- code: any;
6
- error: any;
7
- sdkMessage: any;
8
- /**
9
- * @constructor
10
- * @param {String} [message]
11
- * @param {Object} [error]
12
- */
13
- constructor(message?: string, error?: any);
14
- }
@@ -1,15 +0,0 @@
1
- /**
2
- * Extended Error object to signify password related errors
3
- */
4
- export default class PasswordError extends Error {
5
- code: any;
6
- error: any;
7
- sdkMessage: any;
8
- /**
9
- *
10
- * @constructor
11
- * @param {String} [message]
12
- * @param {Object} [error]
13
- */
14
- constructor(message?: string, error?: any);
15
- }
@@ -1,14 +0,0 @@
1
- /**
2
- * Extended Error object for general parameter errors
3
- */
4
- export default class PermissionError extends Error {
5
- code: any;
6
- error: any;
7
- sdkMessage: any;
8
- /**
9
- * @constructor
10
- * @param {String} [message]
11
- * @param {Object} [error]
12
- */
13
- constructor(message?: string, error?: any);
14
- }