@webex/plugin-meetings 3.11.0 → 3.12.0-next.2

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 (170) hide show
  1. package/dist/aiEnableRequest/index.js +184 -0
  2. package/dist/aiEnableRequest/index.js.map +1 -0
  3. package/dist/aiEnableRequest/utils.js +36 -0
  4. package/dist/aiEnableRequest/utils.js.map +1 -0
  5. package/dist/annotation/index.js +14 -5
  6. package/dist/annotation/index.js.map +1 -1
  7. package/dist/breakouts/breakout.js +1 -1
  8. package/dist/breakouts/index.js +1 -1
  9. package/dist/config.js +7 -2
  10. package/dist/config.js.map +1 -1
  11. package/dist/constants.js +28 -6
  12. package/dist/constants.js.map +1 -1
  13. package/dist/hashTree/constants.js +3 -1
  14. package/dist/hashTree/constants.js.map +1 -1
  15. package/dist/hashTree/hashTree.js +18 -0
  16. package/dist/hashTree/hashTree.js.map +1 -1
  17. package/dist/hashTree/hashTreeParser.js +850 -410
  18. package/dist/hashTree/hashTreeParser.js.map +1 -1
  19. package/dist/hashTree/types.js +4 -2
  20. package/dist/hashTree/types.js.map +1 -1
  21. package/dist/hashTree/utils.js +10 -0
  22. package/dist/hashTree/utils.js.map +1 -1
  23. package/dist/index.js +11 -2
  24. package/dist/index.js.map +1 -1
  25. package/dist/interceptors/constant.js +12 -0
  26. package/dist/interceptors/constant.js.map +1 -0
  27. package/dist/interceptors/dataChannelAuthToken.js +290 -0
  28. package/dist/interceptors/dataChannelAuthToken.js.map +1 -0
  29. package/dist/interceptors/index.js +7 -0
  30. package/dist/interceptors/index.js.map +1 -1
  31. package/dist/interceptors/utils.js +27 -0
  32. package/dist/interceptors/utils.js.map +1 -0
  33. package/dist/interpretation/index.js +2 -2
  34. package/dist/interpretation/index.js.map +1 -1
  35. package/dist/interpretation/siLanguage.js +1 -1
  36. package/dist/locus-info/controlsUtils.js +5 -3
  37. package/dist/locus-info/controlsUtils.js.map +1 -1
  38. package/dist/locus-info/index.js +522 -131
  39. package/dist/locus-info/index.js.map +1 -1
  40. package/dist/locus-info/selfUtils.js +1 -0
  41. package/dist/locus-info/selfUtils.js.map +1 -1
  42. package/dist/locus-info/types.js.map +1 -1
  43. package/dist/media/MediaConnectionAwaiter.js +57 -1
  44. package/dist/media/MediaConnectionAwaiter.js.map +1 -1
  45. package/dist/media/properties.js +4 -2
  46. package/dist/media/properties.js.map +1 -1
  47. package/dist/meeting/in-meeting-actions.js +7 -1
  48. package/dist/meeting/in-meeting-actions.js.map +1 -1
  49. package/dist/meeting/index.js +1173 -877
  50. package/dist/meeting/index.js.map +1 -1
  51. package/dist/meeting/request.js +50 -0
  52. package/dist/meeting/request.js.map +1 -1
  53. package/dist/meeting/request.type.js.map +1 -1
  54. package/dist/meeting/util.js +133 -3
  55. package/dist/meeting/util.js.map +1 -1
  56. package/dist/meetings/index.js +117 -48
  57. package/dist/meetings/index.js.map +1 -1
  58. package/dist/member/index.js +10 -0
  59. package/dist/member/index.js.map +1 -1
  60. package/dist/member/util.js +10 -0
  61. package/dist/member/util.js.map +1 -1
  62. package/dist/metrics/constants.js +2 -1
  63. package/dist/metrics/constants.js.map +1 -1
  64. package/dist/multistream/mediaRequestManager.js +9 -60
  65. package/dist/multistream/mediaRequestManager.js.map +1 -1
  66. package/dist/multistream/remoteMediaManager.js +11 -0
  67. package/dist/multistream/remoteMediaManager.js.map +1 -1
  68. package/dist/reachability/index.js +18 -10
  69. package/dist/reachability/index.js.map +1 -1
  70. package/dist/reactions/reactions.type.js.map +1 -1
  71. package/dist/reconnection-manager/index.js +0 -1
  72. package/dist/reconnection-manager/index.js.map +1 -1
  73. package/dist/types/aiEnableRequest/index.d.ts +5 -0
  74. package/dist/types/aiEnableRequest/utils.d.ts +2 -0
  75. package/dist/types/config.d.ts +4 -0
  76. package/dist/types/constants.d.ts +23 -1
  77. package/dist/types/hashTree/constants.d.ts +1 -0
  78. package/dist/types/hashTree/hashTree.d.ts +7 -0
  79. package/dist/types/hashTree/hashTreeParser.d.ts +122 -14
  80. package/dist/types/hashTree/types.d.ts +3 -0
  81. package/dist/types/hashTree/utils.d.ts +6 -0
  82. package/dist/types/index.d.ts +1 -0
  83. package/dist/types/interceptors/constant.d.ts +5 -0
  84. package/dist/types/interceptors/dataChannelAuthToken.d.ts +43 -0
  85. package/dist/types/interceptors/index.d.ts +2 -1
  86. package/dist/types/interceptors/utils.d.ts +1 -0
  87. package/dist/types/locus-info/index.d.ts +60 -8
  88. package/dist/types/locus-info/types.d.ts +7 -0
  89. package/dist/types/media/MediaConnectionAwaiter.d.ts +10 -1
  90. package/dist/types/media/properties.d.ts +2 -1
  91. package/dist/types/meeting/in-meeting-actions.d.ts +6 -0
  92. package/dist/types/meeting/index.d.ts +61 -7
  93. package/dist/types/meeting/request.d.ts +16 -1
  94. package/dist/types/meeting/request.type.d.ts +5 -0
  95. package/dist/types/meeting/util.d.ts +31 -0
  96. package/dist/types/meetings/index.d.ts +4 -2
  97. package/dist/types/member/index.d.ts +1 -0
  98. package/dist/types/member/util.d.ts +5 -0
  99. package/dist/types/metrics/constants.d.ts +1 -0
  100. package/dist/types/multistream/mediaRequestManager.d.ts +0 -23
  101. package/dist/types/reactions/reactions.type.d.ts +1 -0
  102. package/dist/types/webinar/utils.d.ts +6 -0
  103. package/dist/webinar/index.js +291 -91
  104. package/dist/webinar/index.js.map +1 -1
  105. package/dist/webinar/utils.js +25 -0
  106. package/dist/webinar/utils.js.map +1 -0
  107. package/package.json +24 -23
  108. package/src/aiEnableRequest/README.md +84 -0
  109. package/src/aiEnableRequest/index.ts +170 -0
  110. package/src/aiEnableRequest/utils.ts +25 -0
  111. package/src/annotation/index.ts +27 -7
  112. package/src/config.ts +4 -0
  113. package/src/constants.ts +29 -1
  114. package/src/hashTree/constants.ts +1 -0
  115. package/src/hashTree/hashTree.ts +17 -0
  116. package/src/hashTree/hashTreeParser.ts +745 -252
  117. package/src/hashTree/types.ts +4 -0
  118. package/src/hashTree/utils.ts +9 -0
  119. package/src/index.ts +8 -1
  120. package/src/interceptors/constant.ts +6 -0
  121. package/src/interceptors/dataChannelAuthToken.ts +170 -0
  122. package/src/interceptors/index.ts +2 -1
  123. package/src/interceptors/utils.ts +16 -0
  124. package/src/interpretation/index.ts +2 -2
  125. package/src/locus-info/controlsUtils.ts +11 -0
  126. package/src/locus-info/index.ts +579 -113
  127. package/src/locus-info/selfUtils.ts +1 -0
  128. package/src/locus-info/types.ts +8 -0
  129. package/src/media/MediaConnectionAwaiter.ts +41 -1
  130. package/src/media/properties.ts +3 -1
  131. package/src/meeting/in-meeting-actions.ts +12 -0
  132. package/src/meeting/index.ts +291 -76
  133. package/src/meeting/request.ts +42 -0
  134. package/src/meeting/request.type.ts +6 -0
  135. package/src/meeting/util.ts +160 -2
  136. package/src/meetings/index.ts +157 -44
  137. package/src/member/index.ts +10 -0
  138. package/src/member/util.ts +12 -0
  139. package/src/metrics/constants.ts +1 -0
  140. package/src/multistream/mediaRequestManager.ts +4 -54
  141. package/src/multistream/remoteMediaManager.ts +13 -0
  142. package/src/reachability/index.ts +9 -0
  143. package/src/reactions/reactions.type.ts +1 -0
  144. package/src/reconnection-manager/index.ts +0 -1
  145. package/src/webinar/index.ts +191 -6
  146. package/src/webinar/utils.ts +16 -0
  147. package/test/unit/spec/aiEnableRequest/index.ts +981 -0
  148. package/test/unit/spec/aiEnableRequest/utils.ts +130 -0
  149. package/test/unit/spec/annotation/index.ts +69 -7
  150. package/test/unit/spec/hashTree/hashTree.ts +66 -0
  151. package/test/unit/spec/hashTree/hashTreeParser.ts +2225 -189
  152. package/test/unit/spec/interceptors/dataChannelAuthToken.ts +210 -0
  153. package/test/unit/spec/interceptors/utils.ts +75 -0
  154. package/test/unit/spec/locus-info/controlsUtils.js +29 -0
  155. package/test/unit/spec/locus-info/index.js +1134 -55
  156. package/test/unit/spec/media/MediaConnectionAwaiter.ts +41 -1
  157. package/test/unit/spec/media/properties.ts +12 -3
  158. package/test/unit/spec/meeting/in-meeting-actions.ts +8 -2
  159. package/test/unit/spec/meeting/index.js +829 -115
  160. package/test/unit/spec/meeting/request.js +70 -0
  161. package/test/unit/spec/meeting/utils.js +438 -26
  162. package/test/unit/spec/meetings/index.js +653 -32
  163. package/test/unit/spec/member/index.js +28 -4
  164. package/test/unit/spec/member/util.js +65 -27
  165. package/test/unit/spec/multistream/mediaRequestManager.ts +2 -85
  166. package/test/unit/spec/multistream/remoteMediaManager.ts +30 -0
  167. package/test/unit/spec/reachability/index.ts +23 -0
  168. package/test/unit/spec/reconnection-manager/index.js +4 -8
  169. package/test/unit/spec/webinar/index.ts +474 -37
  170. package/test/unit/spec/webinar/utils.ts +39 -0
