@webex/plugin-meetings 3.0.0-beta.16 → 3.0.0-beta.18

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 (156) hide show
  1. package/dist/breakouts/breakout.js +116 -0
  2. package/dist/breakouts/breakout.js.map +1 -0
  3. package/dist/breakouts/collection.js +23 -0
  4. package/dist/breakouts/collection.js.map +1 -0
  5. package/dist/breakouts/index.js +226 -0
  6. package/dist/breakouts/index.js.map +1 -0
  7. package/dist/config.js +4 -1
  8. package/dist/config.js.map +1 -1
  9. package/dist/constants.js +43 -6
  10. package/dist/constants.js.map +1 -1
  11. package/dist/locus-info/controlsUtils.js +2 -1
  12. package/dist/locus-info/controlsUtils.js.map +1 -1
  13. package/dist/locus-info/index.js +48 -0
  14. package/dist/locus-info/index.js.map +1 -1
  15. package/dist/locus-info/parser.js +1 -0
  16. package/dist/locus-info/parser.js.map +1 -1
  17. package/dist/locus-info/selfUtils.js +19 -11
  18. package/dist/locus-info/selfUtils.js.map +1 -1
  19. package/dist/media/index.js +3 -3
  20. package/dist/media/index.js.map +1 -1
  21. package/dist/media/properties.js +4 -4
  22. package/dist/media/properties.js.map +1 -1
  23. package/dist/meeting/in-meeting-actions.js +5 -1
  24. package/dist/meeting/in-meeting-actions.js.map +1 -1
  25. package/dist/meeting/index.js +652 -459
  26. package/dist/meeting/index.js.map +1 -1
  27. package/dist/meeting/request.js +25 -44
  28. package/dist/meeting/request.js.map +1 -1
  29. package/dist/meeting/request.type.js.map +1 -1
  30. package/dist/meeting/util.js +22 -57
  31. package/dist/meeting/util.js.map +1 -1
  32. package/dist/meeting-info/meeting-info-v2.js +2 -0
  33. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  34. package/dist/meetings/index.js +28 -18
  35. package/dist/meetings/index.js.map +1 -1
  36. package/dist/meetings/request.js +14 -12
  37. package/dist/meetings/request.js.map +1 -1
  38. package/dist/member/index.js +9 -0
  39. package/dist/member/index.js.map +1 -1
  40. package/dist/member/util.js +14 -1
  41. package/dist/member/util.js.map +1 -1
  42. package/dist/members/index.js +8 -6
  43. package/dist/members/index.js.map +1 -1
  44. package/dist/members/request.js +3 -1
  45. package/dist/members/request.js.map +1 -1
  46. package/dist/multistream/mediaRequestManager.js +46 -6
  47. package/dist/multistream/mediaRequestManager.js.map +1 -1
  48. package/dist/multistream/multistreamMedia.js +4 -0
  49. package/dist/multistream/multistreamMedia.js.map +1 -1
  50. package/dist/multistream/receiveSlot.js +3 -3
  51. package/dist/multistream/receiveSlot.js.map +1 -1
  52. package/dist/multistream/receiveSlotManager.js +8 -6
  53. package/dist/multistream/receiveSlotManager.js.map +1 -1
  54. package/dist/multistream/remoteMedia.js.map +1 -1
  55. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  56. package/dist/multistream/remoteMediaManager.js +168 -63
  57. package/dist/multistream/remoteMediaManager.js.map +1 -1
  58. package/dist/reachability/index.js +63 -51
  59. package/dist/reachability/index.js.map +1 -1
  60. package/dist/reactions/constants.js +13 -0
  61. package/dist/reactions/constants.js.map +1 -0
  62. package/dist/reactions/reactions.type.js.map +1 -1
  63. package/dist/reconnection-manager/index.js +25 -12
  64. package/dist/reconnection-manager/index.js.map +1 -1
  65. package/dist/recording-controller/enums.js +17 -0
  66. package/dist/recording-controller/enums.js.map +1 -0
  67. package/dist/recording-controller/index.js +343 -0
  68. package/dist/recording-controller/index.js.map +1 -0
  69. package/dist/recording-controller/util.js +63 -0
  70. package/dist/recording-controller/util.js.map +1 -0
  71. package/dist/roap/request.js +88 -68
  72. package/dist/roap/request.js.map +1 -1
  73. package/dist/roap/turnDiscovery.js +72 -47
  74. package/dist/roap/turnDiscovery.js.map +1 -1
  75. package/dist/statsAnalyzer/index.js +3 -3
  76. package/dist/statsAnalyzer/index.js.map +1 -1
  77. package/dist/statsAnalyzer/mqaUtil.js +18 -6
  78. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  79. package/package.json +24 -19
  80. package/src/breakouts/README.md +190 -0
  81. package/src/breakouts/breakout.ts +110 -0
  82. package/src/breakouts/collection.ts +19 -0
  83. package/src/breakouts/index.ts +225 -0
  84. package/src/config.ts +4 -1
  85. package/src/constants.ts +39 -1
  86. package/src/locus-info/controlsUtils.ts +2 -0
  87. package/src/locus-info/index.ts +59 -1
  88. package/src/locus-info/parser.ts +1 -0
  89. package/src/locus-info/selfUtils.ts +8 -0
  90. package/src/media/index.ts +1 -2
  91. package/src/media/properties.ts +6 -9
  92. package/src/meeting/in-meeting-actions.ts +8 -0
  93. package/src/meeting/index.ts +360 -111
  94. package/src/meeting/request.ts +9 -31
  95. package/src/meeting/request.type.ts +2 -0
  96. package/src/meeting/util.ts +25 -60
  97. package/src/meeting-info/meeting-info-v2.ts +2 -0
  98. package/src/meetings/index.ts +10 -5
  99. package/src/meetings/request.ts +1 -1
  100. package/src/member/index.ts +9 -0
  101. package/src/member/util.ts +14 -1
  102. package/src/members/index.ts +1 -0
  103. package/src/members/request.ts +1 -0
  104. package/src/multistream/mediaRequestManager.ts +79 -15
  105. package/src/multistream/multistreamMedia.ts +4 -0
  106. package/src/multistream/receiveSlot.ts +17 -12
  107. package/src/multistream/receiveSlotManager.ts +22 -21
  108. package/src/multistream/remoteMedia.ts +1 -1
  109. package/src/multistream/remoteMediaGroup.ts +2 -2
  110. package/src/multistream/remoteMediaManager.ts +150 -37
  111. package/src/reachability/index.ts +16 -13
  112. package/src/reactions/constants.ts +4 -0
  113. package/src/reactions/reactions.type.ts +25 -0
  114. package/src/reconnection-manager/index.ts +18 -9
  115. package/src/recording-controller/enums.ts +8 -0
  116. package/src/recording-controller/index.ts +315 -0
  117. package/src/recording-controller/util.ts +58 -0
  118. package/src/roap/request.ts +78 -73
  119. package/src/roap/turnDiscovery.ts +8 -6
  120. package/src/statsAnalyzer/index.ts +4 -4
  121. package/src/statsAnalyzer/mqaUtil.ts +6 -0
  122. package/test/unit/spec/breakouts/breakout.ts +119 -0
  123. package/test/unit/spec/breakouts/collection.ts +15 -0
  124. package/test/unit/spec/breakouts/index.ts +293 -0
  125. package/test/unit/spec/locus-info/controlsUtils.js +20 -0
  126. package/test/unit/spec/locus-info/index.js +103 -0
  127. package/test/unit/spec/locus-info/selfConstant.js +25 -0
  128. package/test/unit/spec/locus-info/selfUtils.js +84 -0
  129. package/test/unit/spec/media/index.ts +1 -1
  130. package/test/unit/spec/media/properties.ts +9 -9
  131. package/test/unit/spec/meeting/effectsState.js +5 -1
  132. package/test/unit/spec/meeting/in-meeting-actions.ts +5 -1
  133. package/test/unit/spec/meeting/index.js +241 -50
  134. package/test/unit/spec/meeting/request.js +17 -0
  135. package/test/unit/spec/meeting/utils.js +28 -122
  136. package/test/unit/spec/meetings/index.js +1 -0
  137. package/test/unit/spec/member/util.js +26 -1
  138. package/test/unit/spec/multistream/mediaRequestManager.ts +312 -50
  139. package/test/unit/spec/multistream/receiveSlot.ts +6 -6
  140. package/test/unit/spec/multistream/receiveSlotManager.ts +13 -13
  141. package/test/unit/spec/multistream/remoteMedia.ts +2 -2
  142. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  143. package/test/unit/spec/multistream/remoteMediaManager.ts +354 -65
  144. package/test/unit/spec/reachability/index.ts +58 -24
  145. package/test/unit/spec/reconnection-manager/index.js +42 -13
  146. package/test/unit/spec/recording-controller/index.js +231 -0
  147. package/test/unit/spec/recording-controller/util.js +102 -0
  148. package/test/unit/spec/roap/index.ts +2 -1
  149. package/test/unit/spec/roap/request.ts +114 -0
  150. package/test/unit/spec/roap/turnDiscovery.ts +45 -29
  151. package/test/unit/spec/stats-analyzer/index.js +2 -2
  152. package/test/utils/webex-test-users.js +1 -0
  153. package/tsconfig.json +6 -0
  154. package/dist/media/internal-media-core-wrapper.js +0 -18
  155. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  156. package/src/media/internal-media-core-wrapper.ts +0 -9
