@webex/plugin-meetings 3.11.0-webex-services-ready.1 → 3.12.0-mobius-socket.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 (171) 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 +868 -419
  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 +1293 -929
  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 +6 -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/multistream/sendSlotManager.js +116 -2
  69. package/dist/multistream/sendSlotManager.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 +72 -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 +5 -0
  100. package/dist/types/multistream/mediaRequestManager.d.ts +0 -23
  101. package/dist/types/multistream/sendSlotManager.d.ts +23 -1
  102. package/dist/types/reactions/reactions.type.d.ts +1 -0
  103. package/dist/types/webinar/utils.d.ts +6 -0
  104. package/dist/webinar/index.js +438 -163
  105. package/dist/webinar/index.js.map +1 -1
  106. package/dist/webinar/utils.js +25 -0
  107. package/dist/webinar/utils.js.map +1 -0
  108. package/package.json +24 -23
  109. package/src/aiEnableRequest/README.md +84 -0
  110. package/src/aiEnableRequest/index.ts +170 -0
  111. package/src/aiEnableRequest/utils.ts +25 -0
  112. package/src/annotation/index.ts +27 -7
  113. package/src/config.ts +4 -0
  114. package/src/constants.ts +29 -1
  115. package/src/hashTree/constants.ts +1 -0
  116. package/src/hashTree/hashTree.ts +17 -0
  117. package/src/hashTree/hashTreeParser.ts +761 -260
  118. package/src/hashTree/types.ts +4 -0
  119. package/src/hashTree/utils.ts +9 -0
  120. package/src/index.ts +8 -1
  121. package/src/interceptors/constant.ts +6 -0
  122. package/src/interceptors/dataChannelAuthToken.ts +170 -0
  123. package/src/interceptors/index.ts +2 -1
  124. package/src/interceptors/utils.ts +16 -0
  125. package/src/interpretation/index.ts +2 -2
  126. package/src/locus-info/controlsUtils.ts +11 -0
  127. package/src/locus-info/index.ts +579 -113
  128. package/src/locus-info/selfUtils.ts +1 -0
  129. package/src/locus-info/types.ts +8 -0
  130. package/src/media/MediaConnectionAwaiter.ts +41 -1
  131. package/src/media/properties.ts +3 -1
  132. package/src/meeting/in-meeting-actions.ts +12 -0
  133. package/src/meeting/index.ts +372 -86
  134. package/src/meeting/request.ts +42 -0
  135. package/src/meeting/request.type.ts +6 -0
  136. package/src/meeting/util.ts +160 -2
  137. package/src/meetings/index.ts +157 -44
  138. package/src/member/index.ts +10 -0
  139. package/src/member/util.ts +12 -0
  140. package/src/metrics/constants.ts +6 -0
  141. package/src/multistream/mediaRequestManager.ts +4 -54
  142. package/src/multistream/remoteMediaManager.ts +13 -0
  143. package/src/multistream/sendSlotManager.ts +97 -3
  144. package/src/reactions/reactions.type.ts +1 -0
  145. package/src/reconnection-manager/index.ts +0 -1
  146. package/src/webinar/index.ts +265 -6
  147. package/src/webinar/utils.ts +16 -0
  148. package/test/unit/spec/aiEnableRequest/index.ts +981 -0
  149. package/test/unit/spec/aiEnableRequest/utils.ts +130 -0
  150. package/test/unit/spec/annotation/index.ts +69 -7
  151. package/test/unit/spec/hashTree/hashTree.ts +66 -0
  152. package/test/unit/spec/hashTree/hashTreeParser.ts +2321 -175
  153. package/test/unit/spec/interceptors/dataChannelAuthToken.ts +210 -0
  154. package/test/unit/spec/interceptors/utils.ts +75 -0
  155. package/test/unit/spec/locus-info/controlsUtils.js +29 -0
  156. package/test/unit/spec/locus-info/index.js +1134 -55
  157. package/test/unit/spec/media/MediaConnectionAwaiter.ts +41 -1
  158. package/test/unit/spec/media/properties.ts +12 -3
  159. package/test/unit/spec/meeting/in-meeting-actions.ts +8 -2
  160. package/test/unit/spec/meeting/index.js +829 -121
  161. package/test/unit/spec/meeting/request.js +70 -0
  162. package/test/unit/spec/meeting/utils.js +438 -26
  163. package/test/unit/spec/meetings/index.js +653 -32
  164. package/test/unit/spec/member/index.js +28 -4
  165. package/test/unit/spec/member/util.js +65 -27
  166. package/test/unit/spec/multistream/mediaRequestManager.ts +2 -85
  167. package/test/unit/spec/multistream/remoteMediaManager.ts +30 -0
  168. package/test/unit/spec/multistream/sendSlotManager.ts +135 -36
  169. package/test/unit/spec/reconnection-manager/index.js +4 -8
  170. package/test/unit/spec/webinar/index.ts +534 -37
  171. package/test/unit/spec/webinar/utils.ts +39 -0