@@ -50,29 +50,12 @@ export declare class MediaRequestManager {
50
50
  private degradationPreferences;
51
51
  private sourceUpdateListener;
52
52
  private debouncedSourceUpdateListener;
53
- private previousStreamRequests;
54
53
  private trimRequestsToNumOfSources;
55
54
  private numTotalSources;
56
55
  private numLiveSources;
57
56
  constructor(sendMediaRequestsCallback: SendMediaRequestsCallback, options: Options);
58
57
  setDegradationPreferences(degradationPreferences: DegradationPreferences): void;
59
58
  private getDegradedClientRequests;
60
- /**
61
- * Returns true if two stream requests are the same, false otherwise.
62
- *
63
- * @param {StreamRequest} streamRequestA - Stream request A for comparison.
64
- * @param {StreamRequest} streamRequestB - Stream request B for comparison.
65
- * @returns {boolean} - Whether they are equal.
66
- */
67
- isEqual(streamRequestA: StreamRequest, streamRequestB: StreamRequest): boolean;
68
- /**
69
- * Compares new stream requests to previous ones and determines
70
- * if they are the same.
71
- *
72
- * @param {StreamRequest[]} newRequests - Array with new requests.
73
- * @returns {boolean} - True if they are equal, false otherwise.
74
- */
75
- private checkIsNewRequestsEqualToPrev;
76
59
  /**
77
60
  * Returns the maxPayloadBitsPerSecond per Stream
78
61
  *
@@ -94,12 +77,6 @@ export declare class MediaRequestManager {
94
77
  * @returns {number} maxMbps
95
78
  */
96
79
  private getH264MaxMbps;
97
- /**
98
- * Clears the previous stream requests.
99
- *
100
- * @returns {void}
101
- */
102
- clearPreviousRequests(): void;
103
80
  /** Modifies the passed in clientRequests and makes sure that in total they don't ask
104
81
  * for more streams than there are available.
105
82
  *
@@ -32,6 +32,7 @@ export declare enum SkinToneType {
32
32
  dark = "dark"
33
33
  }
34
34
  export type Sender = {
35
+ displayName: string;
35
36
  participantId: string;
36
37
  };
37
38
  export type ProcessedReaction = {
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Remove null/undefined/empty string values from an object
3
+ * @param {object} params
4
+ * @returns {object}
5
+ */
6
+ export declare const sanitizeParams: (params: Record<string, any>) => Record<string, any>;
@@ -6,15 +6,18 @@ _Object$defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.default = void 0;
9
+ var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
9
10
  var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
10
11
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
11
12
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
12
13
  var _webexCore = require("@webex/webex-core");
13
14
  var _uuid = _interopRequireDefault(require("uuid"));
14
15
  var _lodash = require("lodash");
16
+ var _internalPluginLlm = require("@webex/internal-plugin-llm");
15
17
  var _constants = require("../constants");
16
18
  var _collection = _interopRequireDefault(require("./collection"));
17
19
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
20
+ var _utils = require("./utils");
18
21
  /*!
19
22
  * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
20
23
  */
@@ -42,6 +45,13 @@ var Webinar = _webexCore.WebexPlugin.extend({
42
45
  // practice session enabled
43
46
  meetingId: 'string'
44
47
  },
48
+ /**
49
+ * Calls this to clean up listeners
50
+ * @returns {void}
51
+ */
52
+ cleanUp: function cleanUp() {
53
+ this.cleanupPSDataChannel();
54
+ },
45
55
  /**
46
56
  * Update the current locus url of the webinar
47
57
  * @param {string} locusUrl
@@ -105,10 +115,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
105
115
  // while panelist still need subscribe native mode so trigger force update here
106
116
  meeting === null || meeting === void 0 ? void 0 : (_meeting$locusInfo = meeting.locusInfo) === null || _meeting$locusInfo === void 0 ? void 0 : _meeting$locusInfo.updateMediaShares(meeting === null || meeting === void 0 ? void 0 : (_meeting$locusInfo2 = meeting.locusInfo) === null || _meeting$locusInfo2 === void 0 ? void 0 : _meeting$locusInfo2.mediaShares, true);
107
117
  }
108
- if (this.practiceSessionEnabled) {
109
- // may need change data channel in practice session
110
- meeting === null || meeting === void 0 ? void 0 : meeting.updateLLMConnection();
111
- }
118
+ this.updatePSDataChannel();
112
119
  },
113
120
  /**
114
121
  * should join practice session data channel or not
@@ -117,6 +124,142 @@ var Webinar = _webexCore.WebexPlugin.extend({
117
124
  isJoinPracticeSessionDataChannel: function isJoinPracticeSessionDataChannel() {
118
125
  return this.selfIsPanelist && this.practiceSessionEnabled;
119
126
  },
127
+ /**
128
+ * Disconnects the practice session data channel and removes its relay listener.
129
+ * @returns {Promise<void>}
130
+ */
131
+ cleanupPSDataChannel: function cleanupPSDataChannel() {
132
+ var _this = this;
133
+ return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
134
+ var meeting;
135
+ return _regenerator.default.wrap(function (_context) {
136
+ while (1) switch (_context.prev = _context.next) {
137
+ case 0:
138
+ if (_this._pendingOnlineListener) {
139
+ // @ts-ignore - Fix type
140
+ _this.webex.internal.llm.off('online', _this._pendingOnlineListener);
141
+ _this._pendingOnlineListener = null;
142
+ }
143
+ meeting = _this.webex.meetings.getMeetingByType(_constants._ID_, _this.meetingId); // @ts-ignore - Fix type
144
+ _context.next = 1;
145
+ return _this.webex.internal.llm.disconnectLLM({
146
+ code: 3050,
147
+ reason: 'done (permanent)'
148
+ }, _constants.LLM_PRACTICE_SESSION);
149
+ case 1:
150
+ // @ts-ignore - Fix type
151
+ _this.webex.internal.llm.off("event:relay.event:".concat(_constants.LLM_PRACTICE_SESSION), meeting === null || meeting === void 0 ? void 0 : meeting.processRelayEvent);
152
+ case 2:
153
+ case "end":
154
+ return _context.stop();
155
+ }
156
+ }, _callee);
157
+ }))();
158
+ },
159
+ /**
160
+ * Connects to low latency mercury and reconnects if the address has changed
161
+ * It will also disconnect if called when the meeting has ended
162
+ * @returns {Promise}
163
+ */
164
+ updatePSDataChannel: function updatePSDataChannel() {
165
+ var _this2 = this;
166
+ return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2() {
167
+ var meeting, isPracticeSession, _ref2, _ref2$url, url, _ref2$info, _ref2$info2, _ref2$info2$practiceS, practiceSessionDatachannelUrl, practiceSessionDatachannelToken, isCaptionBoxOn, _onDefaultSessionConnected;
168
+ return _regenerator.default.wrap(function (_context2) {
169
+ while (1) switch (_context2.prev = _context2.next) {
170
+ case 0:
171
+ meeting = _this2.webex.meetings.getMeetingByType(_constants._ID_, _this2.meetingId);
172
+ isPracticeSession = (meeting === null || meeting === void 0 ? void 0 : meeting.isJoined()) && _this2.isJoinPracticeSessionDataChannel();
173
+ if (isPracticeSession) {
174
+ _context2.next = 2;
175
+ break;
176
+ }
177
+ _context2.next = 1;
178
+ return _this2.cleanupPSDataChannel();
179
+ case 1:
180
+ return _context2.abrupt("return", undefined);
181
+ case 2:
182
+ // @ts-ignore - Fix type
183
+ _ref2 = (meeting === null || meeting === void 0 ? void 0 : meeting.locusInfo) || {}, _ref2$url = _ref2.url, url = _ref2$url === void 0 ? undefined : _ref2$url, _ref2$info = _ref2.info, _ref2$info2 = _ref2$info === void 0 ? {} : _ref2$info, _ref2$info2$practiceS = _ref2$info2.practiceSessionDatachannelUrl, practiceSessionDatachannelUrl = _ref2$info2$practiceS === void 0 ? undefined : _ref2$info2$practiceS; // @ts-ignore
184
+ practiceSessionDatachannelToken = _this2.webex.internal.llm.getDatachannelToken(_internalPluginLlm.DataChannelTokenType.PracticeSession);
185
+ isCaptionBoxOn = _this2.webex.internal.voicea.getIsCaptionBoxOn();
186
+ if (practiceSessionDatachannelUrl) {
187
+ _context2.next = 3;
188
+ break;
189
+ }
190
+ return _context2.abrupt("return", undefined);
191
+ case 3:
192
+ if (!_this2.webex.internal.llm.isConnected(_constants.LLM_PRACTICE_SESSION)) {
193
+ _context2.next = 5;
194
+ break;
195
+ }
196
+ if (!(
197
+ // @ts-ignore - Fix type
198
+ url === _this2.webex.internal.llm.getLocusUrl(_constants.LLM_PRACTICE_SESSION) &&
199
+ // @ts-ignore - Fix type
200
+ practiceSessionDatachannelUrl === _this2.webex.internal.llm.getDatachannelUrl(_constants.LLM_PRACTICE_SESSION))) {
201
+ _context2.next = 4;
202
+ break;
203
+ }
204
+ return _context2.abrupt("return", undefined);
205
+ case 4:
206
+ _context2.next = 5;
207
+ return _this2.cleanupPSDataChannel();
208
+ case 5:
209
+ // Ensure the default session data channel is connected before connecting the practice session.
210
+ // Subscribe before checking isConnected() to avoid a race where the 'online' event fires
211
+ // between the check and the subscription — Mercury does not replay missed events.
212
+ if (!_this2._pendingOnlineListener) {
213
+ _onDefaultSessionConnected = function onDefaultSessionConnected() {
214
+ _this2._pendingOnlineListener = null;
215
+ // @ts-ignore - Fix type
216
+ _this2.webex.internal.llm.off('online', _onDefaultSessionConnected);
217
+ _this2.updatePSDataChannel();
218
+ };
219
+ _this2._pendingOnlineListener = _onDefaultSessionConnected;
220
+ // @ts-ignore - Fix type
221
+ _this2.webex.internal.llm.on('online', _onDefaultSessionConnected);
222
+ }
223
+
224
+ // @ts-ignore - Fix type
225
+ if (_this2.webex.internal.llm.isConnected()) {
226
+ _context2.next = 6;
227
+ break;
228
+ }
229
+ _loggerProxy.default.logger.info('Webinar:index#updatePSDataChannel --> default session not yet connected, deferring practice session connect.');
230
+ return _context2.abrupt("return", undefined);
231
+ case 6:
232
+ // Default session is already connected — cancel the pending listener and proceed
233
+ if (_this2._pendingOnlineListener) {
234
+ // @ts-ignore - Fix type
235
+ _this2.webex.internal.llm.off('online', _this2._pendingOnlineListener);
236
+ _this2._pendingOnlineListener = null;
237
+ }
238
+
239
+ // @ts-ignore - Fix type
240
+ return _context2.abrupt("return", _this2.webex.internal.llm.registerAndConnect(url, practiceSessionDatachannelUrl, practiceSessionDatachannelToken, _constants.LLM_PRACTICE_SESSION).then(function (registerAndConnectResult) {
241
+ var _this2$webex$internal, _this2$webex$internal2;
242
+ // @ts-ignore - Fix type
243
+ _this2.webex.internal.llm.off("event:relay.event:".concat(_constants.LLM_PRACTICE_SESSION), meeting === null || meeting === void 0 ? void 0 : meeting.processRelayEvent);
244
+ // @ts-ignore - Fix type
245
+ _this2.webex.internal.llm.on("event:relay.event:".concat(_constants.LLM_PRACTICE_SESSION), meeting === null || meeting === void 0 ? void 0 : meeting.processRelayEvent);
246
+ // @ts-ignore - Fix type
247
+ (_this2$webex$internal = _this2.webex.internal.voicea) === null || _this2$webex$internal === void 0 ? void 0 : (_this2$webex$internal2 = _this2$webex$internal.announce) === null || _this2$webex$internal2 === void 0 ? void 0 : _this2$webex$internal2.call(_this2$webex$internal);
248
+ if (isCaptionBoxOn) {
249
+ _this2.webex.internal.voicea.updateSubchannelSubscriptions({
250
+ subscribe: ['transcription']
251
+ });
252
+ }
253
+ _loggerProxy.default.logger.info("Webinar:index#updatePSDataChannel --> enabled to receive relay events for default session for ".concat(_constants.LLM_PRACTICE_SESSION, "!"));
254
+ return _promise.default.resolve(registerAndConnectResult);
255
+ }));
256
+ case 7:
257
+ case "end":
258
+ return _context2.stop();
259
+ }
260
+ }, _callee2);
261
+ }))();
262
+ },
120
263
  /**
121
264
  * start or stop practice session for webinar
122
265
  * @param {boolean} enabled
@@ -143,6 +286,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
143
286
  */
