@webex/plugin-meetings 3.8.1 → 3.9.0-webinar5k.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 (296) hide show
  1. package/README.md +26 -13
  2. package/dist/breakouts/breakout.js +1 -1
  3. package/dist/breakouts/index.js +1 -1
  4. package/dist/constants.js +16 -3
  5. package/dist/constants.js.map +1 -1
  6. package/dist/controls-options-manager/enums.js +1 -0
  7. package/dist/controls-options-manager/enums.js.map +1 -1
  8. package/dist/controls-options-manager/types.js.map +1 -1
  9. package/dist/controls-options-manager/util.js +26 -0
  10. package/dist/controls-options-manager/util.js.map +1 -1
  11. package/dist/hashTree/constants.js +23 -0
  12. package/dist/hashTree/constants.js.map +1 -0
  13. package/dist/hashTree/hashTree.js +516 -0
  14. package/dist/hashTree/hashTree.js.map +1 -0
  15. package/dist/hashTree/hashTreeParser.js +521 -0
  16. package/dist/hashTree/hashTreeParser.js.map +1 -0
  17. package/dist/interpretation/index.js +1 -1
  18. package/dist/interpretation/siLanguage.js +1 -1
  19. package/dist/locus-info/controlsUtils.js +11 -3
  20. package/dist/locus-info/controlsUtils.js.map +1 -1
  21. package/dist/locus-info/index.js +331 -59
  22. package/dist/locus-info/index.js.map +1 -1
  23. package/dist/media/index.js +2 -2
  24. package/dist/media/index.js.map +1 -1
  25. package/dist/meeting/brbState.js +17 -14
  26. package/dist/meeting/brbState.js.map +1 -1
  27. package/dist/meeting/in-meeting-actions.js +5 -1
  28. package/dist/meeting/in-meeting-actions.js.map +1 -1
  29. package/dist/meeting/index.js +264 -125
  30. package/dist/meeting/index.js.map +1 -1
  31. package/dist/meeting/muteState.js +2 -5
  32. package/dist/meeting/muteState.js.map +1 -1
  33. package/dist/meeting/request.js +19 -0
  34. package/dist/meeting/request.js.map +1 -1
  35. package/dist/meeting/request.type.js.map +1 -1
  36. package/dist/meeting/util.js +8 -11
  37. package/dist/meeting/util.js.map +1 -1
  38. package/dist/meetings/index.js +6 -2
  39. package/dist/meetings/index.js.map +1 -1
  40. package/dist/member/types.js.map +1 -1
  41. package/dist/members/collection.js +13 -0
  42. package/dist/members/collection.js.map +1 -1
  43. package/dist/members/index.js +44 -23
  44. package/dist/members/index.js.map +1 -1
  45. package/dist/members/request.js +3 -3
  46. package/dist/members/request.js.map +1 -1
  47. package/dist/members/util.js +18 -6
  48. package/dist/members/util.js.map +1 -1
  49. package/dist/metrics/constants.js +1 -0
  50. package/dist/metrics/constants.js.map +1 -1
  51. package/dist/multistream/sendSlotManager.js +32 -2
  52. package/dist/multistream/sendSlotManager.js.map +1 -1
  53. package/dist/reachability/index.js +5 -10
  54. package/dist/reachability/index.js.map +1 -1
  55. package/dist/types/constants.d.ts +12 -0
  56. package/dist/types/controls-options-manager/enums.d.ts +2 -1
  57. package/dist/types/controls-options-manager/types.d.ts +4 -1
  58. package/dist/types/hashTree/constants.d.ts +8 -0
  59. package/dist/types/hashTree/hashTree.d.ts +128 -0
  60. package/dist/types/hashTree/hashTreeParser.d.ts +152 -0
  61. package/dist/types/locus-info/index.d.ts +93 -3
  62. package/dist/types/meeting/brbState.d.ts +0 -1
  63. package/dist/types/meeting/in-meeting-actions.d.ts +4 -0
  64. package/dist/types/meeting/index.d.ts +36 -3
  65. package/dist/types/meeting/request.d.ts +9 -1
  66. package/dist/types/meeting/request.type.d.ts +74 -0
  67. package/dist/types/meeting/util.d.ts +3 -3
  68. package/dist/types/member/types.d.ts +1 -0
  69. package/dist/types/members/collection.d.ts +6 -0
  70. package/dist/types/members/index.d.ts +15 -3
  71. package/dist/types/members/request.d.ts +1 -1
  72. package/dist/types/members/util.d.ts +5 -2
  73. package/dist/types/metrics/constants.d.ts +1 -0
  74. package/dist/types/multistream/sendSlotManager.d.ts +16 -0
  75. package/dist/types/reachability/index.d.ts +2 -2
  76. package/dist/webinar/index.js +1 -1
  77. package/package.json +26 -25
  78. package/src/constants.ts +16 -0
  79. package/src/controls-options-manager/enums.ts +1 -0
  80. package/src/controls-options-manager/types.ts +6 -1
  81. package/src/controls-options-manager/util.ts +31 -0
  82. package/src/hashTree/constants.ts +12 -0
  83. package/src/hashTree/hashTree.ts +460 -0
  84. package/src/hashTree/hashTreeParser.ts +556 -0
  85. package/src/locus-info/controlsUtils.ts +15 -0
  86. package/src/locus-info/index.ts +434 -58
  87. package/src/media/index.ts +2 -2
  88. package/src/meeting/brbState.ts +13 -9
  89. package/src/meeting/in-meeting-actions.ts +8 -0
  90. package/src/meeting/index.ts +193 -39
  91. package/src/meeting/muteState.ts +2 -6
  92. package/src/meeting/request.ts +16 -0
  93. package/src/meeting/request.type.ts +64 -0
  94. package/src/meeting/util.ts +17 -20
  95. package/src/meetings/index.ts +17 -3
  96. package/src/member/types.ts +1 -0
  97. package/src/members/collection.ts +11 -0
  98. package/src/members/index.ts +33 -7
  99. package/src/members/request.ts +2 -2
  100. package/src/members/util.ts +14 -3
  101. package/src/metrics/constants.ts +1 -0
  102. package/src/multistream/sendSlotManager.ts +34 -2
  103. package/src/reachability/index.ts +5 -13
  104. package/test/unit/spec/controls-options-manager/util.js +58 -0
  105. package/test/unit/spec/hashTree/hashTree.ts +394 -0
  106. package/test/unit/spec/hashTree/hashTreeParser.ts +156 -0
  107. package/test/unit/spec/locus-info/controlsUtils.js +52 -0
  108. package/test/unit/spec/locus-info/index.js +547 -54
  109. package/test/unit/spec/media/index.ts +107 -0
  110. package/test/unit/spec/meeting/brbState.ts +23 -4
  111. package/test/unit/spec/meeting/in-meeting-actions.ts +4 -0
  112. package/test/unit/spec/meeting/index.js +647 -46
  113. package/test/unit/spec/meeting/request.js +71 -0
  114. package/test/unit/spec/members/index.js +33 -10
  115. package/test/unit/spec/members/request.js +2 -2
  116. package/test/unit/spec/members/utils.js +27 -7
  117. package/test/unit/spec/multistream/sendSlotManager.ts +59 -0
  118. package/test/unit/spec/reachability/index.ts +2 -6
  119. package/dist/annotation/annotation.types.d.ts +0 -42
  120. package/dist/annotation/constants.d.ts +0 -31
  121. package/dist/annotation/index.d.ts +0 -117
  122. package/dist/breakouts/breakout.d.ts +0 -8
  123. package/dist/breakouts/collection.d.ts +0 -5
  124. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  125. package/dist/breakouts/events.d.ts +0 -8
  126. package/dist/breakouts/index.d.ts +0 -5
  127. package/dist/breakouts/request.d.ts +0 -22
  128. package/dist/breakouts/utils.d.ts +0 -15
  129. package/dist/common/browser-detection.d.ts +0 -9
  130. package/dist/common/collection.d.ts +0 -48
  131. package/dist/common/config.d.ts +0 -2
  132. package/dist/common/errors/captcha-error.d.ts +0 -15
  133. package/dist/common/errors/intent-to-join.d.ts +0 -16
  134. package/dist/common/errors/join-meeting.d.ts +0 -17
  135. package/dist/common/errors/media.d.ts +0 -15
  136. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  137. package/dist/common/errors/parameter.d.ts +0 -15
  138. package/dist/common/errors/password-error.d.ts +0 -15
  139. package/dist/common/errors/permission.d.ts +0 -14
  140. package/dist/common/errors/reclaim-host-role-error.d.ts +0 -60
  141. package/dist/common/errors/reclaim-host-role-error.js +0 -158
  142. package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
  143. package/dist/common/errors/reclaim-host-role-errors.d.ts +0 -60
  144. package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
  145. package/dist/common/errors/reconnection-in-progress.js +0 -35
  146. package/dist/common/errors/reconnection-in-progress.js.map +0 -1
  147. package/dist/common/errors/reconnection.d.ts +0 -15
  148. package/dist/common/errors/stats.d.ts +0 -15
  149. package/dist/common/errors/webex-errors.d.ts +0 -81
  150. package/dist/common/errors/webex-meetings-error.d.ts +0 -20
  151. package/dist/common/events/events-scope.d.ts +0 -17
  152. package/dist/common/events/events.d.ts +0 -12
  153. package/dist/common/events/trigger-proxy.d.ts +0 -2
  154. package/dist/common/events/util.d.ts +0 -2
  155. package/dist/common/logs/logger-config.d.ts +0 -2
  156. package/dist/common/logs/logger-proxy.d.ts +0 -2
  157. package/dist/common/logs/request.d.ts +0 -34
  158. package/dist/common/queue.d.ts +0 -32
  159. package/dist/config.d.ts +0 -73
  160. package/dist/constants.d.ts +0 -952
  161. package/dist/controls-options-manager/constants.d.ts +0 -4
  162. package/dist/controls-options-manager/enums.d.ts +0 -5
  163. package/dist/controls-options-manager/index.d.ts +0 -120
  164. package/dist/controls-options-manager/types.d.ts +0 -43
  165. package/dist/controls-options-manager/util.d.ts +0 -7
  166. package/dist/index.d.ts +0 -4
  167. package/dist/interceptors/index.d.ts +0 -2
  168. package/dist/interceptors/locusRetry.d.ts +0 -27
  169. package/dist/interpretation/collection.d.ts +0 -5
  170. package/dist/interpretation/index.d.ts +0 -5
  171. package/dist/interpretation/siLanguage.d.ts +0 -5
  172. package/dist/locus-info/controlsUtils.d.ts +0 -2
  173. package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
  174. package/dist/locus-info/fullState.d.ts +0 -2
  175. package/dist/locus-info/hostUtils.d.ts +0 -2
  176. package/dist/locus-info/index.d.ts +0 -269
  177. package/dist/locus-info/infoUtils.d.ts +0 -2
  178. package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
  179. package/dist/locus-info/parser.d.ts +0 -212
  180. package/dist/locus-info/selfUtils.d.ts +0 -2
  181. package/dist/media/index.d.ts +0 -32
  182. package/dist/media/properties.d.ts +0 -108
  183. package/dist/media/util.d.ts +0 -2
  184. package/dist/mediaQualityMetrics/config.d.ts +0 -233
  185. package/dist/mediaQualityMetrics/config.js +0 -513
  186. package/dist/mediaQualityMetrics/config.js.map +0 -1
  187. package/dist/meeting/effectsState.d.ts +0 -42
  188. package/dist/meeting/effectsState.js +0 -260
  189. package/dist/meeting/effectsState.js.map +0 -1
  190. package/dist/meeting/in-meeting-actions.d.ts +0 -79
  191. package/dist/meeting/index.d.ts +0 -1622
  192. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  193. package/dist/meeting/muteState.d.ts +0 -116
  194. package/dist/meeting/request.d.ts +0 -257
  195. package/dist/meeting/request.type.d.ts +0 -11
  196. package/dist/meeting/state.d.ts +0 -9
  197. package/dist/meeting/util.d.ts +0 -2
  198. package/dist/meeting/voicea-meeting.d.ts +0 -16
  199. package/dist/meeting-info/collection.d.ts +0 -20
  200. package/dist/meeting-info/index.d.ts +0 -57
  201. package/dist/meeting-info/meeting-info-v2.d.ts +0 -93
  202. package/dist/meeting-info/request.d.ts +0 -22
  203. package/dist/meeting-info/util.d.ts +0 -2
  204. package/dist/meeting-info/utilv2.d.ts +0 -2
  205. package/dist/meetings/collection.d.ts +0 -23
  206. package/dist/meetings/index.d.ts +0 -296
  207. package/dist/meetings/meetings.types.d.ts +0 -4
  208. package/dist/meetings/request.d.ts +0 -27
  209. package/dist/meetings/util.d.ts +0 -18
  210. package/dist/member/index.d.ts +0 -148
  211. package/dist/member/member.types.d.ts +0 -11
  212. package/dist/member/member.types.js +0 -18
  213. package/dist/member/member.types.js.map +0 -1
  214. package/dist/member/types.d.ts +0 -32
  215. package/dist/member/util.d.ts +0 -2
  216. package/dist/members/collection.d.ts +0 -24
  217. package/dist/members/index.d.ts +0 -308
  218. package/dist/members/request.d.ts +0 -58
  219. package/dist/members/types.d.ts +0 -25
  220. package/dist/members/util.d.ts +0 -2
  221. package/dist/metrics/config.d.ts +0 -169
  222. package/dist/metrics/config.js +0 -289
  223. package/dist/metrics/config.js.map +0 -1
  224. package/dist/metrics/constants.d.ts +0 -59
  225. package/dist/metrics/index.d.ts +0 -152
  226. package/dist/multistream/mediaRequestManager.d.ts +0 -119
  227. package/dist/multistream/receiveSlot.d.ts +0 -68
  228. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  229. package/dist/multistream/remoteMedia.d.ts +0 -72
  230. package/dist/multistream/remoteMediaGroup.d.ts +0 -49
  231. package/dist/multistream/remoteMediaManager.d.ts +0 -300
  232. package/dist/multistream/sendSlotManager.d.ts +0 -69
  233. package/dist/networkQualityMonitor/index.d.ts +0 -70
  234. package/dist/networkQualityMonitor/index.js +0 -226
  235. package/dist/networkQualityMonitor/index.js.map +0 -1
  236. package/dist/peer-connection-manager/index.d.ts +0 -6
  237. package/dist/peer-connection-manager/index.js +0 -671
  238. package/dist/peer-connection-manager/index.js.map +0 -1
  239. package/dist/peer-connection-manager/util.d.ts +0 -6
  240. package/dist/peer-connection-manager/util.js +0 -110
  241. package/dist/peer-connection-manager/util.js.map +0 -1
  242. package/dist/personal-meeting-room/index.d.ts +0 -47
  243. package/dist/personal-meeting-room/request.d.ts +0 -14
  244. package/dist/personal-meeting-room/util.d.ts +0 -2
  245. package/dist/reachability/clusterReachability.d.ts +0 -109
  246. package/dist/reachability/index.d.ts +0 -139
  247. package/dist/reachability/request.d.ts +0 -35
  248. package/dist/reachability/util.d.ts +0 -8
  249. package/dist/reactions/constants.d.ts +0 -3
  250. package/dist/reactions/reactions.d.ts +0 -4
  251. package/dist/reactions/reactions.type.d.ts +0 -32
  252. package/dist/reconnection-manager/index.d.ts +0 -112
  253. package/dist/recording-controller/enums.d.ts +0 -7
  254. package/dist/recording-controller/index.d.ts +0 -193
  255. package/dist/recording-controller/util.d.ts +0 -13
  256. package/dist/roap/collection.d.ts +0 -10
  257. package/dist/roap/collection.js +0 -63
  258. package/dist/roap/collection.js.map +0 -1
  259. package/dist/roap/handler.d.ts +0 -47
  260. package/dist/roap/handler.js +0 -279
  261. package/dist/roap/handler.js.map +0 -1
  262. package/dist/roap/index.d.ts +0 -116
  263. package/dist/roap/request.d.ts +0 -35
  264. package/dist/roap/state.d.ts +0 -9
  265. package/dist/roap/state.js +0 -127
  266. package/dist/roap/state.js.map +0 -1
  267. package/dist/roap/turnDiscovery.d.ts +0 -81
  268. package/dist/roap/util.d.ts +0 -2
  269. package/dist/roap/util.js +0 -76
  270. package/dist/roap/util.js.map +0 -1
  271. package/dist/rtcMetrics/constants.d.ts +0 -4
  272. package/dist/rtcMetrics/constants.js +0 -11
  273. package/dist/rtcMetrics/constants.js.map +0 -1
  274. package/dist/rtcMetrics/index.d.ts +0 -61
  275. package/dist/rtcMetrics/index.js +0 -197
  276. package/dist/rtcMetrics/index.js.map +0 -1
  277. package/dist/statsAnalyzer/global.d.ts +0 -118
  278. package/dist/statsAnalyzer/global.js +0 -127
  279. package/dist/statsAnalyzer/global.js.map +0 -1
  280. package/dist/statsAnalyzer/index.d.ts +0 -193
  281. package/dist/statsAnalyzer/index.js +0 -1019
  282. package/dist/statsAnalyzer/index.js.map +0 -1
  283. package/dist/statsAnalyzer/mqaUtil.d.ts +0 -22
  284. package/dist/statsAnalyzer/mqaUtil.js +0 -181
  285. package/dist/statsAnalyzer/mqaUtil.js.map +0 -1
  286. package/dist/transcription/index.d.ts +0 -64
  287. package/dist/types/common/errors/reconnection-in-progress.d.ts +0 -9
  288. package/dist/types/mediaQualityMetrics/config.d.ts +0 -241
  289. package/dist/types/networkQualityMonitor/index.d.ts +0 -70
  290. package/dist/types/rtcMetrics/constants.d.ts +0 -4
  291. package/dist/types/rtcMetrics/index.d.ts +0 -71
  292. package/dist/types/statsAnalyzer/global.d.ts +0 -36
  293. package/dist/types/statsAnalyzer/index.d.ts +0 -217
  294. package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -48
  295. package/dist/webinar/collection.d.ts +0 -16
  296. package/dist/webinar/index.d.ts +0 -5
