@webex/plugin-meetings 2.60.1-next.1 → 2.60.1-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 (58) hide show
  1. package/README.md +12 -0
  2. package/dist/breakouts/breakout.js +1 -1
  3. package/dist/breakouts/index.js +1 -1
  4. package/dist/constants.d.ts +18 -4
  5. package/dist/constants.js +23 -9
  6. package/dist/constants.js.map +1 -1
  7. package/dist/interpretation/index.js +1 -1
  8. package/dist/interpretation/siLanguage.js +1 -1
  9. package/dist/locus-info/index.d.ts +1 -1
  10. package/dist/locus-info/index.js +8 -8
  11. package/dist/locus-info/index.js.map +1 -1
  12. package/dist/meeting/index.d.ts +119 -31
  13. package/dist/meeting/index.js +1021 -805
  14. package/dist/meeting/index.js.map +1 -1
  15. package/dist/meeting/request.js +25 -18
  16. package/dist/meeting/request.js.map +1 -1
  17. package/dist/meeting/util.d.ts +16 -0
  18. package/dist/meeting/util.js +71 -0
  19. package/dist/meeting/util.js.map +1 -1
  20. package/dist/meeting/voicea-meeting.d.ts +20 -0
  21. package/dist/meeting/voicea-meeting.js +201 -0
  22. package/dist/meeting/voicea-meeting.js.map +1 -0
  23. package/dist/meetings/index.d.ts +25 -3
  24. package/dist/meetings/index.js +83 -32
  25. package/dist/meetings/index.js.map +1 -1
  26. package/dist/reachability/index.js +11 -6
  27. package/dist/reachability/index.js.map +1 -1
  28. package/dist/reconnection-manager/index.js +3 -1
  29. package/dist/reconnection-manager/index.js.map +1 -1
  30. package/dist/roap/index.js +50 -54
  31. package/dist/roap/index.js.map +1 -1
  32. package/dist/statsAnalyzer/index.js +1 -1
  33. package/dist/statsAnalyzer/index.js.map +1 -1
  34. package/dist/statsAnalyzer/mqaUtil.js +13 -10
  35. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  36. package/dist/webinar/index.js +1 -1
  37. package/package.json +22 -21
  38. package/src/constants.ts +22 -4
  39. package/src/locus-info/index.ts +13 -12
  40. package/src/meeting/index.ts +546 -276
  41. package/src/meeting/request.ts +7 -0
  42. package/src/meeting/util.ts +97 -0
  43. package/src/meeting/voicea-meeting.ts +161 -0
  44. package/src/meetings/index.ts +59 -18
  45. package/src/reachability/index.ts +7 -4
  46. package/src/reconnection-manager/index.ts +1 -1
  47. package/src/roap/index.ts +49 -51
  48. package/src/statsAnalyzer/index.ts +2 -2
  49. package/src/statsAnalyzer/mqaUtil.ts +15 -14
  50. package/test/unit/spec/locus-info/index.js +53 -5
  51. package/test/unit/spec/meeting/index.js +1792 -1139
  52. package/test/unit/spec/meeting/request.js +22 -12
  53. package/test/unit/spec/meeting/utils.js +93 -0
  54. package/test/unit/spec/meetings/index.js +180 -21
  55. package/test/unit/spec/reachability/index.ts +2 -1
  56. package/test/unit/spec/reconnection-manager/index.js +1 -0
  57. package/test/unit/spec/roap/index.ts +28 -42
  58. package/test/unit/spec/stats-analyzer/index.js +415 -30
