@webex/plugin-meetings 3.8.1-next.3 → 3.8.1-next.30

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 (79) 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 +21 -2
  5. package/dist/constants.js.map +1 -1
  6. package/dist/interpretation/index.js +1 -1
  7. package/dist/interpretation/siLanguage.js +1 -1
  8. package/dist/locus-info/index.js +36 -17
  9. package/dist/locus-info/index.js.map +1 -1
  10. package/dist/media/index.js +2 -2
  11. package/dist/media/index.js.map +1 -1
  12. package/dist/meeting/brbState.js +14 -12
  13. package/dist/meeting/brbState.js.map +1 -1
  14. package/dist/meeting/index.js +169 -66
  15. package/dist/meeting/index.js.map +1 -1
  16. package/dist/meeting/request.js +19 -0
  17. package/dist/meeting/request.js.map +1 -1
  18. package/dist/meeting/request.type.js.map +1 -1
  19. package/dist/meetings/index.js +35 -33
  20. package/dist/meetings/index.js.map +1 -1
  21. package/dist/members/index.js +8 -6
  22. package/dist/members/index.js.map +1 -1
  23. package/dist/members/request.js +3 -3
  24. package/dist/members/request.js.map +1 -1
  25. package/dist/members/util.js +18 -6
  26. package/dist/members/util.js.map +1 -1
  27. package/dist/multistream/mediaRequestManager.js +1 -1
  28. package/dist/multistream/mediaRequestManager.js.map +1 -1
  29. package/dist/multistream/remoteMedia.js +34 -5
  30. package/dist/multistream/remoteMedia.js.map +1 -1
  31. package/dist/multistream/remoteMediaGroup.js +42 -2
  32. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  33. package/dist/multistream/sendSlotManager.js +32 -2
  34. package/dist/multistream/sendSlotManager.js.map +1 -1
  35. package/dist/reachability/index.js +5 -10
  36. package/dist/reachability/index.js.map +1 -1
  37. package/dist/types/constants.d.ts +19 -0
  38. package/dist/types/meeting/brbState.d.ts +0 -1
  39. package/dist/types/meeting/index.d.ts +28 -4
  40. package/dist/types/meeting/request.d.ts +9 -1
  41. package/dist/types/meeting/request.type.d.ts +74 -0
  42. package/dist/types/members/index.d.ts +8 -3
  43. package/dist/types/members/request.d.ts +1 -1
  44. package/dist/types/members/util.d.ts +5 -2
  45. package/dist/types/multistream/remoteMedia.d.ts +20 -1
  46. package/dist/types/multistream/remoteMediaGroup.d.ts +11 -0
  47. package/dist/types/multistream/sendSlotManager.d.ts +16 -0
  48. package/dist/types/reachability/index.d.ts +2 -2
  49. package/dist/webinar/index.js +1 -1
  50. package/package.json +24 -24
  51. package/src/constants.ts +20 -0
  52. package/src/locus-info/index.ts +47 -20
  53. package/src/media/index.ts +2 -2
  54. package/src/meeting/brbState.ts +9 -7
  55. package/src/meeting/index.ts +126 -23
  56. package/src/meeting/request.ts +16 -0
  57. package/src/meeting/request.type.ts +64 -0
  58. package/src/meetings/index.ts +3 -2
  59. package/src/members/index.ts +7 -5
  60. package/src/members/request.ts +2 -2
  61. package/src/members/util.ts +14 -3
  62. package/src/multistream/mediaRequestManager.ts +7 -7
  63. package/src/multistream/remoteMedia.ts +34 -4
  64. package/src/multistream/remoteMediaGroup.ts +37 -2
  65. package/src/multistream/sendSlotManager.ts +34 -2
  66. package/src/reachability/index.ts +5 -13
  67. package/test/unit/spec/locus-info/index.js +177 -47
  68. package/test/unit/spec/media/index.ts +107 -0
  69. package/test/unit/spec/meeting/brbState.ts +9 -9
  70. package/test/unit/spec/meeting/index.js +606 -55
  71. package/test/unit/spec/meeting/request.js +71 -0
  72. package/test/unit/spec/meetings/index.js +1 -0
  73. package/test/unit/spec/members/index.js +32 -9
  74. package/test/unit/spec/members/request.js +2 -2
  75. package/test/unit/spec/members/utils.js +27 -7
  76. package/test/unit/spec/multistream/mediaRequestManager.ts +19 -6
  77. package/test/unit/spec/multistream/remoteMedia.ts +66 -2
  78. package/test/unit/spec/multistream/sendSlotManager.ts +59 -0
  79. package/test/unit/spec/reachability/index.ts +2 -6