144
287
  updatePracticeSessionStatus: function updatePracticeSessionStatus(payload) {
145
288
  this.set('practiceSessionEnabled', !!(payload !== null && payload !== void 0 && payload.enabled));
289
+ this.updatePSDataChannel().then(function () {});
146
290
  },
147
291
  /**
148
292
  * start webcast mode for webinar
@@ -151,27 +295,27 @@ var Webinar = _webexCore.WebexPlugin.extend({
151
295
  * @returns {Promise}
152
296
  */
153
297
  startWebcast: function startWebcast(meeting, layout) {
154
- var _this = this;
155
- return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
298
+ var _this3 = this;
299
+ return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3() {
156
300
  var _t, _t2, _t3, _t4, _t5, _t6, _t7, _t8;
157
- return _regenerator.default.wrap(function (_context) {
158
- while (1) switch (_context.prev = _context.next) {
301
+ return _regenerator.default.wrap(function (_context3) {
302
+ while (1) switch (_context3.prev = _context3.next) {
159
303
  case 0:
160
304
  if (meeting) {
161
- _context.next = 1;
305
+ _context3.next = 1;
162
306
  break;
163
307
  }
164
308
  _loggerProxy.default.logger.error("Meeting:webinar#startWebcast failed --> meeting parameter : ".concat(meeting));
165
309
  throw new Error('Meeting parameter does not meet expectations');
166
310
  case 1:
167
- _t = _this;
311
+ _t = _this3;
168
312
  _t2 = _constants.HTTP_VERBS.PUT;
169
- _t3 = "".concat(_this.webcastInstanceUrl, "/streaming");
313
+ _t3 = "".concat(_this3.webcastInstanceUrl, "/streaming");
170
314
  _t4 = _defineProperty2.default;
171
- _context.next = 2;
172
- return _this.webex.credentials.getUserToken();
315
+ _context3.next = 2;
316
+ return _this3.webex.credentials.getUserToken();
173
317
  case 2:
174
- _t5 = _context.sent;
318
+ _t5 = _context3.sent;
175
319
  _t6 = "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString());
176
320
  _t7 = _t4({
177
321
  authorization: _t5,
@@ -185,7 +329,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
185
329
  },
186
330
  layout: layout
187
331
  };
188
- return _context.abrupt("return", _t.request.call(_t, {
332
+ return _context3.abrupt("return", _t.request.call(_t, {
189
333
  method: _t2,
190
334
  uri: _t3,
191
335
  headers: _t7,
@@ -196,9 +340,9 @@ var Webinar = _webexCore.WebexPlugin.extend({
196
340
  }));
197
341
  case 3:
198
342
  case "end":
199
- return _context.stop();
343
+ return _context3.stop();
200
344
  }
201
- }, _callee);
345
+ }, _callee3);
202
346
  }))();
203
347
  },
204
348
  /**
@@ -206,20 +350,20 @@ var Webinar = _webexCore.WebexPlugin.extend({
206
350
  * @returns {Promise}
207
351
  */
208
352
  stopWebcast: function stopWebcast() {
209
- var _this2 = this;
210
- return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2() {
353
+ var _this4 = this;
354
+ return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4() {
211
355
  var _t9, _t0, _t1, _t10, _t11, _t12, _t13, _t14;
212
- return _regenerator.default.wrap(function (_context2) {
213
- while (1) switch (_context2.prev = _context2.next) {
356
+ return _regenerator.default.wrap(function (_context4) {
357
+ while (1) switch (_context4.prev = _context4.next) {
214
358
  case 0:
215
- _t9 = _this2;
359
+ _t9 = _this4;
216
360
  _t0 = _constants.HTTP_VERBS.PUT;
217
- _t1 = "".concat(_this2.webcastInstanceUrl, "/streaming");
361
+ _t1 = "".concat(_this4.webcastInstanceUrl, "/streaming");
218
362
  _t10 = _defineProperty2.default;
219
- _context2.next = 1;
220
- return _this2.webex.credentials.getUserToken();
363
+ _context4.next = 1;
364
+ return _this4.webex.credentials.getUserToken();
221
365
  case 1:
222
- _t11 = _context2.sent;
366
+ _t11 = _context4.sent;
223
367
  _t12 = "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString());
224
368
  _t13 = _t10({
225
369
  authorization: _t11,
@@ -228,7 +372,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
228
372
  _t14 = {
229
373
  action: 'stop'
230
374
  };
231
- return _context2.abrupt("return", _t9.request.call(_t9, {
375
+ return _context4.abrupt("return", _t9.request.call(_t9, {
232
376
  method: _t0,
233
377
  uri: _t1,
234
378
  headers: _t13,
@@ -239,9 +383,9 @@ var Webinar = _webexCore.WebexPlugin.extend({
239
383
  }));
240
384
  case 2:
241
385
  case "end":
242
- return _context2.stop();
386
+ return _context4.stop();
243
387
  }
244
- }, _callee2);
388
+ }, _callee4);
245
389
  }))();
246
390
  },
247
391
  /**
@@ -249,25 +393,25 @@ var Webinar = _webexCore.WebexPlugin.extend({
249
393
  * @returns {Promise}
250
394
  */
251
395
  queryWebcastLayout: function queryWebcastLayout() {
252
- var _this3 = this;
253
- return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3() {
396
+ var _this5 = this;
397
+ return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5() {
254
398
  var _t15, _t16, _t17, _t18, _t19, _t20;
255
- return _regenerator.default.wrap(function (_context3) {
256
- while (1) switch (_context3.prev = _context3.next) {
399
+ return _regenerator.default.wrap(function (_context5) {
400
+ while (1) switch (_context5.prev = _context5.next) {
257
401
  case 0:
258
- _t15 = _this3;
402
+ _t15 = _this5;
259
403
  _t16 = _constants.HTTP_VERBS.GET;
260
- _t17 = "".concat(_this3.webcastInstanceUrl, "/layout");
261
- _context3.next = 1;
262
- return _this3.webex.credentials.getUserToken();
404
+ _t17 = "".concat(_this5.webcastInstanceUrl, "/layout");
405
+ _context5.next = 1;
406
+ return _this5.webex.credentials.getUserToken();
263
407
  case 1:
264
- _t18 = _context3.sent;
408
+ _t18 = _context5.sent;
265
409
  _t19 = "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString());
266
410
  _t20 = {
267
411
  authorization: _t18,
268
412
  trackingId: _t19
269
413
  };
270
- return _context3.abrupt("return", _t15.request.call(_t15, {
414
+ return _context5.abrupt("return", _t15.request.call(_t15, {
271
415
  method: _t16,
272
416
  uri: _t17,
273
417
  headers: _t20
@@ -277,9 +421,9 @@ var Webinar = _webexCore.WebexPlugin.extend({
277
421
  }));
278
422
  case 2:
279
423
  case "end":
280
- return _context3.stop();
424
+ return _context5.stop();
281
425
  }
282
- }, _callee3);
426
+ }, _callee5);
283
427
  }))();
284
428
  },
285
429
  /**
@@ -288,20 +432,20 @@ var Webinar = _webexCore.WebexPlugin.extend({
288
432
  * @returns {Promise}
289
433
  */
290
434
  updateWebcastLayout: function updateWebcastLayout(layout) {
291
- var _this4 = this;
292
- return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4() {
435
+ var _this6 = this;
436
+ return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6() {
293
437
  var _t21, _t22, _t23, _t24, _t25, _t26, _t27, _t28;
294
- return _regenerator.default.wrap(function (_context4) {
295
- while (1) switch (_context4.prev = _context4.next) {
438
+ return _regenerator.default.wrap(function (_context6) {
439
+ while (1) switch (_context6.prev = _context6.next) {
296
440
  case 0:
297
- _t21 = _this4;
441
+ _t21 = _this6;
298
442
  _t22 = _constants.HTTP_VERBS.PUT;
299
- _t23 = "".concat(_this4.webcastInstanceUrl, "/layout");
443
+ _t23 = "".concat(_this6.webcastInstanceUrl, "/layout");
300
444
  _t24 = _defineProperty2.default;
301
- _context4.next = 1;
302
- return _this4.webex.credentials.getUserToken();
445
+ _context6.next = 1;
446
+ return _this6.webex.credentials.getUserToken();
303
447
  case 1:
304
- _t25 = _context4.sent;
448
+ _t25 = _context6.sent;
305
449
  _t26 = "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString());
306
450
  _t27 = _t24({
307
451
  authorization: _t25,
@@ -313,7 +457,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
313
457
  syncStageLayout: layout.syncStageLayout,
314
458
  syncStageInMeeting: layout.syncStageInMeeting
315
459
  };
316
- return _context4.abrupt("return", _t21.request.call(_t21, {
460
+ return _context6.abrupt("return", _t21.request.call(_t21, {
317
461
  method: _t22,
318
462
  uri: _t23,
319
463
  headers: _t27,
@@ -324,36 +468,35 @@ var Webinar = _webexCore.WebexPlugin.extend({
324
468
  }));
325
469
  case 2:
326
470
  case "end":
327
- return _context4.stop();
471
+ return _context6.stop();
328
472
  }
329
- }, _callee4);
473
+ }, _callee6);
330
474
  }))();
331
475
  },
332
476
  /**
333
477
  * view all webcast attendees
334
- * @param {string} queryString
335
478
  * @returns {Promise}
336
479
  */
337
480
  viewAllWebcastAttendees: function viewAllWebcastAttendees() {
338
- var _this5 = this;
339
- return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5() {
481
+ var _this7 = this;
482
+ return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7() {
340
483
  var _t29, _t30, _t31, _t32, _t33, _t34;
341
- return _regenerator.default.wrap(function (_context5) {
342
- while (1) switch (_context5.prev = _context5.next) {
484
+ return _regenerator.default.wrap(function (_context7) {
485
+ while (1) switch (_context7.prev = _context7.next) {
343
486
  case 0:
344
- _t29 = _this5;
487
+ _t29 = _this7;
345
488
  _t30 = _constants.HTTP_VERBS.GET;
346
- _t31 = "".concat(_this5.webcastInstanceUrl, "/attendees");
347
- _context5.next = 1;
348
- return _this5.webex.credentials.getUserToken();
489
+ _t31 = "".concat(_this7.webcastInstanceUrl, "/attendees");
490
+ _context7.next = 1;
491
+ return _this7.webex.credentials.getUserToken();
349
492
  case 1:
350
- _t32 = _context5.sent;
493
+ _t32 = _context7.sent;
351
494
  _t33 = "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString());
352
495
  _t34 = {
353
496
  authorization: _t32,
354
497
  trackingId: _t33
355
498
  };
356
- return _context5.abrupt("return", _t29.request.call(_t29, {
499
+ return _context7.abrupt("return", _t29.request.call(_t29, {
357
500
  method: _t30,
358
501
  uri: _t31,
359
502
  headers: _t34
@@ -363,9 +506,9 @@ var Webinar = _webexCore.WebexPlugin.extend({
363
506
  }));
364
507
  case 2:
365
508
  case "end":
366
- return _context5.stop();
509
+ return _context7.stop();
367
510
  }
368
- }, _callee5);
511
+ }, _callee7);
369
512
  }))();
370
513
  },
371
514
  /**
@@ -375,26 +518,26 @@ var Webinar = _webexCore.WebexPlugin.extend({
375
518
  */
376
519
  searchWebcastAttendees: function searchWebcastAttendees() {
377
520
  var _arguments = arguments,
378
- _this6 = this;
379
- return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6() {
521
+ _this8 = this;
522
+ return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee8() {
380
523
  var queryString, _t35, _t36, _t37, _t38, _t39, _t40;
381
- return _regenerator.default.wrap(function (_context6) {
382
- while (1) switch (_context6.prev = _context6.next) {
524
+ return _regenerator.default.wrap(function (_context8) {
525
+ while (1) switch (_context8.prev = _context8.next) {
383
526
  case 0:
384
527
  queryString = _arguments.length > 0 && _arguments[0] !== undefined ? _arguments[0] : '';
385
- _t35 = _this6;
528
+ _t35 = _this8;
386
529
  _t36 = _constants.HTTP_VERBS.GET;
387
- _t37 = "".concat(_this6.webcastInstanceUrl, "/attendees?keyword=").concat(encodeURIComponent(queryString));
388
- _context6.next = 1;
389
- return _this6.webex.credentials.getUserToken();
530
+ _t37 = "".concat(_this8.webcastInstanceUrl, "/attendees?keyword=").concat(encodeURIComponent(queryString));
531
+ _context8.next = 1;
532
+ return _this8.webex.credentials.getUserToken();
390
533
  case 1:
391
- _t38 = _context6.sent;
534
+ _t38 = _context8.sent;
392
535
  _t39 = "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString());
393
536
  _t40 = {
394
537
  authorization: _t38,
395
538
  trackingId: _t39
396
539
  };
397
- return _context6.abrupt("return", _t35.request.call(_t35, {
540
+ return _context8.abrupt("return", _t35.request.call(_t35, {
398
541
  method: _t36,
399
542
  uri: _t37,
400
543
  headers: _t40
@@ -404,9 +547,9 @@ var Webinar = _webexCore.WebexPlugin.extend({
404
547
  }));
405
548
  case 2:
406
549
  case "end":
407
- return _context6.stop();
550
+ return _context8.stop();
408
551
  }
409
- }, _callee6);
552
+ }, _callee8);
410
553
  }))();
411
554
  },
412
555
  /**
@@ -415,25 +558,25 @@ var Webinar = _webexCore.WebexPlugin.extend({
415
558
  * @returns {Promise}
416
559
  */
417
560
  expelWebcastAttendee: function expelWebcastAttendee(participantId) {
418
- var _this7 = this;
419
- return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7() {
561
+ var _this9 = this;
562
+ return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee9() {
420
563
  var _t41, _t42, _t43, _t44, _t45, _t46;
421
- return _regenerator.default.wrap(function (_context7) {
422
- while (1) switch (_context7.prev = _context7.next) {
564
+ return _regenerator.default.wrap(function (_context9) {
565
+ while (1) switch (_context9.prev = _context9.next) {
423
566
  case 0:
424
- _t41 = _this7;
567
+ _t41 = _this9;
425
568
  _t42 = _constants.HTTP_VERBS.DELETE;
426
- _t43 = "".concat(_this7.webcastInstanceUrl, "/attendees/").concat(participantId);
427
- _context7.next = 1;
428
- return _this7.webex.credentials.getUserToken();
569
+ _t43 = "".concat(_this9.webcastInstanceUrl, "/attendees/").concat(participantId);
570
+ _context9.next = 1;
571
+ return _this9.webex.credentials.getUserToken();
429
572
  case 1:
430
- _t44 = _context7.sent;
573
+ _t44 = _context9.sent;
431
574
  _t45 = "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString());
432
575
  _t46 = {
433
576
  authorization: _t44,
434
577
  trackingId: _t45
435
578
  };
436
- return _context7.abrupt("return", _t41.request.call(_t41, {
579
+ return _context9.abrupt("return", _t41.request.call(_t41, {
437
580
  method: _t42,
438
581
  uri: _t43,
439
582
  headers: _t46
@@ -443,12 +586,69 @@ var Webinar = _webexCore.WebexPlugin.extend({
443
586
  }));
444
587
  case 2:
445
588
  case "end":
446
- return _context7.stop();
589
+ return _context9.stop();
447
590
  }
448
- }, _callee7);
591
+ }, _callee9);
592
+ }))();
593
+ },
594
+ /**
595
+ * search large scale webinar attendees
596
+ * @param {object} payload
597
+ * @param {string} payload.queryString
598
+ * @param {number} payload.limit
599
+ * @param {string} payload.next
600
+ * @returns {Promise}
601
+ */
602
+ searchLargeScaleWebinarAttendees: function searchLargeScaleWebinarAttendees(payload) {
603
+ var _this0 = this;
604
+ return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee0() {
605
+ var _payload$limit, _meeting$locusInfo3, _meeting$locusInfo3$l, _meeting$locusInfo3$l2, _meeting$locusInfo3$l3;
606
+ var meeting, rawParams, attendeeSearchUrl, _t47, _t48, _t49, _t50, _t51, _t52;
607
+ return _regenerator.default.wrap(function (_context0) {
608
+ while (1) switch (_context0.prev = _context0.next) {
609
+ case 0:
610
+ meeting = _this0.webex.meetings.getMeetingByType(_constants._ID_, _this0.meetingId);
611
+ rawParams = {
612
+ search_text: payload === null || payload === void 0 ? void 0 : payload.queryString,
613
+ limit: (_payload$limit = payload === null || payload === void 0 ? void 0 : payload.limit) !== null && _payload$limit !== void 0 ? _payload$limit : _constants.DEFAULT_LARGE_SCALE_WEBINAR_ATTENDEE_SEARCH_LIMIT,
614
+ next: payload === null || payload === void 0 ? void 0 : payload.next
615
+ };
616
+ attendeeSearchUrl = meeting === null || meeting === void 0 ? void 0 : (_meeting$locusInfo3 = meeting.locusInfo) === null || _meeting$locusInfo3 === void 0 ? void 0 : (_meeting$locusInfo3$l = _meeting$locusInfo3.links) === null || _meeting$locusInfo3$l === void 0 ? void 0 : (_meeting$locusInfo3$l2 = _meeting$locusInfo3$l.resources) === null || _meeting$locusInfo3$l2 === void 0 ? void 0 : (_meeting$locusInfo3$l3 = _meeting$locusInfo3$l2.attendeeSearch) === null || _meeting$locusInfo3$l3 === void 0 ? void 0 : _meeting$locusInfo3$l3.url;
617
+ if (attendeeSearchUrl) {
618
+ _context0.next = 1;
619
+ break;
620
+ }
621
+ _loggerProxy.default.logger.error("Meeting:webinar5k#searchLargeScaleWebinarAttendees failed");
622
+ throw new Error('Meeting:webinar5k#Attendee search url is not available');
623
+ case 1:
624
+ _t47 = _this0;
625
+ _t48 = _constants.HTTP_VERBS.GET;
626
+ _t49 = "".concat(attendeeSearchUrl, "?").concat(new URLSearchParams((0, _utils.sanitizeParams)(rawParams)).toString());
627
+ _context0.next = 2;
628
+ return _this0.webex.credentials.getUserToken();
629
+ case 2:
630
+ _t50 = _context0.sent;
631
+ _t51 = "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString());
632
+ _t52 = {
633
+ authorization: _t50,
634
+ trackingId: _t51
635
+ };
636
+ return _context0.abrupt("return", _t47.request.call(_t47, {
637
+ method: _t48,
638
+ uri: _t49,
639
+ headers: _t52
640
+ }).catch(function (error) {
641
+ _loggerProxy.default.logger.error('Meeting:webinar5k#searchLargeScaleWebinarAttendees failed', error);
642
+ throw error;
643
+ }));
644
+ case 3:
645
+ case "end":
646
+ return _context0.stop();
647
+ }
648
+ }, _callee0);
449
649
  }))();
450
650
  },
451
- version: "0.0.0"
651
+ version: "3.12.0-next.2"
452
652
  });
453
653
  var _default = exports.default = Webinar;
454
654
  //# sourceMappingURL=index.js.map