@@ -8,11 +8,14 @@ _Object$defineProperty(exports, "__esModule", {
8
8
  exports.default = void 0;
9
9
  var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
10
10
  var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map"));
11
+ var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
11
12
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
12
13
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
13
14
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
14
15
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
15
16
  var _internalMediaCore = require("@webex/internal-media-core");
17
+ var _metrics = _interopRequireDefault(require("../metrics"));
18
+ var _constants = _interopRequireDefault(require("../metrics/constants"));
16
19
  /**
17
20
  * This class is used to manage the sendSlots for the given media types.
18
21
  */
@@ -223,6 +226,8 @@ var SendSlotManager = exports.default = /*#__PURE__*/function () {
223
226
  }
224
227
 
225
228
  /**
229
+ * @deprecated Use {@link setCustomCodecParameters} instead, which requires specifying the codec MIME type.
230
+ *
226
231
  * This method is used to set the codec parameters for the sendSlot of the given mediaType
227
232
  * @param {MediaType} mediaType MediaType of the sendSlot for which the codec parameters needs to be set (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
228
233
  * @param {Object} codecParameters
@@ -247,7 +252,11 @@ var SendSlotManager = exports.default = /*#__PURE__*/function () {
247
252
  _context3.next = 2;
248
253
  return slot.setCodecParameters(codecParameters);
249
254
  case 2:
250
- this.LoggerProxy.logger.info("SendSlotsManager->setCodecParameters#Set codec parameters for ".concat(mediaType, " to ").concat(codecParameters));
255
+ this.LoggerProxy.logger.warn('SendSlotsManager->setCodecParameters --> [DEPRECATION WARNING]: setCodecParameters has been deprecated, use setCustomCodecParameters instead');
256
+ _metrics.default.sendBehavioralMetric(_constants.default.DEPRECATED_SET_CODEC_PARAMETERS_USED, {
257
+ mediaType: mediaType,
258
+ codecParameters: codecParameters
259
+ });
251
260
  case 3:
252
261
  case "end":
253
262
  return _context3.stop();
@@ -260,6 +269,8 @@ var SendSlotManager = exports.default = /*#__PURE__*/function () {
260
269
  return setCodecParameters;
261
270
  }()
262
271
  /**
272
+ * @deprecated Use {@link markCustomCodecParametersForDeletion} instead, which requires specifying the codec MIME type.
273
+ *
263
274
  * This method is used to delete the codec parameters for the sendSlot of the given mediaType
264
275
  * @param {MediaType} mediaType MediaType of the sendSlot for which the codec parameters needs to be deleted (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
265
276
  * @param {Array<String>} parameters Array of keys of the codec parameters to be deleted
@@ -284,7 +295,11 @@ var SendSlotManager = exports.default = /*#__PURE__*/function () {
284
295
  _context4.next = 2;
285
296
  return slot.deleteCodecParameters(parameters);
286
297
  case 2:
287
- this.LoggerProxy.logger.info("SendSlotsManager->deleteCodecParameters#Deleted the following codec parameters -> ".concat(parameters, " for ").concat(mediaType));
298
+ this.LoggerProxy.logger.warn('SendSlotsManager->deleteCodecParameters --> [DEPRECATION WARNING]: deleteCodecParameters has been deprecated, use markCustomCodecParametersForDeletion instead');
299
+ _metrics.default.sendBehavioralMetric(_constants.default.DEPRECATED_DELETE_CODEC_PARAMETERS_USED, {
300
+ mediaType: mediaType,
301
+ parameters: parameters
302
+ });
288
303
  case 3:
289
304
  case "end":
290
305
  return _context4.stop();
@@ -296,6 +311,105 @@ var SendSlotManager = exports.default = /*#__PURE__*/function () {
296
311
  }
297
312
  return deleteCodecParameters;
298
313
  }()
314
+ /**
315
+ * Sets custom codec parameters for the sendSlot of the given mediaType, scoped to a specific codec MIME type.
316
+ * Delegates to WCME's setCustomCodecParameters API.
317
+ * @param {MediaType} mediaType MediaType of the sendSlot
318
+ * @param {MediaCodecMimeType} codecMimeType The codec MIME type to apply parameters to (e.g. OPUS, H264, AV1)
319
+ * @param {CodecParameters} parameters Key-value pairs of codec parameters to set
320
+ * @returns {Promise<void>}
321
+ */
322
+ )
323
+ }, {
324
+ key: "setCustomCodecParameters",
325
+ value: (function () {
326
+ var _setCustomCodecParameters = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5(mediaType, codecMimeType, parameters) {
327
+ var slot, _t;
328
+ return _regenerator.default.wrap(function (_context5) {
329
+ while (1) switch (_context5.prev = _context5.next) {
330
+ case 0:
331
+ slot = this.slots.get(mediaType);
332
+ if (slot) {
333
+ _context5.next = 1;
334
+ break;
335
+ }
336
+ throw new Error("Slot for ".concat(mediaType, " does not exist"));
337
+ case 1:
338
+ _context5.prev = 1;
339
+ _context5.next = 2;
340
+ return slot.setCustomCodecParameters(codecMimeType, parameters);
341
+ case 2:
342
+ this.LoggerProxy.logger.info("SendSlotsManager->setCustomCodecParameters#Set custom codec parameters for ".concat(mediaType, " (codec: ").concat(codecMimeType, ") to ").concat((0, _stringify.default)(parameters)));
343
+ _context5.next = 4;
344
+ break;
345
+ case 3:
346
+ _context5.prev = 3;
347
+ _t = _context5["catch"](1);
348
+ this.LoggerProxy.logger.error("SendSlotsManager->setCustomCodecParameters#Failed to set custom codec parameters for ".concat(mediaType, " (codec: ").concat(codecMimeType, "): ").concat(_t));
349
+ throw _t;
350
+ case 4:
351
+ _context5.prev = 4;
352
+ _metrics.default.sendBehavioralMetric(_constants.default.SET_CUSTOM_CODEC_PARAMETERS_USED, {
353
+ mediaType: mediaType,
354
+ codecMimeType: codecMimeType,
355
+ parameters: parameters
356
+ });
357
+ return _context5.finish(4);
358
+ case 5:
359
+ case "end":
360
+ return _context5.stop();
361
+ }
362
+ }, _callee5, this, [[1, 3, 4, 5]]);
363
+ }));
364
+ function setCustomCodecParameters(_x8, _x9, _x0) {
365
+ return _setCustomCodecParameters.apply(this, arguments);
366
+ }
367
+ return setCustomCodecParameters;
368
+ }()
369
+ /**
370
+ * Marks custom codec parameters for deletion on the sendSlot of the given mediaType, scoped to a specific codec MIME type.
371
+ * Delegates to WCME's markCustomCodecParametersForDeletion API.
372
+ * @param {MediaType} mediaType MediaType of the sendSlot
373
+ * @param {MediaCodecMimeType} codecMimeType The codec MIME type whose parameters should be deleted (e.g. OPUS, H264, AV1)
374
+ * @param {string[]} parameters Array of parameter keys to delete
375
+ * @returns {Promise<void>}
376
+ */
377
+ )
378
+ }, {
379
+ key: "markCustomCodecParametersForDeletion",
380
+ value: (function () {
381
+ var _markCustomCodecParametersForDeletion = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6(mediaType, codecMimeType, parameters) {
382
+ var slot;
383
+ return _regenerator.default.wrap(function (_context6) {
384
+ while (1) switch (_context6.prev = _context6.next) {
385
+ case 0:
386
+ slot = this.slots.get(mediaType);
387
+ if (slot) {
388
+ _context6.next = 1;
389
+ break;
390
+ }
391
+ throw new Error("Slot for ".concat(mediaType, " does not exist"));
392
+ case 1:
393
+ _context6.next = 2;
394
+ return slot.markCustomCodecParametersForDeletion(codecMimeType, parameters);
395
+ case 2:
396
+ this.LoggerProxy.logger.info("SendSlotsManager->markCustomCodecParametersForDeletion#Marked codec parameters for deletion -> ".concat(parameters, " for ").concat(mediaType, " (codec: ").concat(codecMimeType, ")"));
397
+ _metrics.default.sendBehavioralMetric(_constants.default.MARK_CUSTOM_CODEC_PARAMETERS_FOR_DELETION_USED, {
398
+ mediaType: mediaType,
399
+ codecMimeType: codecMimeType,
400
+ parameters: parameters
401
+ });
402
+ case 3:
403
+ case "end":
404
+ return _context6.stop();
405
+ }
406
+ }, _callee6, this);
407
+ }));
408
+ function markCustomCodecParametersForDeletion(_x1, _x10, _x11) {
409
+ return _markCustomCodecParametersForDeletion.apply(this, arguments);
410
+ }
411
+ return markCustomCodecParametersForDeletion;
412
+ }()
299
413
  /**
300
414
  * This method is used to reset the SendSlotsManager by deleting all the sendSlots
301
415
  * @returns {undefined}
@@ -1 +1 @@
1
- {"version":3,"names":["_internalMediaCore","require","SendSlotManager","exports","default","LoggerProxy","_classCallCheck2","_defineProperty2","_map","_createClass2","key","value","createSlot","mediaConnection","mediaType","active","arguments","length","undefined","slots","has","Error","concat","slot","createSendSlot","set","logger","info","getSlot","get","setNamedMediaGroups","namedMediaGroups","MediaType","AudioMain","setSourceStateOverride","state","VideoMain","currentStateOverride","getSourceStateOverride","sourceStateOverrides","clearSourceStateOverride","delete","_publishStream","_asyncToGenerator2","_regenerator","mark","_callee","stream","wrap","_context","prev","next","publishStream","label","muted","stop","_x","_x2","apply","_unpublishStream","_callee2","_context2","unpublishStream","_x3","setActive","_setCodecParameters","_callee3","codecParameters","_context3","setCodecParameters","_x4","_x5","_deleteCodecParameters","_callee4","parameters","_context4","deleteCodecParameters","_x6","_x7","reset","clear"],"sources":["sendSlotManager.ts"],"sourcesContent":["import {\n SendSlot,\n MediaType,\n LocalStream,\n MultistreamRoapMediaConnection,\n NamedMediaGroup,\n StreamState,\n} from '@webex/internal-media-core';\n\n/**\n * This class is used to manage the sendSlots for the given media types.\n */\nexport default class SendSlotManager {\n private readonly slots: Map<MediaType, SendSlot> = new Map();\n private readonly LoggerProxy: any;\n private readonly sourceStateOverrides: Map<MediaType, StreamState> = new Map();\n\n /**\n * Constructor for SendSlotManager\n *\n * @param {any} LoggerProxy is used to log the messages\n * @constructor\n */\n constructor(LoggerProxy: any) {\n this.LoggerProxy = LoggerProxy;\n }\n\n /**\n * This method is used to create a sendSlot for the given mediaType and returns the created sendSlot\n * @param {MultistreamRoapMediaConnection} mediaConnection MultistreamRoapMediaConnection for which a sendSlot needs to be created\n * @param {MediaType} mediaType MediaType for which a sendSlot needs to be created (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)\n * @param {boolean} active This is optional boolean to set the active state of the sendSlot. Default is true\n * @returns {SendSlot} slot The created sendSlot\n */\n public createSlot(\n mediaConnection: MultistreamRoapMediaConnection,\n mediaType: MediaType,\n active = true\n ): SendSlot {\n if (this.slots.has(mediaType)) {\n throw new Error(`Slot for ${mediaType} already exists`);\n }\n\n const slot: SendSlot = mediaConnection.createSendSlot(mediaType, active);\n\n this.slots.set(mediaType, slot);\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->createSlot#Created slot for ${mediaType} with active ${active}`\n );\n\n return slot;\n }\n\n /**\n * This method is used to retrieve the sendSlot for the given mediaType\n * @param {MediaType} mediaType of which the slot needs to be retrieved\n * @returns {SendSlot}\n */\n public getSlot(mediaType: MediaType): SendSlot {\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n return slot;\n }\n\n /**\n * Allow users to specify 'namedMediaGroups' to indicate which named media group its audio should be sent to.\n * @param {MediaType} mediaType MediaType of the sendSlot to which the audio stream needs to be send to the media group\n * @param {[]}namedMediaGroups - Allow users to specify 'namedMediaGroups'.If the value of 'namedMediaGroups' is zero,\n * named media group will be canceled and the audio stream will be sent to the floor.\n * @returns {void}\n */\n public setNamedMediaGroups(mediaType: MediaType, namedMediaGroups: NamedMediaGroup[]) {\n if (mediaType !== MediaType.AudioMain) {\n throw new Error(\n `sendSlotManager cannot set named media group which media type is ${mediaType}`\n );\n }\n\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n slot.setNamedMediaGroups(namedMediaGroups);\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->setNamedMediaGroups#set named media group ${namedMediaGroups}`\n );\n }\n\n /**\n * Sets the source state override for the given media type.\n * @param {MediaType} mediaType - The type of media (must be MediaType.VideoMain to apply source state changes).\n * @param {StreamState | null} state - The state to set or null to clear the override value.\n * @returns {void}\n */\n public setSourceStateOverride(mediaType: MediaType, state: StreamState | null) {\n if (mediaType !== MediaType.VideoMain) {\n throw new Error(\n `Invalid media type '${mediaType}'. Source state overrides are only applicable to ${MediaType.VideoMain}.`\n );\n }\n\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n const currentStateOverride = this.getSourceStateOverride(mediaType);\n if (currentStateOverride === state) {\n return;\n }\n\n if (state) {\n slot.setSourceStateOverride(state);\n this.sourceStateOverrides.set(mediaType, state);\n } else {\n slot.clearSourceStateOverride();\n this.sourceStateOverrides.delete(mediaType);\n }\n\n this.LoggerProxy.logger.info(\n `SendSlotManager->setSourceStateOverride#set source state override for ${mediaType} to ${state}`\n );\n }\n\n /**\n * Gets the source state override for the given media type.\n * @param {MediaType} mediaType - The type of media to get the source state override for.\n * @returns {StreamState | null} - The current source state override or null if not set.\n */\n private getSourceStateOverride(mediaType: MediaType): StreamState | null {\n if (mediaType !== MediaType.VideoMain) {\n throw new Error(\n `Invalid media type '${mediaType}'. Source state overrides are only applicable to ${MediaType.VideoMain}.`\n );\n }\n\n return this.sourceStateOverrides.get(mediaType) || null;\n }\n\n /**\n * This method publishes the given stream to the sendSlot for the given mediaType\n * @param {MediaType} mediaType MediaType of the sendSlot to which a stream needs to be published (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)\n * @param {LocalStream} stream LocalStream to be published\n * @returns {Promise<void>}\n */\n public async publishStream(mediaType: MediaType, stream: LocalStream): Promise<void> {\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n await slot.publishStream(stream);\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->publishStream#Published stream for ${mediaType} and stream with label ${stream.label} and muted ${stream.muted}`\n );\n }\n\n /**\n * This method unpublishes the stream from the sendSlot of the given mediaType\n * @param {MediaType} mediaType MediaType of the sendSlot from which a stream needs to be unpublished (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)\n * @returns {Promise<void>}\n */\n public async unpublishStream(mediaType: MediaType): Promise<void> {\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n await slot.unpublishStream();\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->unpublishStream#Unpublished stream for ${mediaType}`\n );\n }\n\n /**\n * This method is used to set the active state of the sendSlot for the given mediaType\n * @param {MediaType} mediaType The MediaType of the sendSlot for which the active state needs to be set (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)\n * @param {boolean} active The boolean to set the active state of the sendSlot. Default is true\n * @returns {void}\n */\n public setActive(mediaType: MediaType, active = true): void {\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n slot.active = active;\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->setActive#Set active for ${mediaType} to ${active}`\n );\n }\n\n /**\n * This method is used to set the codec parameters for the sendSlot of the given mediaType\n * @param {MediaType} mediaType MediaType of the sendSlot for which the codec parameters needs to be set (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)\n * @param {Object} codecParameters\n * @returns {Promise<void>}\n */\n public async setCodecParameters(\n mediaType: MediaType,\n codecParameters: {\n [key: string]: string | undefined; // As per ts-sdp undefined is considered as a valid value to be used for codec parameters\n }\n ): Promise<void> {\n // These codec parameter changes underneath are SDP value changes that are taken care by WCME automatically. So no need for any change in streams from the web sdk side\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n await slot.setCodecParameters(codecParameters);\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->setCodecParameters#Set codec parameters for ${mediaType} to ${codecParameters}`\n );\n }\n\n /**\n * This method is used to delete the codec parameters for the sendSlot of the given mediaType\n * @param {MediaType} mediaType MediaType of the sendSlot for which the codec parameters needs to be deleted (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)\n * @param {Array<String>} parameters Array of keys of the codec parameters to be deleted\n * @returns {Promise<void>}\n */\n public async deleteCodecParameters(mediaType: MediaType, parameters: string[]): Promise<void> {\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n await slot.deleteCodecParameters(parameters);\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->deleteCodecParameters#Deleted the following codec parameters -> ${parameters} for ${mediaType}`\n );\n }\n\n /**\n * This method is used to reset the SendSlotsManager by deleting all the sendSlots\n * @returns {undefined}\n */\n public reset(): void {\n this.slots.clear();\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_internalMediaCore","require","_metrics","_interopRequireDefault","_constants","SendSlotManager","exports","default","LoggerProxy","_classCallCheck2","_defineProperty2","_map","_createClass2","key","value","createSlot","mediaConnection","mediaType","active","arguments","length","undefined","slots","has","Error","concat","slot","createSendSlot","set","logger","info","getSlot","get","setNamedMediaGroups","namedMediaGroups","MediaType","AudioMain","setSourceStateOverride","state","VideoMain","currentStateOverride","getSourceStateOverride","sourceStateOverrides","clearSourceStateOverride","delete","_publishStream","_asyncToGenerator2","_regenerator","mark","_callee","stream","wrap","_context","prev","next","publishStream","label","muted","stop","_x","_x2","apply","_unpublishStream","_callee2","_context2","unpublishStream","_x3","setActive","_setCodecParameters","_callee3","codecParameters","_context3","setCodecParameters","warn","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","DEPRECATED_SET_CODEC_PARAMETERS_USED","_x4","_x5","_deleteCodecParameters","_callee4","parameters","_context4","deleteCodecParameters","DEPRECATED_DELETE_CODEC_PARAMETERS_USED","_x6","_x7","_setCustomCodecParameters","_callee5","codecMimeType","_t","_context5","setCustomCodecParameters","_stringify","error","SET_CUSTOM_CODEC_PARAMETERS_USED","finish","_x8","_x9","_x0","_markCustomCodecParametersForDeletion","_callee6","_context6","markCustomCodecParametersForDeletion","MARK_CUSTOM_CODEC_PARAMETERS_FOR_DELETION_USED","_x1","_x10","_x11","reset","clear"],"sources":["sendSlotManager.ts"],"sourcesContent":["import {\n SendSlot,\n MediaType,\n LocalStream,\n MultistreamRoapMediaConnection,\n NamedMediaGroup,\n StreamState,\n MediaCodecMimeType,\n CodecParameters,\n} from '@webex/internal-media-core';\nimport Metrics from '../metrics';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\n\n/**\n * This class is used to manage the sendSlots for the given media types.\n */\nexport default class SendSlotManager {\n private readonly slots: Map<MediaType, SendSlot> = new Map();\n private readonly LoggerProxy: any;\n private readonly sourceStateOverrides: Map<MediaType, StreamState> = new Map();\n\n /**\n * Constructor for SendSlotManager\n *\n * @param {any} LoggerProxy is used to log the messages\n * @constructor\n */\n constructor(LoggerProxy: any) {\n this.LoggerProxy = LoggerProxy;\n }\n\n /**\n * This method is used to create a sendSlot for the given mediaType and returns the created sendSlot\n * @param {MultistreamRoapMediaConnection} mediaConnection MultistreamRoapMediaConnection for which a sendSlot needs to be created\n * @param {MediaType} mediaType MediaType for which a sendSlot needs to be created (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)\n * @param {boolean} active This is optional boolean to set the active state of the sendSlot. Default is true\n * @returns {SendSlot} slot The created sendSlot\n */\n public createSlot(\n mediaConnection: MultistreamRoapMediaConnection,\n mediaType: MediaType,\n active = true\n ): SendSlot {\n if (this.slots.has(mediaType)) {\n throw new Error(`Slot for ${mediaType} already exists`);\n }\n\n const slot: SendSlot = mediaConnection.createSendSlot(mediaType, active);\n\n this.slots.set(mediaType, slot);\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->createSlot#Created slot for ${mediaType} with active ${active}`\n );\n\n return slot;\n }\n\n /**\n * This method is used to retrieve the sendSlot for the given mediaType\n * @param {MediaType} mediaType of which the slot needs to be retrieved\n * @returns {SendSlot}\n */\n public getSlot(mediaType: MediaType): SendSlot {\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n return slot;\n }\n\n /**\n * Allow users to specify 'namedMediaGroups' to indicate which named media group its audio should be sent to.\n * @param {MediaType} mediaType MediaType of the sendSlot to which the audio stream needs to be send to the media group\n * @param {[]}namedMediaGroups - Allow users to specify 'namedMediaGroups'.If the value of 'namedMediaGroups' is zero,\n * named media group will be canceled and the audio stream will be sent to the floor.\n * @returns {void}\n */\n public setNamedMediaGroups(mediaType: MediaType, namedMediaGroups: NamedMediaGroup[]) {\n if (mediaType !== MediaType.AudioMain) {\n throw new Error(\n `sendSlotManager cannot set named media group which media type is ${mediaType}`\n );\n }\n\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n slot.setNamedMediaGroups(namedMediaGroups);\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->setNamedMediaGroups#set named media group ${namedMediaGroups}`\n );\n }\n\n /**\n * Sets the source state override for the given media type.\n * @param {MediaType} mediaType - The type of media (must be MediaType.VideoMain to apply source state changes).\n * @param {StreamState | null} state - The state to set or null to clear the override value.\n * @returns {void}\n */\n public setSourceStateOverride(mediaType: MediaType, state: StreamState | null) {\n if (mediaType !== MediaType.VideoMain) {\n throw new Error(\n `Invalid media type '${mediaType}'. Source state overrides are only applicable to ${MediaType.VideoMain}.`\n );\n }\n\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n const currentStateOverride = this.getSourceStateOverride(mediaType);\n if (currentStateOverride === state) {\n return;\n }\n\n if (state) {\n slot.setSourceStateOverride(state);\n this.sourceStateOverrides.set(mediaType, state);\n } else {\n slot.clearSourceStateOverride();\n this.sourceStateOverrides.delete(mediaType);\n }\n\n this.LoggerProxy.logger.info(\n `SendSlotManager->setSourceStateOverride#set source state override for ${mediaType} to ${state}`\n );\n }\n\n /**\n * Gets the source state override for the given media type.\n * @param {MediaType} mediaType - The type of media to get the source state override for.\n * @returns {StreamState | null} - The current source state override or null if not set.\n */\n private getSourceStateOverride(mediaType: MediaType): StreamState | null {\n if (mediaType !== MediaType.VideoMain) {\n throw new Error(\n `Invalid media type '${mediaType}'. Source state overrides are only applicable to ${MediaType.VideoMain}.`\n );\n }\n\n return this.sourceStateOverrides.get(mediaType) || null;\n }\n\n /**\n * This method publishes the given stream to the sendSlot for the given mediaType\n * @param {MediaType} mediaType MediaType of the sendSlot to which a stream needs to be published (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)\n * @param {LocalStream} stream LocalStream to be published\n * @returns {Promise<void>}\n */\n public async publishStream(mediaType: MediaType, stream: LocalStream): Promise<void> {\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n await slot.publishStream(stream);\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->publishStream#Published stream for ${mediaType} and stream with label ${stream.label} and muted ${stream.muted}`\n );\n }\n\n /**\n * This method unpublishes the stream from the sendSlot of the given mediaType\n * @param {MediaType} mediaType MediaType of the sendSlot from which a stream needs to be unpublished (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)\n * @returns {Promise<void>}\n */\n public async unpublishStream(mediaType: MediaType): Promise<void> {\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n await slot.unpublishStream();\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->unpublishStream#Unpublished stream for ${mediaType}`\n );\n }\n\n /**\n * This method is used to set the active state of the sendSlot for the given mediaType\n * @param {MediaType} mediaType The MediaType of the sendSlot for which the active state needs to be set (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)\n * @param {boolean} active The boolean to set the active state of the sendSlot. Default is true\n * @returns {void}\n */\n public setActive(mediaType: MediaType, active = true): void {\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n slot.active = active;\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->setActive#Set active for ${mediaType} to ${active}`\n );\n }\n\n /**\n * @deprecated Use {@link setCustomCodecParameters} instead, which requires specifying the codec MIME type.\n *\n * This method is used to set the codec parameters for the sendSlot of the given mediaType\n * @param {MediaType} mediaType MediaType of the sendSlot for which the codec parameters needs to be set (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)\n * @param {Object} codecParameters\n * @returns {Promise<void>}\n */\n public async setCodecParameters(\n mediaType: MediaType,\n codecParameters: {\n [key: string]: string | undefined; // As per ts-sdp undefined is considered as a valid value to be used for codec parameters\n }\n ): Promise<void> {\n // These codec parameter changes underneath are SDP value changes that are taken care by WCME automatically. So no need for any change in streams from the web sdk side\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n await slot.setCodecParameters(codecParameters);\n\n this.LoggerProxy.logger.warn(\n 'SendSlotsManager->setCodecParameters --> [DEPRECATION WARNING]: setCodecParameters has been deprecated, use setCustomCodecParameters instead'\n );\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.DEPRECATED_SET_CODEC_PARAMETERS_USED, {\n mediaType,\n codecParameters,\n });\n }\n\n /**\n * @deprecated Use {@link markCustomCodecParametersForDeletion} instead, which requires specifying the codec MIME type.\n *\n * This method is used to delete the codec parameters for the sendSlot of the given mediaType\n * @param {MediaType} mediaType MediaType of the sendSlot for which the codec parameters needs to be deleted (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)\n * @param {Array<String>} parameters Array of keys of the codec parameters to be deleted\n * @returns {Promise<void>}\n */\n public async deleteCodecParameters(mediaType: MediaType, parameters: string[]): Promise<void> {\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n await slot.deleteCodecParameters(parameters);\n\n this.LoggerProxy.logger.warn(\n 'SendSlotsManager->deleteCodecParameters --> [DEPRECATION WARNING]: deleteCodecParameters has been deprecated, use markCustomCodecParametersForDeletion instead'\n );\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.DEPRECATED_DELETE_CODEC_PARAMETERS_USED, {\n mediaType,\n parameters,\n });\n }\n\n /**\n * Sets custom codec parameters for the sendSlot of the given mediaType, scoped to a specific codec MIME type.\n * Delegates to WCME's setCustomCodecParameters API.\n * @param {MediaType} mediaType MediaType of the sendSlot\n * @param {MediaCodecMimeType} codecMimeType The codec MIME type to apply parameters to (e.g. OPUS, H264, AV1)\n * @param {CodecParameters} parameters Key-value pairs of codec parameters to set\n * @returns {Promise<void>}\n */\n public async setCustomCodecParameters(\n mediaType: MediaType,\n codecMimeType: MediaCodecMimeType,\n parameters: CodecParameters\n ): Promise<void> {\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n try {\n await slot.setCustomCodecParameters(codecMimeType, parameters);\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->setCustomCodecParameters#Set custom codec parameters for ${mediaType} (codec: ${codecMimeType}) to ${JSON.stringify(\n parameters\n )}`\n );\n } catch (error) {\n this.LoggerProxy.logger.error(\n `SendSlotsManager->setCustomCodecParameters#Failed to set custom codec parameters for ${mediaType} (codec: ${codecMimeType}): ${error}`\n );\n throw error;\n } finally {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.SET_CUSTOM_CODEC_PARAMETERS_USED, {\n mediaType,\n codecMimeType,\n parameters,\n });\n }\n }\n\n /**\n * Marks custom codec parameters for deletion on the sendSlot of the given mediaType, scoped to a specific codec MIME type.\n * Delegates to WCME's markCustomCodecParametersForDeletion API.\n * @param {MediaType} mediaType MediaType of the sendSlot\n * @param {MediaCodecMimeType} codecMimeType The codec MIME type whose parameters should be deleted (e.g. OPUS, H264, AV1)\n * @param {string[]} parameters Array of parameter keys to delete\n * @returns {Promise<void>}\n */\n public async markCustomCodecParametersForDeletion(\n mediaType: MediaType,\n codecMimeType: MediaCodecMimeType,\n parameters: string[]\n ): Promise<void> {\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n await slot.markCustomCodecParametersForDeletion(codecMimeType, parameters);\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->markCustomCodecParametersForDeletion#Marked codec parameters for deletion -> ${parameters} for ${mediaType} (codec: ${codecMimeType})`\n );\n\n Metrics.sendBehavioralMetric(\n BEHAVIORAL_METRICS.MARK_CUSTOM_CODEC_PARAMETERS_FOR_DELETION_USED,\n {\n mediaType,\n codecMimeType,\n parameters,\n }\n );\n }\n\n /**\n * This method is used to reset the SendSlotsManager by deleting all the sendSlots\n * @returns {undefined}\n */\n public reset(): void {\n this.slots.clear();\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AAUA,IAAAC,QAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,UAAA,GAAAD,sBAAA,CAAAF,OAAA;AAEA;AACA;AACA;AAFA,IAGqBI,eAAe,GAAAC,OAAA,CAAAC,OAAA;EAKlC;AACF;AACA;AACA;AACA;AACA;EACE,SAAAF,gBAAYG,WAAgB,EAAE;IAAA,IAAAC,gBAAA,CAAAF,OAAA,QAAAF,eAAA;IAAA,IAAAK,gBAAA,CAAAH,OAAA,iBAVqB,IAAAI,IAAA,CAAAJ,OAAA,CAAQ,CAAC;IAAA,IAAAG,gBAAA,CAAAH,OAAA;IAAA,IAAAG,gBAAA,CAAAH,OAAA,gCAES,IAAAI,IAAA,CAAAJ,OAAA,CAAQ,CAAC;IAS5E,IAAI,CAACC,WAAW,GAAGA,WAAW;EAChC;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE,WAAAI,aAAA,CAAAL,OAAA,EAAAF,eAAA;IAAAQ,GAAA;IAAAC,KAAA,EAOA,SAAOC,UAAUA,CACfC,eAA+C,EAC/CC,SAAoB,EAEV;MAAA,IADVC,MAAM,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;MAEb,IAAI,IAAI,CAACG,KAAK,CAACC,GAAG,CAACN,SAAS,CAAC,EAAE;QAC7B,MAAM,IAAIO,KAAK,aAAAC,MAAA,CAAaR,SAAS,oBAAiB,CAAC;MACzD;MAEA,IAAMS,IAAc,GAAGV,eAAe,CAACW,cAAc,CAACV,SAAS,EAAEC,MAAM,CAAC;MAExE,IAAI,CAACI,KAAK,CAACM,GAAG,CAACX,SAAS,EAAES,IAAI,CAAC;MAE/B,IAAI,CAAClB,WAAW,CAACqB,MAAM,CAACC,IAAI,kDAAAL,MAAA,CACuBR,SAAS,mBAAAQ,MAAA,CAAgBP,MAAM,CAClF,CAAC;MAED,OAAOQ,IAAI;IACb;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAb,GAAA;IAAAC,KAAA,EAKA,SAAOiB,OAAOA,CAACd,SAAoB,EAAY;MAC7C,IAAMS,IAAI,GAAG,IAAI,CAACJ,KAAK,CAACU,GAAG,CAACf,SAAS,CAAC;MAEtC,IAAI,CAACS,IAAI,EAAE;QACT,MAAM,IAAIF,KAAK,aAAAC,MAAA,CAAaR,SAAS,oBAAiB,CAAC;MACzD;MAEA,OAAOS,IAAI;IACb;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAb,GAAA;IAAAC,KAAA,EAOA,SAAOmB,mBAAmBA,CAAChB,SAAoB,EAAEiB,gBAAmC,EAAE;MACpF,IAAIjB,SAAS,KAAKkB,4BAAS,CAACC,SAAS,EAAE;QACrC,MAAM,IAAIZ,KAAK,qEAAAC,MAAA,CACuDR,SAAS,CAC/E,CAAC;MACH;MAEA,IAAMS,IAAI,GAAG,IAAI,CAACJ,KAAK,CAACU,GAAG,CAACf,SAAS,CAAC;MAEtC,IAAI,CAACS,IAAI,EAAE;QACT,MAAM,IAAIF,KAAK,aAAAC,MAAA,CAAaR,SAAS,oBAAiB,CAAC;MACzD;MAEAS,IAAI,CAACO,mBAAmB,CAACC,gBAAgB,CAAC;MAE1C,IAAI,CAAC1B,WAAW,CAACqB,MAAM,CAACC,IAAI,gEAAAL,MAAA,CACqCS,gBAAgB,CACjF,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAArB,GAAA;IAAAC,KAAA,EAMA,SAAOuB,sBAAsBA,CAACpB,SAAoB,EAAEqB,KAAyB,EAAE;MAC7E,IAAIrB,SAAS,KAAKkB,4BAAS,CAACI,SAAS,EAAE;QACrC,MAAM,IAAIf,KAAK,wBAAAC,MAAA,CACUR,SAAS,uDAAAQ,MAAA,CAAoDU,4BAAS,CAACI,SAAS,MACzG,CAAC;MACH;MAEA,IAAMb,IAAI,GAAG,IAAI,CAACJ,KAAK,CAACU,GAAG,CAACf,SAAS,CAAC;MAEtC,IAAI,CAACS,IAAI,EAAE;QACT,MAAM,IAAIF,KAAK,aAAAC,MAAA,CAAaR,SAAS,oBAAiB,CAAC;MACzD;MAEA,IAAMuB,oBAAoB,GAAG,IAAI,CAACC,sBAAsB,CAACxB,SAAS,CAAC;MACnE,IAAIuB,oBAAoB,KAAKF,KAAK,EAAE;QAClC;MACF;MAEA,IAAIA,KAAK,EAAE;QACTZ,IAAI,CAACW,sBAAsB,CAACC,KAAK,CAAC;QAClC,IAAI,CAACI,oBAAoB,CAACd,GAAG,CAACX,SAAS,EAAEqB,KAAK,CAAC;MACjD,CAAC,MAAM;QACLZ,IAAI,CAACiB,wBAAwB,CAAC,CAAC;QAC/B,IAAI,CAACD,oBAAoB,CAACE,MAAM,CAAC3B,SAAS,CAAC;MAC7C;MAEA,IAAI,CAACT,WAAW,CAACqB,MAAM,CAACC,IAAI,0EAAAL,MAAA,CAC+CR,SAAS,UAAAQ,MAAA,CAAOa,KAAK,CAChG,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAzB,GAAA;IAAAC,KAAA,EAKA,SAAQ2B,sBAAsBA,CAACxB,SAAoB,EAAsB;MACvE,IAAIA,SAAS,KAAKkB,4BAAS,CAACI,SAAS,EAAE;QACrC,MAAM,IAAIf,KAAK,wBAAAC,MAAA,CACUR,SAAS,uDAAAQ,MAAA,CAAoDU,4BAAS,CAACI,SAAS,MACzG,CAAC;MACH;MAEA,OAAO,IAAI,CAACG,oBAAoB,CAACV,GAAG,CAACf,SAAS,CAAC,IAAI,IAAI;IACzD;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAJ,GAAA;IAAAC,KAAA;MAAA,IAAA+B,cAAA,OAAAC,kBAAA,CAAAvC,OAAA,eAAAwC,YAAA,CAAAxC,OAAA,CAAAyC,IAAA,CAMA,SAAAC,QAA2BhC,SAAoB,EAAEiC,MAAmB;QAAA,IAAAxB,IAAA;QAAA,OAAAqB,YAAA,CAAAxC,OAAA,CAAA4C,IAAA,WAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;YAAA;cAC5D5B,IAAI,GAAG,IAAI,CAACJ,KAAK,CAACU,GAAG,CAACf,SAAS,CAAC;cAAA,IAEjCS,IAAI;gBAAA0B,QAAA,CAAAE,IAAA;gBAAA;cAAA;cAAA,MACD,IAAI9B,KAAK,aAAAC,MAAA,CAAaR,SAAS,oBAAiB,CAAC;YAAA;cAAAmC,QAAA,CAAAE,IAAA;cAAA,OAGnD5B,IAAI,CAAC6B,aAAa,CAACL,MAAM,CAAC;YAAA;cAEhC,IAAI,CAAC1C,WAAW,CAACqB,MAAM,CAACC,IAAI,yDAAAL,MAAA,CAC8BR,SAAS,6BAAAQ,MAAA,CAA0ByB,MAAM,CAACM,KAAK,iBAAA/B,MAAA,CAAcyB,MAAM,CAACO,KAAK,CACnI,CAAC;YAAC;YAAA;cAAA,OAAAL,QAAA,CAAAM,IAAA;UAAA;QAAA,GAAAT,OAAA;MAAA,CACH;MAAA,SAZYM,aAAaA,CAAAI,EAAA,EAAAC,GAAA;QAAA,OAAAf,cAAA,CAAAgB,KAAA,OAAA1C,SAAA;MAAA;MAAA,OAAboC,aAAa;IAAA;IAc1B;AACF;AACA;AACA;AACA;IAJE;EAAA;IAAA1C,GAAA;IAAAC,KAAA;MAAA,IAAAgD,gBAAA,OAAAhB,kBAAA,CAAAvC,OAAA,eAAAwC,YAAA,CAAAxC,OAAA,CAAAyC,IAAA,CAKA,SAAAe,SAA6B9C,SAAoB;QAAA,IAAAS,IAAA;QAAA,OAAAqB,YAAA,CAAAxC,OAAA,CAAA4C,IAAA,WAAAa,SAAA;UAAA,kBAAAA,SAAA,CAAAX,IAAA,GAAAW,SAAA,CAAAV,IAAA;YAAA;cACzC5B,IAAI,GAAG,IAAI,CAACJ,KAAK,CAACU,GAAG,CAACf,SAAS,CAAC;cAAA,IAEjCS,IAAI;gBAAAsC,SAAA,CAAAV,IAAA;gBAAA;cAAA;cAAA,MACD,IAAI9B,KAAK,aAAAC,MAAA,CAAaR,SAAS,oBAAiB,CAAC;YAAA;cAAA+C,SAAA,CAAAV,IAAA;cAAA,OAGnD5B,IAAI,CAACuC,eAAe,CAAC,CAAC;YAAA;cAE5B,IAAI,CAACzD,WAAW,CAACqB,MAAM,CAACC,IAAI,6DAAAL,MAAA,CACkCR,SAAS,CACvE,CAAC;YAAC;YAAA;cAAA,OAAA+C,SAAA,CAAAN,IAAA;UAAA;QAAA,GAAAK,QAAA;MAAA,CACH;MAAA,SAZYE,eAAeA,CAAAC,GAAA;QAAA,OAAAJ,gBAAA,CAAAD,KAAA,OAAA1C,SAAA;MAAA;MAAA,OAAf8C,eAAe;IAAA;IAc5B;AACF;AACA;AACA;AACA;AACA;IALE;EAAA;IAAApD,GAAA;IAAAC,KAAA,EAMA,SAAOqD,SAASA,CAAClD,SAAoB,EAAuB;MAAA,IAArBC,MAAM,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;MAClD,IAAMO,IAAI,GAAG,IAAI,CAACJ,KAAK,CAACU,GAAG,CAACf,SAAS,CAAC;MAEtC,IAAI,CAACS,IAAI,EAAE;QACT,MAAM,IAAIF,KAAK,aAAAC,MAAA,CAAaR,SAAS,oBAAiB,CAAC;MACzD;MAEAS,IAAI,CAACR,MAAM,GAAGA,MAAM;MAEpB,IAAI,CAACV,WAAW,CAACqB,MAAM,CAACC,IAAI,+CAAAL,MAAA,CACoBR,SAAS,UAAAQ,MAAA,CAAOP,MAAM,CACtE,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAAL,GAAA;IAAAC,KAAA;MAAA,IAAAsD,mBAAA,OAAAtB,kBAAA,CAAAvC,OAAA,eAAAwC,YAAA,CAAAxC,OAAA,CAAAyC,IAAA,CAQA,SAAAqB,SACEpD,SAAoB,EACpBqD,eAEC;QAAA,IAAA5C,IAAA;QAAA,OAAAqB,YAAA,CAAAxC,OAAA,CAAA4C,IAAA,WAAAoB,SAAA;UAAA,kBAAAA,SAAA,CAAAlB,IAAA,GAAAkB,SAAA,CAAAjB,IAAA;YAAA;cAED;cACM5B,IAAI,GAAG,IAAI,CAACJ,KAAK,CAACU,GAAG,CAACf,SAAS,CAAC;cAAA,IAEjCS,IAAI;gBAAA6C,SAAA,CAAAjB,IAAA;gBAAA;cAAA;cAAA,MACD,IAAI9B,KAAK,aAAAC,MAAA,CAAaR,SAAS,oBAAiB,CAAC;YAAA;cAAAsD,SAAA,CAAAjB,IAAA;cAAA,OAGnD5B,IAAI,CAAC8C,kBAAkB,CAACF,eAAe,CAAC;YAAA;cAE9C,IAAI,CAAC9D,WAAW,CAACqB,MAAM,CAAC4C,IAAI,CAC1B,8IACF,CAAC;cAEDC,gBAAO,CAACC,oBAAoB,CAACC,kBAAkB,CAACC,oCAAoC,EAAE;gBACpF5D,SAAS,EAATA,SAAS;gBACTqD,eAAe,EAAfA;cACF,CAAC,CAAC;YAAC;YAAA;cAAA,OAAAC,SAAA,CAAAb,IAAA;UAAA;QAAA,GAAAW,QAAA;MAAA,CACJ;MAAA,SAvBYG,kBAAkBA,CAAAM,GAAA,EAAAC,GAAA;QAAA,OAAAX,mBAAA,CAAAP,KAAA,OAAA1C,SAAA;MAAA;MAAA,OAAlBqD,kBAAkB;IAAA;IAyB/B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;IAPE;EAAA;IAAA3D,GAAA;IAAAC,KAAA;MAAA,IAAAkE,sBAAA,OAAAlC,kBAAA,CAAAvC,OAAA,eAAAwC,YAAA,CAAAxC,OAAA,CAAAyC,IAAA,CAQA,SAAAiC,SAAmChE,SAAoB,EAAEiE,UAAoB;QAAA,IAAAxD,IAAA;QAAA,OAAAqB,YAAA,CAAAxC,OAAA,CAAA4C,IAAA,WAAAgC,SAAA;UAAA,kBAAAA,SAAA,CAAA9B,IAAA,GAAA8B,SAAA,CAAA7B,IAAA;YAAA;cACrE5B,IAAI,GAAG,IAAI,CAACJ,KAAK,CAACU,GAAG,CAACf,SAAS,CAAC;cAAA,IAEjCS,IAAI;gBAAAyD,SAAA,CAAA7B,IAAA;gBAAA;cAAA;cAAA,MACD,IAAI9B,KAAK,aAAAC,MAAA,CAAaR,SAAS,oBAAiB,CAAC;YAAA;cAAAkE,SAAA,CAAA7B,IAAA;cAAA,OAGnD5B,IAAI,CAAC0D,qBAAqB,CAACF,UAAU,CAAC;YAAA;cAE5C,IAAI,CAAC1E,WAAW,CAACqB,MAAM,CAAC4C,IAAI,CAC1B,gKACF,CAAC;cAEDC,gBAAO,CAACC,oBAAoB,CAACC,kBAAkB,CAACS,uCAAuC,EAAE;gBACvFpE,SAAS,EAATA,SAAS;gBACTiE,UAAU,EAAVA;cACF,CAAC,CAAC;YAAC;YAAA;cAAA,OAAAC,SAAA,CAAAzB,IAAA;UAAA;QAAA,GAAAuB,QAAA;MAAA,CACJ;MAAA,SAjBYG,qBAAqBA,CAAAE,GAAA,EAAAC,GAAA;QAAA,OAAAP,sBAAA,CAAAnB,KAAA,OAAA1C,SAAA;MAAA;MAAA,OAArBiE,qBAAqB;IAAA;IAmBlC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;IAPE;EAAA;IAAAvE,GAAA;IAAAC,KAAA;MAAA,IAAA0E,yBAAA,OAAA1C,kBAAA,CAAAvC,OAAA,eAAAwC,YAAA,CAAAxC,OAAA,CAAAyC,IAAA,CAQA,SAAAyC,SACExE,SAAoB,EACpByE,aAAiC,EACjCR,UAA2B;QAAA,IAAAxD,IAAA,EAAAiE,EAAA;QAAA,OAAA5C,YAAA,CAAAxC,OAAA,CAAA4C,IAAA,WAAAyC,SAAA;UAAA,kBAAAA,SAAA,CAAAvC,IAAA,GAAAuC,SAAA,CAAAtC,IAAA;YAAA;cAErB5B,IAAI,GAAG,IAAI,CAACJ,KAAK,CAACU,GAAG,CAACf,SAAS,CAAC;cAAA,IAEjCS,IAAI;gBAAAkE,SAAA,CAAAtC,IAAA;gBAAA;cAAA;cAAA,MACD,IAAI9B,KAAK,aAAAC,MAAA,CAAaR,SAAS,oBAAiB,CAAC;YAAA;cAAA2E,SAAA,CAAAvC,IAAA;cAAAuC,SAAA,CAAAtC,IAAA;cAAA,OAIjD5B,IAAI,CAACmE,wBAAwB,CAACH,aAAa,EAAER,UAAU,CAAC;YAAA;cAE9D,IAAI,CAAC1E,WAAW,CAACqB,MAAM,CAACC,IAAI,+EAAAL,MAAA,CACoDR,SAAS,eAAAQ,MAAA,CAAYiE,aAAa,WAAAjE,MAAA,CAAQ,IAAAqE,UAAA,CAAAvF,OAAA,EACtH2E,UACF,CAAC,CACH,CAAC;cAACU,SAAA,CAAAtC,IAAA;cAAA;YAAA;cAAAsC,SAAA,CAAAvC,IAAA;cAAAsC,EAAA,GAAAC,SAAA;cAEF,IAAI,CAACpF,WAAW,CAACqB,MAAM,CAACkE,KAAK,yFAAAtE,MAAA,CAC6DR,SAAS,eAAAQ,MAAA,CAAYiE,aAAa,SAAAjE,MAAA,CAAAkE,EAAA,CAC5H,CAAC;cAAC,MAAAA,EAAA;YAAA;cAAAC,SAAA,CAAAvC,IAAA;cAGFqB,gBAAO,CAACC,oBAAoB,CAACC,kBAAkB,CAACoB,gCAAgC,EAAE;gBAChF/E,SAAS,EAATA,SAAS;gBACTyE,aAAa,EAAbA,aAAa;gBACbR,UAAU,EAAVA;cACF,CAAC,CAAC;cAAC,OAAAU,SAAA,CAAAK,MAAA;YAAA;YAAA;cAAA,OAAAL,SAAA,CAAAlC,IAAA;UAAA;QAAA,GAAA+B,QAAA;MAAA,CAEN;MAAA,SA/BYI,wBAAwBA,CAAAK,GAAA,EAAAC,GAAA,EAAAC,GAAA;QAAA,OAAAZ,yBAAA,CAAA3B,KAAA,OAAA1C,SAAA;MAAA;MAAA,OAAxB0E,wBAAwB;IAAA;IAiCrC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;IAPE;EAAA;IAAAhF,GAAA;IAAAC,KAAA;MAAA,IAAAuF,qCAAA,OAAAvD,kBAAA,CAAAvC,OAAA,eAAAwC,YAAA,CAAAxC,OAAA,CAAAyC,IAAA,CAQA,SAAAsD,SACErF,SAAoB,EACpByE,aAAiC,EACjCR,UAAoB;QAAA,IAAAxD,IAAA;QAAA,OAAAqB,YAAA,CAAAxC,OAAA,CAAA4C,IAAA,WAAAoD,SAAA;UAAA,kBAAAA,SAAA,CAAAlD,IAAA,GAAAkD,SAAA,CAAAjD,IAAA;YAAA;cAEd5B,IAAI,GAAG,IAAI,CAACJ,KAAK,CAACU,GAAG,CAACf,SAAS,CAAC;cAAA,IAEjCS,IAAI;gBAAA6E,SAAA,CAAAjD,IAAA;gBAAA;cAAA;cAAA,MACD,IAAI9B,KAAK,aAAAC,MAAA,CAAaR,SAAS,oBAAiB,CAAC;YAAA;cAAAsF,SAAA,CAAAjD,IAAA;cAAA,OAGnD5B,IAAI,CAAC8E,oCAAoC,CAACd,aAAa,EAAER,UAAU,CAAC;YAAA;cAE1E,IAAI,CAAC1E,WAAW,CAACqB,MAAM,CAACC,IAAI,mGAAAL,MAAA,CACwEyD,UAAU,WAAAzD,MAAA,CAAQR,SAAS,eAAAQ,MAAA,CAAYiE,aAAa,MACxJ,CAAC;cAEDhB,gBAAO,CAACC,oBAAoB,CAC1BC,kBAAkB,CAAC6B,8CAA8C,EACjE;gBACExF,SAAS,EAATA,SAAS;gBACTyE,aAAa,EAAbA,aAAa;gBACbR,UAAU,EAAVA;cACF,CACF,CAAC;YAAC;YAAA;cAAA,OAAAqB,SAAA,CAAA7C,IAAA;UAAA;QAAA,GAAA4C,QAAA;MAAA,CACH;MAAA,SAzBYE,oCAAoCA,CAAAE,GAAA,EAAAC,IAAA,EAAAC,IAAA;QAAA,OAAAP,qCAAA,CAAAxC,KAAA,OAAA1C,SAAA;MAAA;MAAA,OAApCqF,oCAAoC;IAAA;IA2BjD;AACF;AACA;AACA;IAHE;EAAA;IAAA3F,GAAA;IAAAC,KAAA,EAIA,SAAO+F,KAAKA,CAAA,EAAS;MACnB,IAAI,CAACvF,KAAK,CAACwF,KAAK,CAAC,CAAC;IACpB;EAAC;AAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["ReactionServerType","exports","SkinToneType"],"sources":["reactions.type.ts"],"sourcesContent":["import {REACTION_RELAY_TYPES} from './constants';\n\nexport type EmoticonData = {\n type: string;\n codepoints?: string;\n shortcodes?: string;\n};\n\nexport type SkinTone = EmoticonData;\n\nexport type Reaction = EmoticonData & {\n tone?: SkinTone;\n};\n\n// eslint-disable-next-line no-shadow\nexport enum ReactionServerType {\n smile = 'smile',\n sad = 'sad',\n wow = 'wow',\n haha = 'haha',\n celebrate = 'celebrate',\n clap = 'clap',\n thumb_up = 'thumb_up',\n thumb_down = 'thumb_down',\n heart = 'heart',\n fire = 'fire',\n prayer = 'prayer',\n speed_up = 'speed_up',\n slow_down = 'slow_down',\n}\n\n// eslint-disable-next-line no-shadow\nexport enum SkinToneType {\n normal = 'normal',\n light = 'light',\n medium_light = 'medium_light',\n medium = 'medium',\n medium_dark = 'medium_dark',\n dark = 'dark',\n}\n\nexport type Sender = {\n participantId: string;\n};\n\nexport type ProcessedReaction = {\n reaction: Reaction;\n sender: {\n id: Sender['participantId'];\n name: string;\n };\n};\n\ntype RelayEventData = {\n relayType: (typeof REACTION_RELAY_TYPES)['REACTION'];\n reaction: Reaction;\n sender: Sender;\n};\n\nexport type RelayEvent = {\n data: RelayEventData;\n};\n"],"mappings":";;;;;;;AAcA;AAAA,IACYA,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA,OAgB9B;AAAA,IACYE,YAAY,GAAAD,OAAA,CAAAC,YAAA,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["ReactionServerType","exports","SkinToneType"],"sources":["reactions.type.ts"],"sourcesContent":["import {REACTION_RELAY_TYPES} from './constants';\n\nexport type EmoticonData = {\n type: string;\n codepoints?: string;\n shortcodes?: string;\n};\n\nexport type SkinTone = EmoticonData;\n\nexport type Reaction = EmoticonData & {\n tone?: SkinTone;\n};\n\n// eslint-disable-next-line no-shadow\nexport enum ReactionServerType {\n smile = 'smile',\n sad = 'sad',\n wow = 'wow',\n haha = 'haha',\n celebrate = 'celebrate',\n clap = 'clap',\n thumb_up = 'thumb_up',\n thumb_down = 'thumb_down',\n heart = 'heart',\n fire = 'fire',\n prayer = 'prayer',\n speed_up = 'speed_up',\n slow_down = 'slow_down',\n}\n\n// eslint-disable-next-line no-shadow\nexport enum SkinToneType {\n normal = 'normal',\n light = 'light',\n medium_light = 'medium_light',\n medium = 'medium',\n medium_dark = 'medium_dark',\n dark = 'dark',\n}\n\nexport type Sender = {\n displayName: string;\n participantId: string;\n};\n\nexport type ProcessedReaction = {\n reaction: Reaction;\n sender: {\n id: Sender['participantId'];\n name: string;\n };\n};\n\ntype RelayEventData = {\n relayType: (typeof REACTION_RELAY_TYPES)['REACTION'];\n reaction: Reaction;\n sender: Sender;\n};\n\nexport type RelayEvent = {\n data: RelayEventData;\n};\n"],"mappings":";;;;;;;AAcA;AAAA,IACYA,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA,OAgB9B;AAAA,IACYE,YAAY,GAAAD,OAAA,CAAAC,YAAA,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA","ignoreList":[]}
@@ -706,7 +706,6 @@ var ReconnectionManager = exports.default = /*#__PURE__*/function () {
706
706
  // resend media requests
707
707
  if (this.meeting.isMultistream) {
708
708
  (0, _values.default)(this.meeting.mediaRequestManagers).forEach(function (mediaRequestManager) {
709
- mediaRequestManager.clearPreviousRequests();
710
709
  mediaRequestManager.commit();
711
710
  });
712
711
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_loggerProxy","_interopRequireDefault","require","_triggerProxy","_constants","_constants2","_reconnection","_reconnectionNotStarted","_metrics","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","NeedsRetryError","_Error","_classCallCheck2","arguments","_inherits2","_createClass2","_wrapNativeSuper2","Error","NeedsRejoinError","_Error2","_ref","_this","wasSharing","_ref$error","error","_defineProperty2","ReconnectionManager","exports","meeting","iceState","disconnected","resolve","timer","undefined","timeoutDuration","config","reconnection","iceReconnectionTimeout","status","RECONNECTION","STATE","DEFAULT_STATUS","webex","maxRejoinAttempts","rejoinAttempts","autoRejoinEnabled","autoRejoin","reset","key","value","resetReconnectionTimer","clearTimeout","iceReconnected","LoggerProxy","logger","log","waitForIceReconnect","_this2","_promise","reject","setTimeout","concat","cleanUp","_stopLocalShareStream","_asyncToGenerator2","_regenerator","mark","_callee","reason","wrap","_context","prev","next","unpublishStreams","mediaProperties","shareVideoStream","shareAudioStream","Trigger","trigger","file","function","EVENT_TRIGGERS","MEETING_STOPPED_SHARING_LOCAL","stop","stopLocalShareStream","_x","isReconnectInProgress","IN_PROGRESS","canStartReconnection","enabled","info","_reconnect","_callee2","_this3","_ref2","_ref2$networkDisconne","networkDisconnect","_ref2$networkRetry","networkRetry","completionCallback","triggerEvent","_args2","_t","_t2","_t3","_context2","length","id","event","payload","ReconnectionNotStartedError","MEETING_RECONNECTION_STARTING","internal","newMetrics","submitClientEvent","name","options","meetingId","meetings","startReachability","executeReconnection","reconnect","abrupt","message","errors","category","errorCode","fatal","shownToUser","rejoinMeeting","MEETING_RECONNECTION_SUCCESS","recoveredBy","MEETING_RECONNECTION_FAILURE","ReconnectionError","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","MEETING_RECONNECT_FAILURE","correlation_id","correlationId","locus_id","locusUrl","split","pop","stack","finish","_executeReconnection","_callee3","_ref3","_ref3$networkDisconne","media","_t4","_t5","_t6","_context3","shareStatus","SHARE_STATUS","LOCAL_SHARE_ACTIVE","SHARE_STOPPED_REASON","MEDIA_RECONNECTION","reconnectMercuryWebSocket","device","url","FAILURE","syncMeetings","keepOnlyLocusMeetings","getMeetingByType","_ID_","state","_LEFT_","type","_CALL_","reconnectMedia","sent","_x2","_rejoinMeeting","_callee4","_args4","_t7","_t8","_context4","join","rejoin","MEETING_REJOIN","MEETING_MAX_REJOIN_FAILURE","_reconnectMedia","_callee5","_turnServerResult$tur","turnServerResult","iceServers","_context5","roap","doTurnDiscovery","turnServerInfo","urls","push","username","credential","password","webrtcMediaConnection","isMultistream","_values","mediaRequestManagers","forEach","mediaRequestManager","clearPreviousRequests","commit","_reconnectMercuryWebSocket","_callee6","_t9","_t0","_context6","mercury","connected","disconnect","connect"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint-disable no-warning-comments */\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport Trigger from '../common/events/trigger-proxy';\nimport {\n EVENT_TRIGGERS,\n RECONNECTION,\n SHARE_STATUS,\n SHARE_STOPPED_REASON,\n _CALL_,\n _LEFT_,\n _ID_,\n RECONNECTION_STATE,\n} from '../constants';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\nimport ReconnectionError from '../common/errors/reconnection';\nimport ReconnectionNotStartedError from '../common/errors/reconnection-not-started';\nimport Metrics from '../metrics';\nimport Meeting from '../meeting';\nimport {MediaRequestManager} from '../multistream/mediaRequestManager';\n\n/**\n * Used to indicate that the reconnect logic needs to be retried.\n *\n * @class NeedsRetryError\n * @extends {Error}\n */\nclass NeedsRetryError extends Error {}\n\n/**\n * Used to indicate that the meeting needs to be rejoined, not just media reconnected\n *\n * @class NeedsRejoinError\n * @extends {Error}\n */\nclass NeedsRejoinError extends Error {\n wasSharing: any;\n\n /**\n * Creates an instance of NeedsRejoinError.\n * @param {Object} params\n * @param {boolean} params.wasSharing\n * @param {Error} params.error\n * @memberof NeedsRejoinError\n */\n constructor({\n wasSharing,\n error = new Error('Meeting needs to be rejoined'),\n }: {\n wasSharing?: boolean;\n error?: Error;\n }) {\n // @ts-ignore\n super(error);\n\n this.wasSharing = wasSharing;\n }\n}\n\n/**\n * @export\n * @class ReconnectionManager\n */\nexport default class ReconnectionManager {\n autoRejoinEnabled: any;\n iceState: any;\n maxRejoinAttempts: any;\n meeting: any;\n rejoinAttempts: any;\n shareStatus: any;\n status: any;\n webex: any;\n /**\n * @param {Meeting} meeting\n */\n constructor(meeting: Meeting) {\n /**\n * Stores ICE reconnection state data.\n *\n * @instance\n * @type {Object}\n * @private\n * @memberof ReconnectionManager\n */\n this.iceState = {\n disconnected: false,\n resolve: () => {},\n timer: undefined,\n // @ts-ignore\n timeoutDuration: meeting.config.reconnection.iceReconnectionTimeout,\n };\n\n /**\n * @instance\n * @type {RECONNECTION_STATE}\n * @private\n * @memberof ReconnectionManager\n */\n this.status = RECONNECTION.STATE.DEFAULT_STATUS;\n /**\n * @instance\n * @type {Object}\n * @private\n * @memberof ReconnectionManager\n */\n // TODO : change this logic to not save the meeting instance\n // It gets complicated when meeting ends on remote side , We have a old meeting instance which is not up to date\n // @ts-ignore\n this.webex = meeting.webex;\n /**\n * @instance\n * @type {Meeting}\n * @private\n * @memberof ReconnectionManager\n */\n // TODO: try removing the circular dependency for meeting and reconnection manager\n // try moving this to meetings collection\n this.meeting = meeting;\n\n // @ts-ignore\n this.maxRejoinAttempts = meeting.config.reconnection.maxRejoinAttempts;\n this.rejoinAttempts = 0;\n // @ts-ignore\n this.autoRejoinEnabled = meeting.config.reconnection.autoRejoin;\n\n // Make sure reconnection state is in default\n this.reset();\n }\n\n /**\n * @public\n * @memberof ReconnectionManager\n * @returns {void}\n */\n resetReconnectionTimer() {\n this.iceState.resolve();\n this.iceState.resolve = () => {};\n\n if (this.iceState.timer) {\n clearTimeout(this.iceState.timer);\n delete this.iceState.timer;\n }\n }\n\n /**\n * Sets the iceState to connected and clears any disconnect timeouts and\n * related timeout data within the iceState.\n *\n * @returns {undefined}\n * @public\n * @memberof ReconnectionManager\n */\n public iceReconnected() {\n if (this.iceState.disconnected) {\n LoggerProxy.logger.log('ReconnectionManager:index#iceReconnected --> ice has reconnected');\n\n this.resetReconnectionTimer();\n\n this.iceState.disconnected = false;\n }\n }\n\n /**\n * Set the iceState to disconnected and generates a timeout that waits for the\n * iceState to reconnect and then resolves. If the ice state is already\n * processing a reconnect, it immediately resolves. Rejects if the timeout\n * duration is reached.\n *\n * @returns {Promise<undefined>}\n * @public\n * @memberof ReconnectionManager\n */\n public waitForIceReconnect() {\n if (!this.iceState.disconnected) {\n LoggerProxy.logger.log(\n 'ReconnectionManager:index#waitForIceReconnect --> waiting for ice reconnect'\n );\n\n this.iceState.disconnected = true;\n\n return new Promise<void>((resolve, reject) => {\n this.iceState.timer = setTimeout(() => {\n if (this.iceState.disconnected === false) {\n resolve();\n } else {\n this.iceState.disconnected = false;\n reject(\n new Error(`ice reconnection did not occur in ${this.iceState.timeoutDuration}ms`)\n );\n }\n }, this.iceState.timeoutDuration);\n\n this.iceState.resolve = resolve;\n });\n }\n\n // return a resolved promise to prevent multiple catch executions of reconnect\n return Promise.resolve();\n }\n\n /**\n * @returns {undefined}\n * @public\n * @memberof ReconnectionManager\n */\n public reset() {\n this.status = RECONNECTION.STATE.DEFAULT_STATUS;\n this.rejoinAttempts = 0;\n }\n\n /**\n * @returns {undefined}\n * @public\n * @memberof ReconnectionManager\n */\n public cleanUp() {\n this.reset();\n }\n\n /**\n * Stop the local share stream.\n *\n * @param {string} reason a {@link SHARE_STOPPED_REASON}\n * @returns {undefined}\n * @private\n * @memberof ReconnectionManager\n */\n private async stopLocalShareStream(reason: string) {\n await this.meeting.unpublishStreams([\n this.meeting.mediaProperties.shareVideoStream,\n this.meeting.mediaProperties.shareAudioStream,\n ]);\n Trigger.trigger(\n this.meeting,\n {\n file: 'reconnection-manager/index',\n function: 'stopLocalShareStream',\n },\n EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL,\n {\n reason,\n }\n );\n }\n\n /**\n * @public\n * @memberof ReconnectionManager\n * @returns {Boolean} true if reconnection operation is in progress\n */\n isReconnectInProgress() {\n return this.status === RECONNECTION.STATE.IN_PROGRESS;\n }\n\n /**\n * @returns {Boolean}\n * @throws {ReconnectInProgress, ReconnectionDisabled}\n * @private\n * @memberof ReconnectionManager\n */\n private canStartReconnection() {\n if (this.meeting.config.reconnection.enabled) {\n if (this.status === RECONNECTION.STATE.DEFAULT_STATUS) {\n return true;\n }\n\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#canStartReconnection --> Reconnection already in progress.'\n );\n\n return false;\n }\n\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#canStartReconnection --> Reconnection is not enabled.'\n );\n\n return false;\n }\n\n /**\n * Initiates a media reconnect for the active meeting\n * @param {Object} reconnectOptions\n * @param {boolean} [reconnectOptions.networkDisconnect=false] indicates if a network disconnect event happened\n * @param {boolean} [reconnectOptions.networkRetry=false] indicates if we are retrying the reconnect\n * @param {Function} [completionCallback] callback that gets called when reconnection is started successfully\n * @returns {Promise}\n * @public\n * @memberof ReconnectionManager\n */\n public async reconnect(\n {\n networkDisconnect = false,\n networkRetry = false,\n }: {\n networkDisconnect?: boolean;\n networkRetry?: boolean;\n } = {},\n completionCallback: (() => Promise<void>) | undefined = undefined\n ) {\n LoggerProxy.logger.info(\n `ReconnectionManager:index#reconnect --> Reconnection start for meeting ${this.meeting.id}.`\n );\n\n const triggerEvent = (event, payload = undefined) =>\n Trigger.trigger(\n this.meeting,\n {\n file: 'reconnection-manager/index',\n function: 'reconnect',\n },\n event,\n payload\n );\n\n if (!this.canStartReconnection()) {\n throw new ReconnectionNotStartedError();\n }\n\n try {\n this.status = RECONNECTION.STATE.IN_PROGRESS;\n\n triggerEvent(EVENT_TRIGGERS.MEETING_RECONNECTION_STARTING);\n\n if (!networkRetry) {\n // Only log START metrics on the initial reconnect\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnect --> Sending reconnect start metric.'\n );\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media.reconnecting',\n options: {\n meetingId: this.meeting.id,\n },\n });\n }\n\n try {\n await this.webex.meetings.startReachability('reconnection');\n } catch (err) {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnect --> Reachability failed, continuing with reconnection attempt, err: ',\n err\n );\n }\n\n try {\n await this.executeReconnection({networkDisconnect});\n } catch (reconnectError) {\n if (reconnectError instanceof NeedsRetryError) {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnect --> Reconnection not successful, retrying.'\n );\n // Reset our reconnect status since we are looping back to the beginning\n this.status = RECONNECTION.STATE.DEFAULT_STATUS;\n\n // This is a network retry, so we should not log START metrics again\n await this.reconnect({networkDisconnect: true, networkRetry: true}, completionCallback);\n\n return;\n }\n\n // Reconnect has failed\n LoggerProxy.logger.error(\n 'ReconnectionManager:index#reconnect --> Reconnection failed.',\n reconnectError.message\n );\n\n // send call aborted event with category as expected as we are trying to rejoin\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.aborted',\n payload: {\n errors: [\n {\n category: 'expected',\n errorCode: 2008,\n fatal: true,\n name: 'media-engine',\n shownToUser: false,\n },\n ],\n },\n options: {\n meetingId: this.meeting.id,\n },\n });\n\n if (reconnectError instanceof NeedsRejoinError && this.autoRejoinEnabled) {\n await this.rejoinMeeting(reconnectError.wasSharing);\n\n return;\n }\n\n throw reconnectError;\n }\n\n // finalize the reconnection process by calling the completionCallback\n if (completionCallback) {\n await completionCallback();\n }\n\n triggerEvent(EVENT_TRIGGERS.MEETING_RECONNECTION_SUCCESS);\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media.recovered',\n payload: {\n recoveredBy: 'new',\n },\n options: {\n meetingId: this.meeting.id,\n },\n });\n } catch (error) {\n triggerEvent(EVENT_TRIGGERS.MEETING_RECONNECTION_FAILURE, {\n error: new ReconnectionError('Reconnection failure event', error),\n });\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_RECONNECT_FAILURE, {\n correlation_id: this.meeting.correlationId,\n locus_id: this.meeting.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n });\n\n throw new ReconnectionError('Reconnection failure event', error);\n } finally {\n this.reset();\n }\n }\n\n /**\n * @param {Object} reconnectOptions\n * @param {boolean} [reconnectOptions.networkDisconnect=false] indicates if a network disconnect event happened\n * @returns {Promise}\n * @throws {NeedsRetryError}\n * @private\n * @memberof ReconnectionManager\n */\n private async executeReconnection({networkDisconnect = false}: {networkDisconnect?: boolean}) {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#executeReconnection --> Attempting to reconnect to meeting.'\n );\n\n const wasSharing = this.meeting.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE;\n\n if (wasSharing) {\n await this.stopLocalShareStream(SHARE_STOPPED_REASON.MEDIA_RECONNECTION);\n }\n\n if (networkDisconnect) {\n try {\n await this.reconnectMercuryWebSocket();\n LoggerProxy.logger.error(\n 'ReconnectionManager:index#executeReconnection --> Websocket reconnected.',\n this.webex.internal.device.url\n );\n } catch (error) {\n LoggerProxy.logger.error(\n 'ReconnectionManager:index#executeReconnection --> Unable to reconnect to websocket, giving up.'\n );\n this.status = RECONNECTION.STATE.FAILURE;\n throw error;\n }\n }\n\n try {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#executeReconnection --> Updating meeting data from server.'\n );\n await this.webex.meetings.syncMeetings({keepOnlyLocusMeetings: false});\n } catch (syncError) {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#executeReconnection --> Unable to sync meetings, reconnecting.',\n syncError\n );\n throw new NeedsRetryError(syncError);\n }\n\n // TODO: try to improve this logic as the reconnection manager saves the instance of deleted meeting object\n // So that on rejoin it known what parametrs it was using\n if (!this.meeting || !this.webex.meetings.getMeetingByType(_ID_, this.meeting.id)) {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#executeReconnection --> Meeting got deleted due to inactivity or ended remotely.'\n );\n\n throw new Error('Unable to rejoin a meeting already ended or inactive.');\n }\n\n LoggerProxy.logger.info(\n `ReconnectionManager:index#executeReconnection --> Current state of meeting is ${this.meeting.state}`\n );\n\n // If the meeting state was left, no longer reconnect media\n if (this.meeting.state === _LEFT_) {\n if (this.meeting.type === _CALL_) {\n throw new Error('Unable to rejoin a call in LEFT state.');\n }\n\n throw new NeedsRejoinError({wasSharing});\n }\n\n try {\n const media = await this.reconnectMedia();\n\n LoggerProxy.logger.log(\n 'ReconnectionManager:index#executeReconnection --> webRTC media connection renewed and local sdp offer sent'\n );\n\n return media;\n } catch (error) {\n LoggerProxy.logger.error(\n 'ReconnectionManager:index#executeReconnection --> failed to renew webRTC media connection or initiate offer'\n );\n this.status = RECONNECTION.STATE.FAILURE;\n\n throw error;\n }\n }\n\n /**\n * Rejoins a meeting after detecting the member was in a LEFT state\n *\n * @async\n * @param {boolean} wasSharing\n * @returns {Promise}\n */\n async rejoinMeeting(wasSharing = false) {\n try {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#rejoinMeeting --> attemping meeting rejoin'\n );\n\n await this.meeting.join({rejoin: true});\n LoggerProxy.logger.info('ReconnectionManager:index#rejoinMeeting --> meeting rejoined');\n\n if (wasSharing) {\n await this.stopLocalShareStream(SHARE_STOPPED_REASON.MEETING_REJOIN);\n }\n } catch (joinError) {\n this.rejoinAttempts += 1;\n if (this.rejoinAttempts <= this.maxRejoinAttempts) {\n LoggerProxy.logger.info(\n `ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting, attempt #${this.rejoinAttempts}, retrying.`,\n joinError\n );\n this.rejoinMeeting();\n } else {\n LoggerProxy.logger.error(\n 'ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting after max attempts.',\n joinError\n );\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_MAX_REJOIN_FAILURE, {\n locus_id: this.meeting.locusUrl.split('/').pop(),\n reason: joinError.message,\n stack: joinError.stack,\n });\n this.status = RECONNECTION.STATE.FAILURE;\n throw joinError;\n }\n }\n\n try {\n await this.reconnectMedia();\n } catch (mediaError) {\n LoggerProxy.logger.error(\n 'ReconnectionManager:index#rejoinMeeting --> Unable to reestablish media after rejoining.',\n mediaError\n );\n throw mediaError;\n }\n }\n\n /**\n * @returns {Promise}\n * @private\n * @memberof ReconnectionManager\n */\n async reconnectMedia() {\n LoggerProxy.logger.log('ReconnectionManager:index#reconnectMedia --> do turn discovery');\n\n // do the TURN server discovery again and ignore reachability results since the TURN server might change\n const turnServerResult = await this.meeting.roap.doTurnDiscovery(this.meeting, true, true);\n\n const iceServers = [];\n\n if (turnServerResult.turnServerInfo?.urls.length > 0) {\n iceServers.push({\n urls: turnServerResult.turnServerInfo.urls,\n username: turnServerResult.turnServerInfo.username || '',\n credential: turnServerResult.turnServerInfo.password || '',\n });\n }\n\n LoggerProxy.logger.log(\n 'ReconnectionManager:index#reconnectMedia --> renew webRTC media connection and send local sdp offer'\n );\n\n await this.meeting.mediaProperties.webrtcMediaConnection.reconnect(iceServers);\n\n // resend media requests\n if (this.meeting.isMultistream) {\n Object.values(this.meeting.mediaRequestManagers).forEach(\n (mediaRequestManager: MediaRequestManager) => {\n mediaRequestManager.clearPreviousRequests();\n mediaRequestManager.commit();\n }\n );\n }\n }\n\n /**\n * Attempt to Reconnect Mercury Websocket\n * @returns {Promise}\n * @private\n * @memberof ReconnectionManager\n */\n private async reconnectMercuryWebSocket() {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Reconnecting websocket.'\n );\n // First, attempt to disconnect if we think we are already connected.\n if (this.webex.internal.mercury.connected) {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Disconnecting existing websocket.'\n );\n try {\n await this.webex.internal.mercury.disconnect();\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Websocket disconnected successfully.'\n );\n } catch (disconnectError) {\n // If we can't disconnect, the sdk is in such a bad state that reconnecting is not going to happen.\n LoggerProxy.logger.error(\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to disconnect from websocket, giving up.',\n disconnectError\n );\n throw disconnectError;\n }\n }\n\n try {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Connecting websocket.'\n );\n await this.webex.internal.mercury.connect();\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Websocket connected successfully.'\n );\n } catch (connectError) {\n LoggerProxy.logger.error(\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to connect to websocket, giving up.',\n connectError\n );\n\n throw connectError;\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_loggerProxy","_interopRequireDefault","require","_triggerProxy","_constants","_constants2","_reconnection","_reconnectionNotStarted","_metrics","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","NeedsRetryError","_Error","_classCallCheck2","arguments","_inherits2","_createClass2","_wrapNativeSuper2","Error","NeedsRejoinError","_Error2","_ref","_this","wasSharing","_ref$error","error","_defineProperty2","ReconnectionManager","exports","meeting","iceState","disconnected","resolve","timer","undefined","timeoutDuration","config","reconnection","iceReconnectionTimeout","status","RECONNECTION","STATE","DEFAULT_STATUS","webex","maxRejoinAttempts","rejoinAttempts","autoRejoinEnabled","autoRejoin","reset","key","value","resetReconnectionTimer","clearTimeout","iceReconnected","LoggerProxy","logger","log","waitForIceReconnect","_this2","_promise","reject","setTimeout","concat","cleanUp","_stopLocalShareStream","_asyncToGenerator2","_regenerator","mark","_callee","reason","wrap","_context","prev","next","unpublishStreams","mediaProperties","shareVideoStream","shareAudioStream","Trigger","trigger","file","function","EVENT_TRIGGERS","MEETING_STOPPED_SHARING_LOCAL","stop","stopLocalShareStream","_x","isReconnectInProgress","IN_PROGRESS","canStartReconnection","enabled","info","_reconnect","_callee2","_this3","_ref2","_ref2$networkDisconne","networkDisconnect","_ref2$networkRetry","networkRetry","completionCallback","triggerEvent","_args2","_t","_t2","_t3","_context2","length","id","event","payload","ReconnectionNotStartedError","MEETING_RECONNECTION_STARTING","internal","newMetrics","submitClientEvent","name","options","meetingId","meetings","startReachability","executeReconnection","reconnect","abrupt","message","errors","category","errorCode","fatal","shownToUser","rejoinMeeting","MEETING_RECONNECTION_SUCCESS","recoveredBy","MEETING_RECONNECTION_FAILURE","ReconnectionError","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","MEETING_RECONNECT_FAILURE","correlation_id","correlationId","locus_id","locusUrl","split","pop","stack","finish","_executeReconnection","_callee3","_ref3","_ref3$networkDisconne","media","_t4","_t5","_t6","_context3","shareStatus","SHARE_STATUS","LOCAL_SHARE_ACTIVE","SHARE_STOPPED_REASON","MEDIA_RECONNECTION","reconnectMercuryWebSocket","device","url","FAILURE","syncMeetings","keepOnlyLocusMeetings","getMeetingByType","_ID_","state","_LEFT_","type","_CALL_","reconnectMedia","sent","_x2","_rejoinMeeting","_callee4","_args4","_t7","_t8","_context4","join","rejoin","MEETING_REJOIN","MEETING_MAX_REJOIN_FAILURE","_reconnectMedia","_callee5","_turnServerResult$tur","turnServerResult","iceServers","_context5","roap","doTurnDiscovery","turnServerInfo","urls","push","username","credential","password","webrtcMediaConnection","isMultistream","_values","mediaRequestManagers","forEach","mediaRequestManager","commit","_reconnectMercuryWebSocket","_callee6","_t9","_t0","_context6","mercury","connected","disconnect","connect"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint-disable no-warning-comments */\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport Trigger from '../common/events/trigger-proxy';\nimport {\n EVENT_TRIGGERS,\n RECONNECTION,\n SHARE_STATUS,\n SHARE_STOPPED_REASON,\n _CALL_,\n _LEFT_,\n _ID_,\n RECONNECTION_STATE,\n} from '../constants';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\nimport ReconnectionError from '../common/errors/reconnection';\nimport ReconnectionNotStartedError from '../common/errors/reconnection-not-started';\nimport Metrics from '../metrics';\nimport Meeting from '../meeting';\nimport {MediaRequestManager} from '../multistream/mediaRequestManager';\n\n/**\n * Used to indicate that the reconnect logic needs to be retried.\n *\n * @class NeedsRetryError\n * @extends {Error}\n */\nclass NeedsRetryError extends Error {}\n\n/**\n * Used to indicate that the meeting needs to be rejoined, not just media reconnected\n *\n * @class NeedsRejoinError\n * @extends {Error}\n */\nclass NeedsRejoinError extends Error {\n wasSharing: any;\n\n /**\n * Creates an instance of NeedsRejoinError.\n * @param {Object} params\n * @param {boolean} params.wasSharing\n * @param {Error} params.error\n * @memberof NeedsRejoinError\n */\n constructor({\n wasSharing,\n error = new Error('Meeting needs to be rejoined'),\n }: {\n wasSharing?: boolean;\n error?: Error;\n }) {\n // @ts-ignore\n super(error);\n\n this.wasSharing = wasSharing;\n }\n}\n\n/**\n * @export\n * @class ReconnectionManager\n */\nexport default class ReconnectionManager {\n autoRejoinEnabled: any;\n iceState: any;\n maxRejoinAttempts: any;\n meeting: any;\n rejoinAttempts: any;\n shareStatus: any;\n status: any;\n webex: any;\n /**\n * @param {Meeting} meeting\n */\n constructor(meeting: Meeting) {\n /**\n * Stores ICE reconnection state data.\n *\n * @instance\n * @type {Object}\n * @private\n * @memberof ReconnectionManager\n */\n this.iceState = {\n disconnected: false,\n resolve: () => {},\n timer: undefined,\n // @ts-ignore\n timeoutDuration: meeting.config.reconnection.iceReconnectionTimeout,\n };\n\n /**\n * @instance\n * @type {RECONNECTION_STATE}\n * @private\n * @memberof ReconnectionManager\n */\n this.status = RECONNECTION.STATE.DEFAULT_STATUS;\n /**\n * @instance\n * @type {Object}\n * @private\n * @memberof ReconnectionManager\n */\n // TODO : change this logic to not save the meeting instance\n // It gets complicated when meeting ends on remote side , We have a old meeting instance which is not up to date\n // @ts-ignore\n this.webex = meeting.webex;\n /**\n * @instance\n * @type {Meeting}\n * @private\n * @memberof ReconnectionManager\n */\n // TODO: try removing the circular dependency for meeting and reconnection manager\n // try moving this to meetings collection\n this.meeting = meeting;\n\n // @ts-ignore\n this.maxRejoinAttempts = meeting.config.reconnection.maxRejoinAttempts;\n this.rejoinAttempts = 0;\n // @ts-ignore\n this.autoRejoinEnabled = meeting.config.reconnection.autoRejoin;\n\n // Make sure reconnection state is in default\n this.reset();\n }\n\n /**\n * @public\n * @memberof ReconnectionManager\n * @returns {void}\n */\n resetReconnectionTimer() {\n this.iceState.resolve();\n this.iceState.resolve = () => {};\n\n if (this.iceState.timer) {\n clearTimeout(this.iceState.timer);\n delete this.iceState.timer;\n }\n }\n\n /**\n * Sets the iceState to connected and clears any disconnect timeouts and\n * related timeout data within the iceState.\n *\n * @returns {undefined}\n * @public\n * @memberof ReconnectionManager\n */\n public iceReconnected() {\n if (this.iceState.disconnected) {\n LoggerProxy.logger.log('ReconnectionManager:index#iceReconnected --> ice has reconnected');\n\n this.resetReconnectionTimer();\n\n this.iceState.disconnected = false;\n }\n }\n\n /**\n * Set the iceState to disconnected and generates a timeout that waits for the\n * iceState to reconnect and then resolves. If the ice state is already\n * processing a reconnect, it immediately resolves. Rejects if the timeout\n * duration is reached.\n *\n * @returns {Promise<undefined>}\n * @public\n * @memberof ReconnectionManager\n */\n public waitForIceReconnect() {\n if (!this.iceState.disconnected) {\n LoggerProxy.logger.log(\n 'ReconnectionManager:index#waitForIceReconnect --> waiting for ice reconnect'\n );\n\n this.iceState.disconnected = true;\n\n return new Promise<void>((resolve, reject) => {\n this.iceState.timer = setTimeout(() => {\n if (this.iceState.disconnected === false) {\n resolve();\n } else {\n this.iceState.disconnected = false;\n reject(\n new Error(`ice reconnection did not occur in ${this.iceState.timeoutDuration}ms`)\n );\n }\n }, this.iceState.timeoutDuration);\n\n this.iceState.resolve = resolve;\n });\n }\n\n // return a resolved promise to prevent multiple catch executions of reconnect\n return Promise.resolve();\n }\n\n /**\n * @returns {undefined}\n * @public\n * @memberof ReconnectionManager\n */\n public reset() {\n this.status = RECONNECTION.STATE.DEFAULT_STATUS;\n this.rejoinAttempts = 0;\n }\n\n /**\n * @returns {undefined}\n * @public\n * @memberof ReconnectionManager\n */\n public cleanUp() {\n this.reset();\n }\n\n /**\n * Stop the local share stream.\n *\n * @param {string} reason a {@link SHARE_STOPPED_REASON}\n * @returns {undefined}\n * @private\n * @memberof ReconnectionManager\n */\n private async stopLocalShareStream(reason: string) {\n await this.meeting.unpublishStreams([\n this.meeting.mediaProperties.shareVideoStream,\n this.meeting.mediaProperties.shareAudioStream,\n ]);\n Trigger.trigger(\n this.meeting,\n {\n file: 'reconnection-manager/index',\n function: 'stopLocalShareStream',\n },\n EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL,\n {\n reason,\n }\n );\n }\n\n /**\n * @public\n * @memberof ReconnectionManager\n * @returns {Boolean} true if reconnection operation is in progress\n */\n isReconnectInProgress() {\n return this.status === RECONNECTION.STATE.IN_PROGRESS;\n }\n\n /**\n * @returns {Boolean}\n * @throws {ReconnectInProgress, ReconnectionDisabled}\n * @private\n * @memberof ReconnectionManager\n */\n private canStartReconnection() {\n if (this.meeting.config.reconnection.enabled) {\n if (this.status === RECONNECTION.STATE.DEFAULT_STATUS) {\n return true;\n }\n\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#canStartReconnection --> Reconnection already in progress.'\n );\n\n return false;\n }\n\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#canStartReconnection --> Reconnection is not enabled.'\n );\n\n return false;\n }\n\n /**\n * Initiates a media reconnect for the active meeting\n * @param {Object} reconnectOptions\n * @param {boolean} [reconnectOptions.networkDisconnect=false] indicates if a network disconnect event happened\n * @param {boolean} [reconnectOptions.networkRetry=false] indicates if we are retrying the reconnect\n * @param {Function} [completionCallback] callback that gets called when reconnection is started successfully\n * @returns {Promise}\n * @public\n * @memberof ReconnectionManager\n */\n public async reconnect(\n {\n networkDisconnect = false,\n networkRetry = false,\n }: {\n networkDisconnect?: boolean;\n networkRetry?: boolean;\n } = {},\n completionCallback: (() => Promise<void>) | undefined = undefined\n ) {\n LoggerProxy.logger.info(\n `ReconnectionManager:index#reconnect --> Reconnection start for meeting ${this.meeting.id}.`\n );\n\n const triggerEvent = (event, payload = undefined) =>\n Trigger.trigger(\n this.meeting,\n {\n file: 'reconnection-manager/index',\n function: 'reconnect',\n },\n event,\n payload\n );\n\n if (!this.canStartReconnection()) {\n throw new ReconnectionNotStartedError();\n }\n\n try {\n this.status = RECONNECTION.STATE.IN_PROGRESS;\n\n triggerEvent(EVENT_TRIGGERS.MEETING_RECONNECTION_STARTING);\n\n if (!networkRetry) {\n // Only log START metrics on the initial reconnect\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnect --> Sending reconnect start metric.'\n );\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media.reconnecting',\n options: {\n meetingId: this.meeting.id,\n },\n });\n }\n\n try {\n await this.webex.meetings.startReachability('reconnection');\n } catch (err) {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnect --> Reachability failed, continuing with reconnection attempt, err: ',\n err\n );\n }\n\n try {\n await this.executeReconnection({networkDisconnect});\n } catch (reconnectError) {\n if (reconnectError instanceof NeedsRetryError) {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnect --> Reconnection not successful, retrying.'\n );\n // Reset our reconnect status since we are looping back to the beginning\n this.status = RECONNECTION.STATE.DEFAULT_STATUS;\n\n // This is a network retry, so we should not log START metrics again\n await this.reconnect({networkDisconnect: true, networkRetry: true}, completionCallback);\n\n return;\n }\n\n // Reconnect has failed\n LoggerProxy.logger.error(\n 'ReconnectionManager:index#reconnect --> Reconnection failed.',\n reconnectError.message\n );\n\n // send call aborted event with category as expected as we are trying to rejoin\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.aborted',\n payload: {\n errors: [\n {\n category: 'expected',\n errorCode: 2008,\n fatal: true,\n name: 'media-engine',\n shownToUser: false,\n },\n ],\n },\n options: {\n meetingId: this.meeting.id,\n },\n });\n\n if (reconnectError instanceof NeedsRejoinError && this.autoRejoinEnabled) {\n await this.rejoinMeeting(reconnectError.wasSharing);\n\n return;\n }\n\n throw reconnectError;\n }\n\n // finalize the reconnection process by calling the completionCallback\n if (completionCallback) {\n await completionCallback();\n }\n\n triggerEvent(EVENT_TRIGGERS.MEETING_RECONNECTION_SUCCESS);\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media.recovered',\n payload: {\n recoveredBy: 'new',\n },\n options: {\n meetingId: this.meeting.id,\n },\n });\n } catch (error) {\n triggerEvent(EVENT_TRIGGERS.MEETING_RECONNECTION_FAILURE, {\n error: new ReconnectionError('Reconnection failure event', error),\n });\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_RECONNECT_FAILURE, {\n correlation_id: this.meeting.correlationId,\n locus_id: this.meeting.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n });\n\n throw new ReconnectionError('Reconnection failure event', error);\n } finally {\n this.reset();\n }\n }\n\n /**\n * @param {Object} reconnectOptions\n * @param {boolean} [reconnectOptions.networkDisconnect=false] indicates if a network disconnect event happened\n * @returns {Promise}\n * @throws {NeedsRetryError}\n * @private\n * @memberof ReconnectionManager\n */\n private async executeReconnection({networkDisconnect = false}: {networkDisconnect?: boolean}) {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#executeReconnection --> Attempting to reconnect to meeting.'\n );\n\n const wasSharing = this.meeting.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE;\n\n if (wasSharing) {\n await this.stopLocalShareStream(SHARE_STOPPED_REASON.MEDIA_RECONNECTION);\n }\n\n if (networkDisconnect) {\n try {\n await this.reconnectMercuryWebSocket();\n LoggerProxy.logger.error(\n 'ReconnectionManager:index#executeReconnection --> Websocket reconnected.',\n this.webex.internal.device.url\n );\n } catch (error) {\n LoggerProxy.logger.error(\n 'ReconnectionManager:index#executeReconnection --> Unable to reconnect to websocket, giving up.'\n );\n this.status = RECONNECTION.STATE.FAILURE;\n throw error;\n }\n }\n\n try {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#executeReconnection --> Updating meeting data from server.'\n );\n await this.webex.meetings.syncMeetings({keepOnlyLocusMeetings: false});\n } catch (syncError) {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#executeReconnection --> Unable to sync meetings, reconnecting.',\n syncError\n );\n throw new NeedsRetryError(syncError);\n }\n\n // TODO: try to improve this logic as the reconnection manager saves the instance of deleted meeting object\n // So that on rejoin it known what parametrs it was using\n if (!this.meeting || !this.webex.meetings.getMeetingByType(_ID_, this.meeting.id)) {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#executeReconnection --> Meeting got deleted due to inactivity or ended remotely.'\n );\n\n throw new Error('Unable to rejoin a meeting already ended or inactive.');\n }\n\n LoggerProxy.logger.info(\n `ReconnectionManager:index#executeReconnection --> Current state of meeting is ${this.meeting.state}`\n );\n\n // If the meeting state was left, no longer reconnect media\n if (this.meeting.state === _LEFT_) {\n if (this.meeting.type === _CALL_) {\n throw new Error('Unable to rejoin a call in LEFT state.');\n }\n\n throw new NeedsRejoinError({wasSharing});\n }\n\n try {\n const media = await this.reconnectMedia();\n\n LoggerProxy.logger.log(\n 'ReconnectionManager:index#executeReconnection --> webRTC media connection renewed and local sdp offer sent'\n );\n\n return media;\n } catch (error) {\n LoggerProxy.logger.error(\n 'ReconnectionManager:index#executeReconnection --> failed to renew webRTC media connection or initiate offer'\n );\n this.status = RECONNECTION.STATE.FAILURE;\n\n throw error;\n }\n }\n\n /**\n * Rejoins a meeting after detecting the member was in a LEFT state\n *\n * @async\n * @param {boolean} wasSharing\n * @returns {Promise}\n */\n async rejoinMeeting(wasSharing = false) {\n try {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#rejoinMeeting --> attemping meeting rejoin'\n );\n\n await this.meeting.join({rejoin: true});\n LoggerProxy.logger.info('ReconnectionManager:index#rejoinMeeting --> meeting rejoined');\n\n if (wasSharing) {\n await this.stopLocalShareStream(SHARE_STOPPED_REASON.MEETING_REJOIN);\n }\n } catch (joinError) {\n this.rejoinAttempts += 1;\n if (this.rejoinAttempts <= this.maxRejoinAttempts) {\n LoggerProxy.logger.info(\n `ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting, attempt #${this.rejoinAttempts}, retrying.`,\n joinError\n );\n this.rejoinMeeting();\n } else {\n LoggerProxy.logger.error(\n 'ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting after max attempts.',\n joinError\n );\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_MAX_REJOIN_FAILURE, {\n locus_id: this.meeting.locusUrl.split('/').pop(),\n reason: joinError.message,\n stack: joinError.stack,\n });\n this.status = RECONNECTION.STATE.FAILURE;\n throw joinError;\n }\n }\n\n try {\n await this.reconnectMedia();\n } catch (mediaError) {\n LoggerProxy.logger.error(\n 'ReconnectionManager:index#rejoinMeeting --> Unable to reestablish media after rejoining.',\n mediaError\n );\n throw mediaError;\n }\n }\n\n /**\n * @returns {Promise}\n * @private\n * @memberof ReconnectionManager\n */\n async reconnectMedia() {\n LoggerProxy.logger.log('ReconnectionManager:index#reconnectMedia --> do turn discovery');\n\n // do the TURN server discovery again and ignore reachability results since the TURN server might change\n const turnServerResult = await this.meeting.roap.doTurnDiscovery(this.meeting, true, true);\n\n const iceServers = [];\n\n if (turnServerResult.turnServerInfo?.urls.length > 0) {\n iceServers.push({\n urls: turnServerResult.turnServerInfo.urls,\n username: turnServerResult.turnServerInfo.username || '',\n credential: turnServerResult.turnServerInfo.password || '',\n });\n }\n\n LoggerProxy.logger.log(\n 'ReconnectionManager:index#reconnectMedia --> renew webRTC media connection and send local sdp offer'\n );\n\n await this.meeting.mediaProperties.webrtcMediaConnection.reconnect(iceServers);\n\n // resend media requests\n if (this.meeting.isMultistream) {\n Object.values(this.meeting.mediaRequestManagers).forEach(\n (mediaRequestManager: MediaRequestManager) => {\n mediaRequestManager.commit();\n }\n );\n }\n }\n\n /**\n * Attempt to Reconnect Mercury Websocket\n * @returns {Promise}\n * @private\n * @memberof ReconnectionManager\n */\n private async reconnectMercuryWebSocket() {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Reconnecting websocket.'\n );\n // First, attempt to disconnect if we think we are already connected.\n if (this.webex.internal.mercury.connected) {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Disconnecting existing websocket.'\n );\n try {\n await this.webex.internal.mercury.disconnect();\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Websocket disconnected successfully.'\n );\n } catch (disconnectError) {\n // If we can't disconnect, the sdk is in such a bad state that reconnecting is not going to happen.\n LoggerProxy.logger.error(\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to disconnect from websocket, giving up.',\n disconnectError\n );\n throw disconnectError;\n }\n }\n\n try {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Connecting websocket.'\n );\n await this.webex.internal.mercury.connect();\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Websocket connected successfully.'\n );\n } catch (connectError) {\n LoggerProxy.logger.error(\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to connect to websocket, giving up.',\n connectError\n );\n\n throw connectError;\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @class AIEnableRequest
3
+ */
4
+ declare const AIEnableRequest: any;
5
+ export default AIEnableRequest;
@@ -0,0 +1,2 @@
1
+ import Meeting from '../meeting';
2
+ export declare const getAIEnablementApprover: (meeting: Meeting) => string;
@@ -64,6 +64,7 @@ declare const _default: {
64
64
  enableAdhocMeetings: boolean;
65
65
  enableTcpReachability: boolean;
66
66
  enableTlsReachability: boolean;
67
+ storeLocusHashTreeEventsForDebugging: boolean;
67
68
  };
68
69
  degradationPreferences: {
69
70
  maxMacroblocksLimit: number;
@@ -76,6 +77,9 @@ declare const _default: {
76
77
  stopIceGatheringAfterFirstRelayCandidate: boolean;
77
78
  enableAudioTwccForMultistream: boolean;
78
79
  enablePerUdpUrlReachability: boolean;
80
+ locus: {
81
+ excludedDataSets: string[];
82
+ };
79
83
  };
80
84
  };
81
85
  export default _default;
@@ -31,6 +31,7 @@ export declare const LOCAL = "local";
31
31
  export declare const LOCI = "loci";
32
32
  export declare const LOCUS_URL = "locusUrl";
33
33
  export declare const END = "end";
34
+ export declare const LLM_PRACTICE_SESSION = "llm-practice-session";
34
35
  export declare const MAX_RANDOM_DELAY_FOR_MEETING_INFO: number;
35
36
  export declare const MEETINGINFO = "meetingInfo";
36
37
  export declare const MEET = "meet";
@@ -272,6 +273,7 @@ export declare const EVENT_TRIGGERS: {
272
273
  MEETING_CONTROLS_REACTIONS_UPDATED: string;
273
274
  MEETING_CONTROLS_VIEW_THE_PARTICIPANTS_LIST_UPDATED: string;
274
275
  MEETING_CONTROLS_RAISE_HAND_UPDATED: string;
276
+ MEETING_CONTROLS_AI_SUMMARY_NOTIFICATION_UPDATED: string;
275
277
  MEETING_CONTROLS_VIDEO_UPDATED: string;
276
278
  MEETING_CONTROLS_STAGE_VIEW_UPDATED: string;
277
279
  MEETING_CONTROLS_WEBCAST_UPDATED: string;
@@ -290,6 +292,7 @@ export declare const EVENT_TRIGGERS: {
290
292
  MEETING_MANUAL_CAPTION_UPDATED: string;
291
293
  MEETING_CAPTION_RECEIVED: string;
292
294
  MEETING_PARTICIPANT_REASON_CHANGED: string;
295
+ MEETING_AI_ENABLE_REQUEST: string;
293
296
  };
294
297
  export declare const EVENT_TYPES: {
295
298
  SELF: string;
@@ -309,7 +312,6 @@ export declare const HEADERS: {
309
312
  };
310
313
  export declare const MEETING_REMOVED_REASON: {
311
314
  SELF_REMOVED: string;
312
- FULLSTATE_REMOVED: string;
313
315
  MEETING_INACTIVE_TERMINATING: string;
314
316
  CLIENT_LEAVE_REQUEST: string;
315
317
  CLIENT_LEAVE_REQUEST_TAB_CLOSED: string;
@@ -570,6 +572,7 @@ export declare const LOCUSINFO: {
570
572
  CONTROLS_MEETING_LAYOUT_UPDATED: string;
571
573
  CONTROLS_RECORDING_UPDATED: string;
572
574
  CONTROLS_MEETING_TRANSCRIBE_UPDATED: string;
575
+ CONTROLS_AI_SUMMARY_NOTIFICATION_UPDATED: string;
573
576
  CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED: string;
574
577
  CONTROLS_MEETING_MANUAL_CAPTION_UPDATED: string;
575
578
  CONTROLS_MEETING_HESIOD_LLM_ID_UPDATED: string;
@@ -615,6 +618,7 @@ export declare const LOCUSINFO: {
615
618
  SELF_IS_SHARING_BLOCKED_CHANGE: string;
616
619
  SELF_MEETING_BREAKOUTS_CHANGED: string;
617
620
  SELF_MEETING_INTERPRETATION_CHANGED: string;
621
+ SELF_ID_CHANGED: string;
618
622
  SELF_MEETING_BRB_CHANGED: string;
619
623
  MEDIA_INACTIVITY: string;
620
624
  LINKS_SERVICES: string;
@@ -645,6 +649,7 @@ export declare const LOCUSEVENT: {
645
649
  readonly RECORDING_STOPPED: "locus.recording_stopped";
646
650
  readonly SELF_CHANGED: "locus.self_changed";
647
651
  readonly HASH_TREE_DATA_UPDATED: "locus.state_message";
652
+ readonly APPROVAL_REQUEST: "locus.approval_request";
648
653
  readonly SDK_LOCUS_FROM_SYNC_MEETINGS: "jsSdk.locus_from_sync_meetings";
649
654
  readonly SDK_NO_EVENT: "jsSdk.no_event";
650
655
  };
@@ -800,6 +805,8 @@ export declare const DISPLAY_HINTS: {
800
805
  LOWER_SOMEONE_ELSES_HAND: string;
801
806
  LEAVE_TRANSFER_HOST_END_MEETING: string;
802
807
  LEAVE_END_MEETING: string;
808
+ END_MEETING: string;
809
+ REQUIRE_HOST_END_MEETING_BEFORE_LEAVE: string;
803
810
  STREAMING_STATUS_STARTED: string;
804
811
  STREAMING_STATUS_STOPPED: string;
805
812
  CAPTION_START: string;
@@ -875,6 +882,8 @@ export declare const DISPLAY_HINTS: {
875
882
  DISABLE_RDC_MEETING_OPTION: string;
876
883
  ENABLE_ATTENDEE_START_POLLING_QA: string;
877
884
  DISABLE_ATTENDEE_START_POLLING_QA: string;
885
+ ATTENDEE_REQUEST_AI_ASSISTANT_ENABLED: string;
886
+ ATTENDEE_REQUEST_AI_ASSISTANT_DECLINED_ALL: string;
878
887
  };
879
888
  export declare const INTERSTITIAL_DISPLAY_HINTS: string[];
880
889
  export declare const SELF_ROLES: {
@@ -1152,3 +1161,16 @@ export declare const STAGE_MANAGER_TYPE: {
1152
1161
  BACKGROUND: number;
1153
1162
  NAME_LABEL: number;
1154
1163
  };
1164
+ export declare const DEFAULT_LARGE_SCALE_WEBINAR_ATTENDEE_SEARCH_LIMIT = 50;
1165
+ export declare const AI_ENABLE_REQUEST: {
1166
+ EVENTS: {
1167
+ APPROVAL_REQUEST_ARRIVED: string;
1168
+ };
1169
+ ACTION_TYPE: {
1170
+ REQUESTED: string;
1171
+ ACCEPTED: string;
1172
+ DECLINED: string;
1173
+ DECLINED_ALL: string;
1174
+ };
1175
+ RESOURCE_TYPE: string;
1176
+ };
@@ -5,4 +5,5 @@ export declare const DataSetNames: {
5
5
  ATD_ACTIVE: string;
6
6
  ATD_UNMUTED: string;
7
7
  SELF: string;
8
+ UNJOINED: string;
8
9
  };