@@ -826,4 +826,75 @@ describe('plugin-meetings', () => {
826
826
  });
827
827
  });
828
828
  });
829
+
830
+ describe('#synchronizeStage', () => {
831
+ [
832
+ ['an unset stage', {overrideDefault: false}],
833
+ [
834
+ 'a minimally set stage',
835
+ {
836
+ overrideDefault: true,
837
+ lockAttendeeViewOnStageOnly: false,
838
+ stageParameters: {
839
+ activeSpeakerProportion: 0.5,
840
+ showActiveSpeaker: {show: false, order: 0},
841
+ stageManagerType: 0,
842
+ },
843
+ },
844
+ ],
845
+ [
846
+ 'a fully set stage',
847
+ {
848
+ overrideDefault: true,
849
+ lockAttendeeViewOnStageOnly: true,
850
+ stageParameters: {
851
+ activeSpeakerProportion: 0.6,
852
+ importantParticipants: [
853
+ {mainCsi: 11111111, participantId: uuidv4(), order: 1},
854
+ {mainCsi: 22222222, participantId: uuidv4(), order: 2},
855
+ {mainCsi: 33333333, participantId: uuidv4(), order: 3},
856
+ {mainCsi: 44444444, participantId: uuidv4(), order: 4},
857
+ {mainCsi: 55555555, participantId: uuidv4(), order: 5},
858
+ {mainCsi: 66666666, participantId: uuidv4(), order: 6},
859
+ {mainCsi: 77777777, participantId: uuidv4(), order: 7},
860
+ {mainCsi: 88888888, participantId: uuidv4(), order: 8},
861
+ ],
862
+ showActiveSpeaker: {show: true, order: 0},
863
+ stageManagerType: 7,
864
+ },
865
+ customLayouts: {
866
+ background: {url: `https://test.wbx2.com/background/${uuidv4()}.jpg`},
867
+ logo: {url: `https://test.wbx2.com/logo/${uuidv4()}.png`, position: 'UpperMiddle'},
868
+ },
869
+ nameLabelStyle: {
870
+ accentColor: '#00A3FF',
871
+ background: {color: 'rgba(0, 163, 255, 1)'},
872
+ border: {color: 'rgba(0, 163, 255, 1)'},
873
+ content: {
874
+ displayName: {color: 'rgba(255, 255, 255, 0.95)'},
875
+ subtitle: {color: 'rgba(255, 255, 255, 0.7)'},
876
+ },
877
+ decoration: {color: 'rgba(255, 255, 255, 0.95)'},
878
+ fadeOut: {delay: 15},
879
+ type: 'PrimaryInverted',
880
+ },
881
+ },
882
+ ],
883
+ ].forEach(([description, videoLayout]) => {
884
+ it(`sends request to synchronize the stage with ${description} video layout`, async () => {
885
+ const locusUrl = `https://locus-test.wbx2.com/locus/api/v1/loci/${uuidv4()}`;
886
+
887
+ const synchronizePromise = meetingsRequest.synchronizeStage(locusUrl, videoLayout);
888
+
889
+ assert.exists(synchronizePromise.then);
890
+ await synchronizePromise;
891
+
892
+ checkRequest({
893
+ method: 'PATCH',
894
+ uri: `${locusUrl}/controls`,
895
+ body: {videoLayout},
896
+ });
897
+ });
898
+ });
899
+ });
829
900
  });