@@ -29,13 +29,14 @@ export const getAudioReceiverMqa = ({audioReceiver, statsResults, lastMqaDataSen
29
29
  // add rtpPacket info inside common as also for call analyzer
30
30
  audioReceiver.common.rtpPackets =
31
31
  statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;
32
+ audioReceiver.streams[0].common.rtpPackets = audioReceiver.common.rtpPackets;
33
+
32
34
  // Hop by hop are numbers and not percentage so we compare on what we sent the last min
33
35
  // collect the packets received for the last min
34
- audioReceiver.streams[0].common.rtpPackets = audioReceiver.common.rtpPackets;
35
- audioReceiver.common.mediaHopByHopLost =
36
- statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;
37
- audioReceiver.common.rtpHopByHopLost =
36
+ const totalPacketsLost =
38
37
  statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;
38
+ audioReceiver.common.mediaHopByHopLost = totalPacketsLost;
39
+ audioReceiver.common.rtpHopByHopLost = totalPacketsLost;
39
40
 
40
41
  audioReceiver.streams[0].common.maxRtpJitter =
41
42
  // @ts-ignore
@@ -49,6 +50,7 @@ export const getAudioReceiverMqa = ({audioReceiver, statsResults, lastMqaDataSen
49
50
  statsResults[mediaType][sendrecvType].fecPacketsReceived -
50
51
  lastFecPacketsReceived -
51
52
  (statsResults[mediaType][sendrecvType].fecPacketsDiscarded - lastFecPacketsDiscarded);
53
+ audioReceiver.common.fecPackets = fecRecovered || 0;
52
54
 
53
55
  audioReceiver.streams[0].common.rtpEndToEndLost =
54
56
  statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost - fecRecovered || 0;
@@ -105,7 +107,7 @@ export const getAudioSenderMqa = ({audioSender, statsResults, lastMqaDataSent, m
105
107
  statsResults[mediaType][sendrecvType].totalPacketsLostOnReceiver - lastPacketsLost;
106
108
 
107
109
  audioSender.common.remoteLossRate =
108
- totalpacketsLostForaMin > 0
110
+ audioSender.common.rtpPackets > 0
109
111
  ? (totalpacketsLostForaMin * 100) / audioSender.common.rtpPackets
110
112
  : 0; // This is the packets sent with in last min || 0;
111
113
 
@@ -156,16 +158,15 @@ export const getVideoReceiverMqa = ({videoReceiver, statsResults, lastMqaDataSen
156
158
  statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;
157
159
  videoReceiver.streams[0].common.rtpPackets = videoReceiver.common.rtpPackets;
158
160
 
159
- const totalPacketLoss =
160
- statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;
161
-
162
- // Hope by hop are numbers and not percentage so we compare on what we sent the last min
161
+ // Hop by hop are numbers and not percentage so we compare on what we sent the last min
163
162
  // this is including packet lost
164
- videoReceiver.common.mediaHopByHopLost = totalPacketLoss;
165
- videoReceiver.common.rtpHopByHopLost = totalPacketLoss;
163
+ const totalPacketsLost =
164
+ statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;
165
+ videoReceiver.common.mediaHopByHopLost = totalPacketsLost;
166
+ videoReceiver.common.rtpHopByHopLost = totalPacketsLost;
166
167
 
167
168
  // End to end packetloss is after recovery
168
- videoReceiver.streams[0].common.rtpEndToEndLost = totalPacketLoss;
169
+ videoReceiver.streams[0].common.rtpEndToEndLost = totalPacketsLost;
169
170
 
170
171
  // calculate this values
171
172
 
@@ -249,8 +250,8 @@ export const getVideoSenderMqa = ({videoSender, statsResults, lastMqaDataSent, m
249
250
  statsResults[mediaType][sendrecvType].totalPacketsLostOnReceiver - lastPacketsLost;
250
251
 
251
252
  videoSender.common.remoteLossRate =
252
- totalpacketsLostForaMin > 0
253
- ? (totalpacketsLostForaMin * 100) / (videoSender.common.rtpPackets + totalpacketsLostForaMin)
253
+ videoSender.common.rtpPackets > 0
254
+ ? (totalpacketsLostForaMin * 100) / videoSender.common.rtpPackets
254
255
  : 0; // This is the packets sent with in last min || 0;
255
256
 
256
257
  videoSender.common.maxRoundTripTime =
@@ -2058,7 +2058,7 @@ describe('plugin-meetings', () => {
2058
2058
  });
2059
2059
 
2060
2060
  describe('#getTheLocusToUpdate', () => {
2061
- it('return the cache locus if return to main session', () => {
2061
+ it('return the cache locus if return to main session and do not clear main session cache', () => {
2062
2062
  locusInfo.mainSessionLocusCache = {url: 'url'};
2063
2063
  locusInfo.controls = {
2064
2064
  breakout: {
@@ -2074,9 +2074,13 @@ describe('plugin-meetings', () => {
2074
2074
  };
2075
2075
 
2076
2076
  assert.deepEqual(locusInfo.getTheLocusToUpdate(newLocus), {url: 'url'});
2077
+
2078
+ locusInfo.clearMainSessionLocusCache = sinon.stub();
2079
+ locusInfo.getTheLocusToUpdate(newLocus);
2080
+ assert.notCalled(locusInfo.clearMainSessionLocusCache)
2077
2081
  });
2078
2082
 
2079
- it('return the new locus if return to main session but no cache', () => {
2083
+ it('return the new locus if return to main session but no cache and do not clear main session cache', () => {
2080
2084
  locusInfo.mainSessionLocusCache = null;
2081
2085
  locusInfo.controls = {
2082
2086
  breakout: {
@@ -2092,10 +2096,22 @@ describe('plugin-meetings', () => {
2092
2096
  };
2093
2097
 
2094
2098
  assert.deepEqual(locusInfo.getTheLocusToUpdate(newLocus), newLocus);
2099
+
2100
+ locusInfo.clearMainSessionLocusCache = sinon.stub();
2101
+ locusInfo.getTheLocusToUpdate(newLocus);
2102
+ assert.notCalled(locusInfo.clearMainSessionLocusCache)
2095
2103
  });
2096
2104
 
2097
- it('return the new locus if not return to main session', () => {
2098
- locusInfo.mainSessionLocusCache = {url: 'url'};
2105
+ it('return the new locus if not return to main session and clear main session cache', () => {
2106
+ locusInfo.mainSessionLocusCache = {
2107
+ controls: {
2108
+ breakout: {
2109
+ sessionType: 'MAIN',
2110
+ },
2111
+ },
2112
+ self: {removed: true}
2113
+ };
2114
+ locusInfo.fullState = {state: 'ACTIVE'}
2099
2115
  locusInfo.controls = {
2100
2116
  breakout: {
2101
2117
  sessionType: 'MAIN',
@@ -2109,7 +2125,39 @@ describe('plugin-meetings', () => {
2109
2125
  },
2110
2126
  };
2111
2127
 
2112
- assert.deepEqual(locusInfo.getTheLocusToUpdate(newLocus), newLocus);
2128
+ locusInfo.clearMainSessionLocusCache = sinon.stub();
2129
+ const result = locusInfo.getTheLocusToUpdate(newLocus);
2130
+ assert.calledOnce(locusInfo.clearMainSessionLocusCache)
2131
+
2132
+ assert.deepEqual(result, newLocus);
2133
+ });
2134
+
2135
+ it('do not clear main session cache when "mainSessionLocusCache?.self?.removed" is not true', () => {
2136
+ locusInfo.mainSessionLocusCache = {
2137
+ controls: {
2138
+ breakout: {
2139
+ sessionType: 'MAIN',
2140
+ },
2141
+ },
2142
+ self: {removed: undefined}
2143
+ };
2144
+ locusInfo.fullState = {state: 'ACTIVE'}
2145
+ locusInfo.controls = {
2146
+ breakout: {
2147
+ sessionType: 'MAIN',
2148
+ },
2149
+ };
2150
+ const newLocus = {
2151
+ controls: {
2152
+ breakout: {
2153
+ sessionType: 'BREAKOUT',
2154
+ },
2155
+ },
2156
+ };
2157
+
2158
+ locusInfo.clearMainSessionLocusCache = sinon.stub();
2159
+ locusInfo.getTheLocusToUpdate(newLocus);
2160
+ assert.notCalled(locusInfo.clearMainSessionLocusCache)
2113
2161
  });
2114
2162
  });
2115
2163