@@ -33,6 +33,24 @@ describe('plugin-meetings', () => {
33
33
  assert.calledWith(getRolesSpy, self);
34
34
 
35
35
  assert.deepEqual(parsedSelf.roles, ['PRESENTER']);
36
+ assert.deepEqual(parsedSelf.breakoutSessions, {
37
+ active: [
38
+ {
39
+ name: 'Breakout session 2',
40
+ groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
41
+ sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
42
+ sessionType: 'BREAKOUT'
43
+ },
44
+ ],
45
+ allowed: [
46
+ {
47
+ name: 'Breakout session 2',
48
+ groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
49
+ sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
50
+ sessionType: 'BREAKOUT'
51
+ },
52
+ ]
53
+ });
36
54
  });
37
55
 
38
56
  it('calls getLayout and returns the resulting layout', () => {
@@ -58,6 +76,72 @@ describe('plugin-meetings', () => {
58
76
  });
59
77
  });
60
78
 
79
+ describe('getBreakouts', () => {
80
+ it('should return breakout sessions', () => {
81
+ assert.deepEqual(SelfUtils.getBreakouts({controls: {breakout: {sessions: 'SESSIONS'}}}), 'SESSIONS');
82
+ });
83
+ });
84
+
85
+ describe('breakoutsChanged', () => {
86
+ it('should return true if breakouts have changed', () => {
87
+ const current = {
88
+ breakoutSessions: {
89
+ allowed: [
90
+ {
91
+ name: 'Breakout session 2',
92
+ groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
93
+ sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
94
+ sessionType: 'BREAKOUT'
95
+ },
96
+ ]
97
+ }
98
+ };
99
+ const previous = {
100
+ breakoutSessions: {
101
+ active: [
102
+ {
103
+ name: 'Breakout session 2',
104
+ groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
105
+ sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
106
+ sessionType: 'BREAKOUT'
107
+ },
108
+ ]
109
+ }
110
+ };
111
+
112
+ assert.isTrue(SelfUtils.breakoutsChanged(previous, current));
113
+ });
114
+
115
+ it('should return false if breakouts have not changed', () => {
116
+ const current = {
117
+ breakoutSessions: {
118
+ active: [
119
+ {
120
+ name: 'Breakout session 2',
121
+ groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
122
+ sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
123
+ sessionType: 'BREAKOUT'
124
+ },
125
+ ]
126
+ }
127
+ };
128
+ const previous = {
129
+ breakoutSessions: {
130
+ active: [
131
+ {
132
+ name: 'Breakout session 2',
133
+ groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
134
+ sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
135
+ sessionType: 'BREAKOUT'
136
+ },
137
+ ]
138
+ }
139
+ };
140
+
141
+ assert.isFalse(SelfUtils.breakoutsChanged(previous, current));
142
+ });
143
+ });
144
+
61
145
  describe('canNotViewTheParticipantList', () => {
62
146
  it('should return the correct value', () => {
63
147
  assert.equal(
@@ -1,4 +1,4 @@
1
- import * as internalMediaModule from '@webex/plugin-meetings/src/media/internal-media-core-wrapper';
1
+ import * as internalMediaModule from '@webex/internal-media-core';
2
2
  import Media from '@webex/plugin-meetings/src/media/index';
3
3
  import {assert} from '@webex/test-helper-chai';
4
4
  import sinon from 'sinon';
@@ -1,6 +1,6 @@
1
1
  import {assert} from '@webex/test-helper-chai';
2
2
  import sinon from 'sinon';
3
- import {MediaConnection as MC} from '@webex/internal-media-core';
3
+ import {ConnectionState, Event} from '@webex/internal-media-core';
4
4
  import MediaProperties from '@webex/plugin-meetings/src/media/properties';
5
5
  import MediaUtil from '@webex/plugin-meetings/src/media/util';
6
6
  import testUtils from '../../../utils/testUtils';
@@ -19,7 +19,7 @@ describe('MediaProperties', () => {
19
19
  getStats: sinon.stub().resolves([]),
20
20
  on: sinon.stub(),
21
21
  off: sinon.stub(),
22
- getConnectionState: sinon.stub().returns(MC.ConnectionState.Connected),
22
+ getConnectionState: sinon.stub().returns(ConnectionState.Connected),
23
23
  };
24
24
 
25
25
  mediaProperties = new MediaProperties();
@@ -35,7 +35,7 @@ describe('MediaProperties', () => {
35
35
  await mediaProperties.waitForMediaConnectionConnected();
36
36
  });
37
37
  it('rejects after timeout if ice state does not reach connected/completed', async () => {
38
- mockMC.getConnectionState.returns(MC.ConnectionState.Connecting);
38
+ mockMC.getConnectionState.returns(ConnectionState.Connecting);
39
39
 
40
40
  let promiseResolved = false;
41
41
  let promiseRejected = false;
@@ -60,15 +60,15 @@ describe('MediaProperties', () => {
60
60
 
61
61
  // check that listener was registered and removed
62
62
  assert.calledOnce(mockMC.on);
63
- assert.equal(mockMC.on.getCall(0).args[0], MC.Event.CONNECTION_STATE_CHANGED);
63
+ assert.equal(mockMC.on.getCall(0).args[0], Event.CONNECTION_STATE_CHANGED);
64
64
  const listener = mockMC.on.getCall(0).args[1];
65
65
 
66
66
  assert.calledOnce(mockMC.off);
67
- assert.calledWith(mockMC.off, MC.Event.CONNECTION_STATE_CHANGED, listener);
67
+ assert.calledWith(mockMC.off, Event.CONNECTION_STATE_CHANGED, listener);
68
68
  });
69
69
 
70
70
  it(`resolves when media connection reaches "connected" state`, async () => {
71
- mockMC.getConnectionState.returns(MC.ConnectionState.Connecting);
71
+ mockMC.getConnectionState.returns(ConnectionState.Connecting);
72
72
 
73
73
  const clearTimeoutSpy = sinon.spy(clock, 'clearTimeout');
74
74
 
@@ -89,11 +89,11 @@ describe('MediaProperties', () => {
89
89
 
90
90
  // check the right listener was registered
91
91
  assert.calledOnce(mockMC.on);
92
- assert.equal(mockMC.on.getCall(0).args[0], MC.Event.CONNECTION_STATE_CHANGED);
92
+ assert.equal(mockMC.on.getCall(0).args[0], Event.CONNECTION_STATE_CHANGED);
93
93
  const listener = mockMC.on.getCall(0).args[1];
94
94
 
95
95
  // call the listener and pretend we are now connected
96
- mockMC.getConnectionState.returns(MC.ConnectionState.Connected);
96
+ mockMC.getConnectionState.returns(ConnectionState.Connected);
97
97
  listener();
98
98
  await testUtils.flushPromises();
99
99
 
@@ -102,7 +102,7 @@ describe('MediaProperties', () => {
102
102
 
103
103
  // check that listener was removed
104
104
  assert.calledOnce(mockMC.off);
105
- assert.calledWith(mockMC.off, MC.Event.CONNECTION_STATE_CHANGED, listener);
105
+ assert.calledWith(mockMC.off, Event.CONNECTION_STATE_CHANGED, listener);
106
106
 
107
107
  assert.calledOnce(clearTimeoutSpy);
108
108
  });
@@ -12,6 +12,8 @@ import MeetingUtil from '@webex/plugin-meetings/src/meeting/util';
12
12
  import createEffectsState from '@webex/plugin-meetings/src/meeting/effectsState';
13
13
  import LoggerProxy from '@webex/plugin-meetings/src/common/logs/logger-proxy';
14
14
  import LoggerConfig from '@webex/plugin-meetings/src/common/logs/logger-config';
15
+ import LLM from '@webex/internal-plugin-llm';
16
+ import Mercury from '@webex/internal-plugin-mercury';
15
17
 
16
18
  describe('plugin-meetings', () => {
17
19
  const logger = {
@@ -158,7 +160,9 @@ describe('plugin-meetings', () => {
158
160
  webex = new MockWebex({
159
161
  children: {
160
162
  meetings: Meetings,
161
- },
163
+ llm: LLM,
164
+ mercury: Mercury,
165
+ }
162
166
  });
163
167
  meeting = new Meeting(
164
168
  {
@@ -27,7 +27,9 @@ describe('plugin-meetings', () => {
27
27
  isRealTimeTranslationEnabled: null,
28
28
  canSelectSpokenLanguages: null,
29
29
  waitingForOthersToJoin: null,
30
- ...expected,
30
+ canEnableReactions: null,
31
+ canSendReactions: null,
32
+ ...expected
31
33
  };
32
34
 
33
35
  // Check get retuns all the correct values at once
@@ -61,6 +63,8 @@ describe('plugin-meetings', () => {
61
63
  'isRealTimeTranslationEnabled',
62
64
  'canSelectSpokenLanguages',
63
65
  'waitingForOthersToJoin',
66
+ 'canEnableReactions',
67
+ 'canSendReactions'
64
68
  ].forEach((key) => {
65
69
  it(`get and set for ${key} work as expected`, () => {
66
70
  const inMeetingActions = new InMeetingActions();