@@ -115,6 +115,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
115
115
  var _this2 = this;
116
116
  var isDelta;
117
117
  var url;
118
+ var meetingDestroyed = false;
118
119
  if (this.locusParser.workingCopy.syncUrl) {
119
120
  url = this.locusParser.workingCopy.syncUrl;
120
121
  isDelta = true;
@@ -139,27 +140,43 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
139
140
  code: e.code
140
141
  });
141
142
  isDelta = false;
142
- return meeting.meetingRequest.getLocusDTO({
143
- url: meeting.locusUrl
144
- }).catch(function (err) {
145
- _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> fallback full sync failed, destroying the meeting');
146
- _this2.webex.meetings.destroy(meeting, _constants.MEETING_REMOVED_REASON.LOCUS_DTO_SYNC_FAILED);
147
- throw err;
148
- });
143
+
144
+ // Locus sometimes returns 403, for example if meeting has ended, no point trying the fallback to full sync in that case
145
+ if (e.statusCode !== 403) {
146
+ return meeting.meetingRequest.getLocusDTO({
147
+ url: meeting.locusUrl
148
+ }).catch(function (err) {
149
+ _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> fallback full sync failed, destroying the meeting');
150
+ _this2.webex.meetings.destroy(meeting, _constants.MEETING_REMOVED_REASON.LOCUS_DTO_SYNC_FAILED);
151
+ meetingDestroyed = true;
152
+ throw err;
153
+ });
154
+ }
155
+ _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> got 403 from Locus, skipping fallback to full sync, destroying the meeting');
156
+ } else {
157
+ _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> fallback full sync failed, destroying the meeting');
149
158
  }
150
- _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> fallback full sync failed, destroying the meeting');
151
159
  _this2.webex.meetings.destroy(meeting, _constants.MEETING_REMOVED_REASON.LOCUS_DTO_SYNC_FAILED);
160
+ meetingDestroyed = true;
152
161
  throw e;
153
162
  }).then(function (res) {
163
+ if ((0, _lodash.isEmpty)(res.body)) {
164
+ if (isDelta) {
165
+ _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> received empty body from syncUrl, so we already have latest Locus DTO');
166
+ } else {
167
+ _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> received empty body from full DTO sync request');
168
+ }
169
+ return;
170
+ }
154
171
  if (isDelta) {
155
- if (!(0, _lodash.isEmpty)(res.body)) {
172
+ if (res.body.baseSequence) {
156
173
  meeting.locusInfo.handleLocusDelta(res.body, meeting);
157
- } else {
158
- _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> received empty body from syncUrl, so we already have latest Locus DTO');
174
+ return;
159
175
  }
160
- } else {
161
- meeting.locusInfo.onFullLocus(res.body);
176
+ // in some cases Locus might return us full DTO even when we asked for a delta
177
+ _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> got full DTO when we asked for delta');
162
178
  }
179
+ meeting.locusInfo.onFullLocus(res.body);
163
180
  }).catch(function (e) {
164
181
  _loggerProxy.default.logger.info("Locus-info:index#doLocusSync --> getLocusDTO succeeded but failed to handle result, locus parser will resume but not all data may be synced (".concat(e.toString(), ")"));
165
182
  _metrics.default.sendBehavioralMetric(_constants2.default.LOCUS_SYNC_HANDLING_FAILED, {
@@ -171,9 +188,11 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
171
188
  code: e.code
172
189
  });
173
190
  }).finally(function () {
174
- // Notify parser to resume processing delta events.
175
- // Any deltas in the queue that have now been superseded by this sync will simply be ignored
176
- _this2.locusParser.resume();
191
+ if (!meetingDestroyed) {
192
+ // Notify parser to resume processing delta events.
193
+ // Any deltas in the queue that have now been superseded by this sync will simply be ignored
194
+ _this2.locusParser.resume();
195
+ }
177
196
  });
178
197
  }
179
198
 
@@ -461,12 +480,12 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
461
480
  this.updateCreated(locus.created);
462
481
  this.updateFullState(locus.fullState);
463
482
  this.updateHostInfo(locus.host);
483
+ this.updateLocusUrl(locus.url);
464
484
  this.updateMeetingInfo(locus.info, locus.self);
465
485
  this.updateMediaShares(locus.mediaShares);
466
486
  this.updateParticipantsUrl(locus.participantsUrl);
467
487
  this.updateReplace(locus.replace);
468
488
  this.updateSelf(locus.self);
469
- this.updateLocusUrl(locus.url);
470
489
  this.updateAclUrl(locus.aclUrl);
471
490
  this.updateBasequence(locus.baseSequence);
472
491
  this.updateSequence(locus.sequence);