@@ -176,6 +176,20 @@ describe('plugin-meetings', () => {
176
176
  assert.calledOnce(MembersUtil.isInvalidInvitee);
177
177
  assert.isFalse(MembersUtil.isInvalidInvitee({email: 'sip:test@cisco.com'}), 'SIP email should be valid');
178
178
  });
179
+
180
+ it('should accept valid phone with isInternalNumber', async () => {
181
+ sandbox.spy(MembersUtil, 'isInvalidInvitee');
182
+
183
+ const members = createMembers({url: true});
184
+
185
+ await members.addMember({phoneNumber: '+8618578675309', isInternalNumber: false});
186
+
187
+ assert.calledOnce(MembersUtil.isInvalidInvitee);
188
+ assert.isFalse(MembersUtil.isInvalidInvitee({ phoneNumber: '+8618578675309', isInternalNumber: false }));
189
+ assert.isTrue(MembersUtil.isInvalidInvitee({ phoneNumber: '18578675309', isInternalNumber: false }));
190
+ assert.isFalse(MembersUtil.isInvalidInvitee({phoneNumber: '18578675309', isInternalNumber: true}));
191
+ assert.isTrue(MembersUtil.isInvalidInvitee({phoneNumber: '+8618578675309', isInternalNumber: true}));
192
+ });
179
193
  });
180
194
 
181
195
  describe('#admitMembers', () => {
@@ -293,7 +307,7 @@ describe('plugin-meetings', () => {
293
307
  },
294
308
  EVENT_TRIGGERS.MEMBERS_UPDATE,
295
309
  {
296
- delta: {added: [], updated: []},
310
+ delta: {added: [], updated: [], removedIds: []},
297
311
  full: {},
298
312
  isReplace: true,
299
313
  }
@@ -465,29 +479,38 @@ describe('plugin-meetings', () => {
465
479
  });
466
480
  });
467
481
 
468
- describe('#cancelSIPInvite', () => {
482
+ describe('#cancelInviteByMemberId', () => {
469
483
  const memberId = uuid.v4();
470
- it('should invoke cancelSIPInviteOptions from MembersUtil when cancelSIPInvite is called with valid params', async () => {
471
- sandbox.spy(MembersUtil, 'cancelSIPInviteOptions');
484
+ it('should invoke cancelInviteByMemberIdOptions from MembersUtil when cancelInviteByMemberId is called with valid params', async () => {
485
+ sandbox.spy(MembersUtil, 'cancelInviteByMemberIdOptions');
486
+
487
+ const members = createMembers({url: url1});
488
+
489
+ await members.cancelInviteByMemberId({memberId});
490
+ assert.calledOnce(MembersUtil.cancelInviteByMemberIdOptions);
491
+ });
492
+
493
+ it('should invoke cancelInviteByMemberIdOptions from MembersUtil when cancelInviteByMemberId is called with isInternalNumber', async () => {
494
+ sandbox.spy(MembersUtil, 'cancelInviteByMemberIdOptions');
472
495
 
473
496
  const members = createMembers({url: url1});
474
497
 
475
- await members.cancelSIPInvite({memberId});
476
- assert.calledOnce(MembersUtil.cancelSIPInviteOptions);
498
+ await members.cancelInviteByMemberId({memberId, isInternalNumber: true});
499
+ assert.calledOnce(MembersUtil.cancelInviteByMemberIdOptions);
477
500
  });
478
501
 
479
502
  it('should throw a rejection if there is no locus url', async () => {
480
503
  const members = createMembers({url: false});
481
504
 
482
- assert.isRejected(members.cancelSIPInvite({memberId}));
505
+ assert.isRejected(members.cancelInviteByMemberId({memberId}));
483
506
  });
484
507
 
485
508
  it('should throw a rejection if memberId is not provided', async () => {
486
509
  const members = createMembers({url: url1});
487
510
 
488
- assert.isRejected(members.cancelSIPInvite({}));
489
- assert.isRejected(members.cancelSIPInvite({memberId: null}));
490
- assert.isRejected(members.cancelSIPInvite({memberId: undefined}));
511
+ assert.isRejected(members.cancelInviteByMemberId({}));
512
+ assert.isRejected(members.cancelInviteByMemberId({memberId: null}));
513
+ assert.isRejected(members.cancelInviteByMemberId({memberId: undefined}));
491
514
  });
492
515
  });
493
516
 
@@ -221,7 +221,7 @@ describe('plugin-meetings', () => {
221
221
  });
222
222
  });
223
223
 
224
- describe('#cancelSIPInvite', () => {
224
+ describe('#cancelInviteByMemberId', () => {
225
225
  const memberId = uuid.v4();
226
226
  it('sends a PUT to the locus endpoint', async () => {
227
227
  const options = {
@@ -231,7 +231,7 @@ describe('plugin-meetings', () => {
231
231
  locusUrl: url1,
232
232
  };
233
233
 
234
- await membersRequest.cancelSIPInvite(options);
234
+ await membersRequest.cancelInviteByMemberId(options);
235
235
 
236
236
  checkRequest({
237
237
  method: 'PUT',
@@ -302,6 +302,26 @@ describe('plugin-meetings', () => {
302
302
  });
303
303
  });
304
304
 
305
+ it('returns the correct body with phone number and isInternalNumber', () => {
306
+ const options = {
307
+ invitee: {
308
+ phoneNumber: '1234567890',
309
+ isInternalNumber: false
310
+ },
311
+ alertIfActive: false,
312
+ };
313
+
314
+ assert.deepEqual(MembersUtil.getAddMemberBody(options), {
315
+ invitees: [
316
+ {
317
+ address: '1234567890',
318
+ isInternalNumber: false
319
+ },
320
+ ],
321
+ alertIfActive: false,
322
+ });
323
+ });
324
+
305
325
  it('returns the correct body with fallback to email', () => {
306
326
  const options = {
307
327
  invitee: {
@@ -391,14 +411,14 @@ describe('plugin-meetings', () => {
391
411
  });
392
412
  });
393
413
 
394
- describe('#cancelSIPInviteOptions', () => {
414
+ describe('#cancelInviteByMemberIdOptions', () => {
395
415
  it('returns the correct options', () => {
396
416
  const locusUrl = 'TestLocusUrl';
397
417
  const memberId = 'test';
398
- const invitee = {memberId};
418
+ const invitee = {memberId, isInternalNumber: false};
399
419
 
400
420
  assert.deepEqual(
401
- MembersUtil.cancelSIPInviteOptions(
421
+ MembersUtil.cancelInviteByMemberIdOptions(
402
422
  invitee,
403
423
  locusUrl
404
424
  ),
@@ -410,22 +430,22 @@ describe('plugin-meetings', () => {
410
430
  });
411
431
  });
412
432
 
413
- describe('#generateCancelSIPInviteRequestParams', () => {
433
+ describe('#generateCancelInviteByMemberIdRequestParams', () => {
414
434
  it('returns the correct params', () => {
415
435
  const locusUrl = 'TestLocusUrl';
416
436
  const memberId = 'test';
417
437
  const options = {
418
438
  locusUrl,
419
- invitee: {memberId}
439
+ invitee: {memberId, isInternalNumber: false}
420
440
  };
421
441
  const body = {
422
442
  actionType: 'REMOVE',
423
- invitees: [{address: options.invitee.memberId}],
443
+ invitees: [{address: options.invitee.memberId, isInternalNumber: false}],
424
444
  };
425
445
 
426
446
  const uri = options.locusUrl;
427
447
 
428
- assert.deepEqual(MembersUtil.generateCancelSIPInviteRequestParams(options), {
448
+ assert.deepEqual(MembersUtil.generateCancelInviteByMemberIdRequestParams(options), {
429
449
  method: HTTP_VERBS.PUT,
430
450
  uri,
431
451
  body,
@@ -272,4 +272,63 @@ describe('SendSlotsManager', () => {
272
272
  expect(() => sendSlotsManager.getSlot(MediaType.VideoSlides)).to.throw();
273
273
  });
274
274
  });
275
+
276
+ describe('sourceStateOverride', () => {
277
+ let mediaConnection: MultistreamRoapMediaConnection;
278
+ beforeEach(() => {
279
+ mediaConnection = {
280
+ createSendSlot: sinon.stub().returns({
281
+ setSourceStateOverride: sinon.stub().resolves(),
282
+ clearSourceStateOverride: sinon.stub().resolves(),
283
+ }),
284
+ } as MultistreamRoapMediaConnection;
285
+ });
286
+
287
+ it(`can set source state override for ${MediaType.VideoMain}`, () => {
288
+ const slot: any = sendSlotsManager.createSlot(mediaConnection, MediaType.VideoMain);
289
+
290
+ const set = () => sendSlotsManager.setSourceStateOverride(MediaType.VideoMain, 'away');
291
+
292
+ expect(set).not.to.throw();
293
+ expect(slot.setSourceStateOverride.calledWith('away')).to.be.true;
294
+ });
295
+
296
+ [MediaType.VideoSlides, MediaType.AudioMain, MediaType.AudioSlides].forEach((mediaType) => {
297
+ it(`can't set source state override for ${mediaType}`, () => {
298
+ const slot: any = sendSlotsManager.createSlot(mediaConnection, mediaType);
299
+
300
+ const set = () => sendSlotsManager.setSourceStateOverride(mediaType, 'away');
301
+
302
+ expect(set).to.throw();
303
+ expect(slot.setSourceStateOverride.called).to.be.false;
304
+ });
305
+ });
306
+
307
+ it("can't set source state override for non-existing slot", () => {
308
+ const set = () => sendSlotsManager.setSourceStateOverride(MediaType.VideoMain, 'away');
309
+ expect(set).to.throw(`Slot for ${MediaType.VideoMain} does not exist`);
310
+ });
311
+
312
+ it('can clear source state override', () => {
313
+ const slot: any = sendSlotsManager.createSlot(mediaConnection, MediaType.VideoMain);
314
+ sendSlotsManager.setSourceStateOverride(MediaType.VideoMain, 'away');
315
+
316
+ expect(slot.setSourceStateOverride.calledWith('away')).to.be.true;
317
+ expect(slot.clearSourceStateOverride.called).to.be.false;
318
+
319
+ sendSlotsManager.setSourceStateOverride(MediaType.VideoMain, null);
320
+ expect(slot.clearSourceStateOverride.called).to.be.true;
321
+ });
322
+
323
+ it("won't set source state override if it didn't change", () => {
324
+ const slot: any = sendSlotsManager.createSlot(mediaConnection, MediaType.VideoMain);
325
+ sendSlotsManager.setSourceStateOverride(MediaType.VideoMain, 'away');
326
+
327
+ expect(slot.setSourceStateOverride.calledWith('away')).to.be.true;
328
+ slot.setSourceStateOverride.resetHistory();
329
+
330
+ sendSlotsManager.setSourceStateOverride(MediaType.VideoMain, 'away');
331
+ expect(slot.setSourceStateOverride.called).to.be.false;
332
+ });
333
+ });
275
334
  });
@@ -2764,14 +2764,10 @@ describe('isSubnetReachable', () => {
2764
2764
  });
2765
2765
 
2766
2766
  it('returns true if the subnet is reachable', () => {
2767
- assert(reachability.isSubnetReachable('1.2.3.4'));
2767
+ assert(reachability.isSubnetReachable('1'));
2768
2768
  });
2769
2769
 
2770
2770
  it(`returns false if the subnet is unreachable`, () => {
2771
- assert(!reachability.isSubnetReachable('11.2.3.4'));
2772
- });
2773
-
2774
- it('returns null if the subnet is not provided', () => {
2775
- assert.isNull(reachability.isSubnetReachable(undefined));
2771
+ assert(!reachability.isSubnetReachable('11'));
2776
2772
  });
2777
2773
  });
@@ -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;