@webex/plugin-meetings 3.0.0-beta.17 → 3.0.0-beta.19

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 (152) hide show
  1. package/dist/breakouts/breakout.js +116 -0
  2. package/dist/breakouts/breakout.js.map +1 -0
  3. package/dist/breakouts/collection.js +23 -0
  4. package/dist/breakouts/collection.js.map +1 -0
  5. package/dist/breakouts/index.js +226 -0
  6. package/dist/breakouts/index.js.map +1 -0
  7. package/dist/config.js +4 -1
  8. package/dist/config.js.map +1 -1
  9. package/dist/constants.js +38 -5
  10. package/dist/constants.js.map +1 -1
  11. package/dist/locus-info/controlsUtils.js +2 -1
  12. package/dist/locus-info/controlsUtils.js.map +1 -1
  13. package/dist/locus-info/index.js +48 -0
  14. package/dist/locus-info/index.js.map +1 -1
  15. package/dist/locus-info/parser.js +1 -0
  16. package/dist/locus-info/parser.js.map +1 -1
  17. package/dist/locus-info/selfUtils.js +19 -11
  18. package/dist/locus-info/selfUtils.js.map +1 -1
  19. package/dist/media/index.js +3 -3
  20. package/dist/media/index.js.map +1 -1
  21. package/dist/media/properties.js +4 -4
  22. package/dist/media/properties.js.map +1 -1
  23. package/dist/meeting/index.js +719 -490
  24. package/dist/meeting/index.js.map +1 -1
  25. package/dist/meeting/request.js +25 -44
  26. package/dist/meeting/request.js.map +1 -1
  27. package/dist/meeting/request.type.js.map +1 -1
  28. package/dist/meeting/util.js +4 -57
  29. package/dist/meeting/util.js.map +1 -1
  30. package/dist/meeting-info/meeting-info-v2.js +2 -0
  31. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  32. package/dist/meetings/index.js +28 -18
  33. package/dist/meetings/index.js.map +1 -1
  34. package/dist/meetings/request.js +14 -12
  35. package/dist/meetings/request.js.map +1 -1
  36. package/dist/member/index.js +9 -0
  37. package/dist/member/index.js.map +1 -1
  38. package/dist/member/util.js +14 -1
  39. package/dist/member/util.js.map +1 -1
  40. package/dist/members/index.js +8 -6
  41. package/dist/members/index.js.map +1 -1
  42. package/dist/members/request.js +3 -1
  43. package/dist/members/request.js.map +1 -1
  44. package/dist/multistream/mediaRequestManager.js +46 -6
  45. package/dist/multistream/mediaRequestManager.js.map +1 -1
  46. package/dist/multistream/multistreamMedia.js +4 -0
  47. package/dist/multistream/multistreamMedia.js.map +1 -1
  48. package/dist/multistream/receiveSlot.js +3 -3
  49. package/dist/multistream/receiveSlot.js.map +1 -1
  50. package/dist/multistream/receiveSlotManager.js +8 -6
  51. package/dist/multistream/receiveSlotManager.js.map +1 -1
  52. package/dist/multistream/remoteMedia.js.map +1 -1
  53. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  54. package/dist/multistream/remoteMediaManager.js +168 -63
  55. package/dist/multistream/remoteMediaManager.js.map +1 -1
  56. package/dist/reachability/index.js +63 -51
  57. package/dist/reachability/index.js.map +1 -1
  58. package/dist/reactions/constants.js +13 -0
  59. package/dist/reactions/constants.js.map +1 -0
  60. package/dist/reactions/reactions.type.js.map +1 -1
  61. package/dist/reconnection-manager/index.js +25 -12
  62. package/dist/reconnection-manager/index.js.map +1 -1
  63. package/dist/recording-controller/enums.js +17 -0
  64. package/dist/recording-controller/enums.js.map +1 -0
  65. package/dist/recording-controller/index.js +343 -0
  66. package/dist/recording-controller/index.js.map +1 -0
  67. package/dist/recording-controller/util.js +63 -0
  68. package/dist/recording-controller/util.js.map +1 -0
  69. package/dist/roap/request.js +88 -68
  70. package/dist/roap/request.js.map +1 -1
  71. package/dist/roap/turnDiscovery.js +72 -47
  72. package/dist/roap/turnDiscovery.js.map +1 -1
  73. package/dist/statsAnalyzer/index.js +3 -3
  74. package/dist/statsAnalyzer/index.js.map +1 -1
  75. package/dist/statsAnalyzer/mqaUtil.js +18 -6
  76. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  77. package/package.json +24 -19
  78. package/src/breakouts/README.md +190 -0
  79. package/src/breakouts/breakout.ts +110 -0
  80. package/src/breakouts/collection.ts +19 -0
  81. package/src/breakouts/index.ts +225 -0
  82. package/src/config.ts +4 -1
  83. package/src/constants.ts +35 -1
  84. package/src/locus-info/controlsUtils.ts +2 -0
  85. package/src/locus-info/index.ts +59 -1
  86. package/src/locus-info/parser.ts +1 -0
  87. package/src/locus-info/selfUtils.ts +8 -0
  88. package/src/media/index.ts +1 -2
  89. package/src/media/properties.ts +6 -9
  90. package/src/meeting/index.ts +398 -129
  91. package/src/meeting/request.ts +9 -31
  92. package/src/meeting/request.type.ts +2 -0
  93. package/src/meeting/util.ts +3 -60
  94. package/src/meeting-info/meeting-info-v2.ts +2 -0
  95. package/src/meetings/index.ts +10 -5
  96. package/src/meetings/request.ts +1 -1
  97. package/src/member/index.ts +9 -0
  98. package/src/member/util.ts +14 -1
  99. package/src/members/index.ts +1 -0
  100. package/src/members/request.ts +1 -0
  101. package/src/multistream/mediaRequestManager.ts +79 -15
  102. package/src/multistream/multistreamMedia.ts +4 -0
  103. package/src/multistream/receiveSlot.ts +17 -12
  104. package/src/multistream/receiveSlotManager.ts +22 -21
  105. package/src/multistream/remoteMedia.ts +1 -1
  106. package/src/multistream/remoteMediaGroup.ts +2 -2
  107. package/src/multistream/remoteMediaManager.ts +150 -37
  108. package/src/reachability/index.ts +16 -13
  109. package/src/reactions/constants.ts +4 -0
  110. package/src/reactions/reactions.type.ts +25 -0
  111. package/src/reconnection-manager/index.ts +18 -9
  112. package/src/recording-controller/enums.ts +8 -0
  113. package/src/recording-controller/index.ts +315 -0
  114. package/src/recording-controller/util.ts +58 -0
  115. package/src/roap/request.ts +78 -73
  116. package/src/roap/turnDiscovery.ts +8 -6
  117. package/src/statsAnalyzer/index.ts +4 -4
  118. package/src/statsAnalyzer/mqaUtil.ts +6 -0
  119. package/test/unit/spec/breakouts/breakout.ts +119 -0
  120. package/test/unit/spec/breakouts/collection.ts +15 -0
  121. package/test/unit/spec/breakouts/index.ts +293 -0
  122. package/test/unit/spec/locus-info/controlsUtils.js +20 -0
  123. package/test/unit/spec/locus-info/index.js +103 -0
  124. package/test/unit/spec/locus-info/selfConstant.js +25 -0
  125. package/test/unit/spec/locus-info/selfUtils.js +84 -0
  126. package/test/unit/spec/media/index.ts +1 -1
  127. package/test/unit/spec/media/properties.ts +9 -9
  128. package/test/unit/spec/meeting/effectsState.js +5 -1
  129. package/test/unit/spec/meeting/index.js +419 -50
  130. package/test/unit/spec/meeting/request.js +17 -0
  131. package/test/unit/spec/meeting/utils.js +20 -129
  132. package/test/unit/spec/meetings/index.js +1 -0
  133. package/test/unit/spec/member/util.js +26 -1
  134. package/test/unit/spec/multistream/mediaRequestManager.ts +312 -50
  135. package/test/unit/spec/multistream/receiveSlot.ts +6 -6
  136. package/test/unit/spec/multistream/receiveSlotManager.ts +13 -13
  137. package/test/unit/spec/multistream/remoteMedia.ts +2 -2
  138. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  139. package/test/unit/spec/multistream/remoteMediaManager.ts +354 -65
  140. package/test/unit/spec/reachability/index.ts +58 -24
  141. package/test/unit/spec/reconnection-manager/index.js +42 -13
  142. package/test/unit/spec/recording-controller/index.js +231 -0
  143. package/test/unit/spec/recording-controller/util.js +102 -0
  144. package/test/unit/spec/roap/index.ts +2 -1
  145. package/test/unit/spec/roap/request.ts +114 -0
  146. package/test/unit/spec/roap/turnDiscovery.ts +45 -29
  147. package/test/unit/spec/stats-analyzer/index.js +2 -2
  148. package/test/utils/webex-test-users.js +1 -0
  149. package/tsconfig.json +6 -0
  150. package/dist/media/internal-media-core-wrapper.js +0 -18
  151. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  152. package/src/media/internal-media-core-wrapper.ts +0 -9
@@ -64,17 +64,18 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
64
64
  * @param {boolean} options.pin
65
65
  * @param {boolean} options.moveToResource
66
66
  * @param {Object} options.roapMessage
67
+ * @param {boolean} options.breakoutsSupported
67
68
  * @returns {Promise}
68
69
  */
69
70
  (0, _createClass2.default)(MeetingRequest, [{
70
71
  key: "joinMeeting",
71
72
  value: function () {
72
73
  var _joinMeeting = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(options) {
73
- var asResourceOccupant, inviteeAddress, meetingNumber, permissionToken, deviceUrl, locusUrl, resourceId, correlationId, ensureConversation, moderator, pin, moveToResource, roapMessage, preferTranscoding, url, body;
74
+ var asResourceOccupant, inviteeAddress, meetingNumber, permissionToken, deviceUrl, locusUrl, resourceId, correlationId, ensureConversation, moderator, pin, moveToResource, roapMessage, preferTranscoding, breakoutsSupported, url, body;
74
75
  return _regenerator.default.wrap(function _callee$(_context) {
75
76
  while (1) switch (_context.prev = _context.next) {
76
77
  case 0:
77
- asResourceOccupant = options.asResourceOccupant, inviteeAddress = options.inviteeAddress, meetingNumber = options.meetingNumber, permissionToken = options.permissionToken, deviceUrl = options.deviceUrl, locusUrl = options.locusUrl, resourceId = options.resourceId, correlationId = options.correlationId, ensureConversation = options.ensureConversation, moderator = options.moderator, pin = options.pin, moveToResource = options.moveToResource, roapMessage = options.roapMessage, preferTranscoding = options.preferTranscoding;
78
+ asResourceOccupant = options.asResourceOccupant, inviteeAddress = options.inviteeAddress, meetingNumber = options.meetingNumber, permissionToken = options.permissionToken, deviceUrl = options.deviceUrl, locusUrl = options.locusUrl, resourceId = options.resourceId, correlationId = options.correlationId, ensureConversation = options.ensureConversation, moderator = options.moderator, pin = options.pin, moveToResource = options.moveToResource, roapMessage = options.roapMessage, preferTranscoding = options.preferTranscoding, breakoutsSupported = options.breakoutsSupported;
78
79
  _loggerProxy.default.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);
79
80
  url = '';
80
81
  body = {
@@ -94,7 +95,12 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
94
95
  clientMediaPreferences: {
95
96
  preferTranscoding: preferTranscoding !== null && preferTranscoding !== void 0 ? preferTranscoding : true
96
97
  }
97
- }; // @ts-ignore
98
+ };
99
+ if (breakoutsSupported) {
100
+ body.deviceCapabilities = [_constants.BREAKOUTS.BREAKOUTS_SUPPORTED];
101
+ }
102
+
103
+ // @ts-ignore
98
104
  if (this.webex.meetings.clientRegion) {
99
105
  // @ts-ignore
100
106
  body.device.countryCode = this.webex.meetings.clientRegion.countryCode;
@@ -111,34 +117,34 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
111
117
  body.pin = pin;
112
118
  }
113
119
  if (!locusUrl) {
114
- _context.next = 12;
120
+ _context.next = 13;
115
121
  break;
116
122
  }
117
123
  url = "".concat(locusUrl, "/").concat(_constants.PARTICIPANT);
118
- _context.next = 24;
124
+ _context.next = 25;
119
125
  break;
120
- case 12:
126
+ case 13:
121
127
  if (!(inviteeAddress || meetingNumber)) {
122
- _context.next = 24;
128
+ _context.next = 25;
123
129
  break;
124
130
  }
125
- _context.prev = 13;
126
- _context.next = 16;
131
+ _context.prev = 14;
132
+ _context.next = 17;
127
133
  return this.webex.internal.services.waitForCatalog('postauth');
128
- case 16:
134
+ case 17:
129
135
  // @ts-ignore
130
136
  url = "".concat(this.webex.internal.services.get('locus'), "/").concat(_constants.LOCI, "/").concat(_constants.CALL);
131
137
  body.invitee = {
132
138
  address: inviteeAddress || "wbxmn:".concat(meetingNumber)
133
139
  };
134
- _context.next = 24;
140
+ _context.next = 25;
135
141
  break;
136
- case 20:
137
- _context.prev = 20;
138
- _context.t0 = _context["catch"](13);
142
+ case 21:
143
+ _context.prev = 21;
144
+ _context.t0 = _context["catch"](14);
139
145
  _loggerProxy.default.logger.error("Meeting:request#joinMeeting Error Joining ".concat(inviteeAddress || meetingNumber, " --> ").concat(_context.t0));
140
146
  throw _context.t0;
141
- case 24:
147
+ case 25:
142
148
  // TODO: -- this will be resolved in SDK request
143
149
  url = url.concat("?".concat(_constants.ALTERNATE_REDIRECT_TRUE));
144
150
  if (resourceId === inviteeAddress) {
@@ -156,11 +162,11 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
156
162
  uri: url,
157
163
  body: body
158
164
  }));
159
- case 28:
165
+ case 29:
160
166
  case "end":
161
167
  return _context.stop();
162
168
  }
163
- }, _callee, this, [[13, 20]]);
169
+ }, _callee, this, [[14, 21]]);
164
170
  }));
165
171
  function joinMeeting(_x) {
166
172
  return _joinMeeting.apply(this, arguments);
@@ -442,33 +448,6 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
442
448
  body: body
443
449
  });
444
450
  }
445
-
446
- /**
447
- * Make a network request to acknowledge a meeting
448
- * @param {Object} options
449
- * @param {String} options.locusUrl
450
- * @param {String} options.deviceUrl
451
- * @param {String} options.id
452
- * @returns {Promise}
453
- */
454
- }, {
455
- key: "recordMeeting",
456
- value: function recordMeeting(options) {
457
- var uri = "".concat(options.locusUrl, "/").concat(_constants.CONTROLS);
458
- var body = {
459
- record: {
460
- recording: options.recording,
461
- paused: options.paused
462
- }
463
- };
464
-
465
- // @ts-ignore
466
- return this.request({
467
- method: _constants.HTTP_VERBS.PATCH,
468
- uri: uri,
469
- body: body
470
- });
471
- }
472
451
  }, {
473
452
  key: "lockMeeting",
474
453
  value: function lockMeeting(options) {
@@ -770,6 +749,8 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
770
749
  locusUrl = _ref11.locusUrl,
771
750
  requestingParticipantId = _ref11.requestingParticipantId;
772
751
  var uri = "".concat(locusUrl, "/").concat(_constants.CONTROLS);
752
+
753
+ // @ts-ignore
773
754
  return this.request({
774
755
  method: _constants.HTTP_VERBS.PUT,
775
756
  uri: uri,
@@ -1 +1 @@
1
- {"version":3,"names":["MeetingRequest","attrs","options","changeVideoLayoutDebounced","changeVideoLayout","leading","trailing","asResourceOccupant","inviteeAddress","meetingNumber","permissionToken","deviceUrl","locusUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","preferTranscoding","LoggerProxy","logger","info","url","body","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","clientMediaPreferences","webex","clientRegion","countryCode","regionCode","undefined","PARTICIPANT","internal","services","waitForCatalog","get","LOCI","CALL","invitee","address","error","concat","ALTERNATE_REDIRECT_TRUE","callPreferences","requestedMedia","_SLIDES_","localMedias","request","method","HTTP_VERBS","POST","uri","captchaRefreshUrl","captchaId","catch","err","dialInUrl","clientUrl","PROVISIONAL","provisionalType","PROVISIONAL_TYPE_DIAL_IN","dialOutUrl","phoneNumber","PROVISIONAL_TYPE_DIAL_OUT","dialoutAddress","desync","syncUrl","split","LOCUS","SYNCDEBUG","GET","reject","phoneUrl","selfId","LEAVE","PUT","ALERT","CONTROLS","record","recording","paused","PATCH","lock","locked","DECLINE","reason","MEDIA","floorReq","disposition","FLOOR_ACTION","GRANTED","beneficiary","personUrl","devices","requester","floor","resourceUrl","resourceToken","tones","SEND_DTMF_ENDPOINT","dtmf","uuid","v4","layoutType","main","content","width","height","Error","renderInfoMain","renderInfoContent","layoutParams","renderInfo","layout","type","END","keepAliveUrl","reactionChannelUrl","reaction","participantId","sender","enable","requestingParticipantId","reactions","enabled","StatelessWebexPlugin"],"sources":["request.ts"],"sourcesContent":["import uuid from 'uuid';\nimport {debounce} from 'lodash';\n// @ts-ignore\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n// @ts-ignore\nimport {deviceType} from '@webex/common';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n ALERT,\n ALTERNATE_REDIRECT_TRUE,\n CALL,\n CONTROLS,\n DECLINE,\n END,\n FLOOR_ACTION,\n HTTP_VERBS,\n LEAVE,\n LOCI,\n LOCUS,\n MEDIA,\n PARTICIPANT,\n PROVISIONAL_TYPE_DIAL_IN,\n PROVISIONAL_TYPE_DIAL_OUT,\n SEND_DTMF_ENDPOINT,\n _SLIDES_,\n} from '../constants';\nimport {Reaction} from '../reactions/reactions.type';\nimport {SendReactionOptions, ToggleReactionsOptions} from './request.type';\n\n/**\n * @class MeetingRequest\n */\nexport default class MeetingRequest extends StatelessWebexPlugin {\n changeVideoLayoutDebounced: any;\n\n constructor(attrs: any, options: any) {\n super(attrs, options);\n this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {\n leading: true,\n trailing: true,\n });\n }\n\n /**\n * Make a network request to join a meeting\n * @param {Object} options\n * @param {String} options.sipUri\n * @param {String} options.deviceUrl\n * @param {String} options.locusUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @param {boolean} options.ensureConversation\n * @param {boolean} options.moderator\n * @param {boolean} options.pin\n * @param {boolean} options.moveToResource\n * @param {Object} options.roapMessage\n * @returns {Promise}\n */\n async joinMeeting(options: {\n sipUri: string;\n deviceUrl: string;\n locusUrl: string;\n resourceId: string;\n correlationId: string;\n ensureConversation: boolean;\n moderator: boolean;\n pin: boolean;\n moveToResource: boolean;\n roapMessage: any;\n asResourceOccupant: any;\n inviteeAddress: any;\n meetingNumber: any;\n permissionToken: any;\n preferTranscoding: any;\n }) {\n const {\n asResourceOccupant,\n inviteeAddress,\n meetingNumber,\n permissionToken,\n deviceUrl,\n locusUrl,\n resourceId,\n correlationId,\n ensureConversation,\n moderator,\n pin,\n moveToResource,\n roapMessage,\n preferTranscoding,\n } = options;\n\n LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);\n\n let url = '';\n\n const body: any = {\n asResourceOccupant,\n device: {\n url: deviceUrl,\n // @ts-ignore - config comes from registerPlugin\n deviceType: this.config.meetings.deviceType,\n },\n usingResource: resourceId || null,\n moveMediaToResource: (resourceId && moveToResource) || false,\n correlationId,\n respOnlySdp: true,\n allowMultiDevice: true,\n ensureConversation: ensureConversation || false,\n supportsNativeLobby: 1,\n clientMediaPreferences: {\n preferTranscoding: preferTranscoding ?? true,\n },\n };\n\n // @ts-ignore\n if (this.webex.meetings.clientRegion) {\n // @ts-ignore\n body.device.countryCode = this.webex.meetings.clientRegion.countryCode;\n // @ts-ignore\n body.device.regionCode = this.webex.meetings.clientRegion.regionCode;\n }\n\n if (moderator !== undefined) {\n body.moderator = moderator;\n }\n\n if (permissionToken) {\n body.permissionToken = permissionToken;\n }\n\n if (pin !== undefined) {\n body.pin = pin;\n }\n\n if (locusUrl) {\n url = `${locusUrl}/${PARTICIPANT}`;\n } else if (inviteeAddress || meetingNumber) {\n try {\n // @ts-ignore\n await this.webex.internal.services.waitForCatalog('postauth');\n // @ts-ignore\n url = `${this.webex.internal.services.get('locus')}/${LOCI}/${CALL}`;\n body.invitee = {\n address: inviteeAddress || `wbxmn:${meetingNumber}`,\n };\n } catch (e) {\n LoggerProxy.logger.error(\n `Meeting:request#joinMeeting Error Joining ${inviteeAddress || meetingNumber} --> ${e}`\n );\n throw e;\n }\n }\n\n // TODO: -- this will be resolved in SDK request\n url = url.concat(`?${ALTERNATE_REDIRECT_TRUE}`);\n\n if (resourceId === inviteeAddress) {\n body.callPreferences = {\n requestedMedia: [_SLIDES_],\n };\n }\n\n if (roapMessage) {\n body.localMedias = roapMessage.localMedias;\n }\n\n /// @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: url,\n body,\n });\n }\n\n /**\n * Send a request to refresh the captcha\n * @param {Object} options\n * @param {String} options.captchaRefreshUrl\n * @param {String} options.captchaId\n * @returns {Promise}\n * @private\n */\n private refreshCaptcha({\n captchaRefreshUrl,\n captchaId,\n }: {\n captchaRefreshUrl: string;\n captchaId: string;\n }) {\n const body = {\n captchaId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: captchaRefreshUrl,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#refreshCaptcha --> Error: ${err}`);\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial in device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialInUrl identifier for the to-be provisioned device\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialIn({\n locusUrl,\n dialInUrl,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialInUrl: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialIn --> Provisioning a dial in device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_IN,\n url: dialInUrl,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial out device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialOutUrl identifier for the to-be provisioned device\n * @param {String} options.phoneNumber phone number to dial out to\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialOut({\n locusUrl,\n dialOutUrl,\n phoneNumber,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialOutUrl: string;\n phoneNumber: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialOut --> Provisioning a dial out device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_OUT,\n url: dialOutUrl,\n dialoutAddress: phoneNumber,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Syns the missed delta event\n * @param {Object} options\n * @param {boolean} options.desync flag to get partial or whole locus object\n * @param {String} options.syncUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n syncMeeting(options: {desync: boolean; syncUrl: string}) {\n /* eslint-disable no-else-return */\n const {desync} = options;\n let {syncUrl} = options;\n\n /* istanbul ignore else */\n if (desync) {\n // check for existing URL parameters\n syncUrl = syncUrl\n .concat(syncUrl.split('?')[1] ? '&' : '?')\n .concat(`${LOCUS.SYNCDEBUG}=${desync}`);\n }\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: syncUrl,\n }) // TODO: Handle if delta sync failed . Get the full locus object\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#syncMeeting --> Error syncing meeting, error ${err}`\n );\n\n return err;\n });\n }\n\n /**\n * Request to get the complete locus object\n * @param {Object} options\n * @param {boolean} options.desync flag to get partial or whole locus object\n * @param {String} options.locusUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n getFullLocus(options: {desync: boolean; locusUrl: string}) {\n let {locusUrl} = options;\n const {desync} = options;\n\n if (locusUrl) {\n if (desync) {\n locusUrl += `?${LOCUS.SYNCDEBUG}=${desync}`;\n }\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: locusUrl,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#getFullLocus --> Error getting full locus, error ${err}`\n );\n\n return err;\n });\n }\n\n return Promise.reject();\n }\n\n /**\n * Make a network request to make a provisioned phone leave the meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.phoneUrl\n * @param {String} options.correlationId\n * @param {String} options.selfId\n * @returns {Promise}\n * @private\n */\n private disconnectPhoneAudio({\n locusUrl,\n phoneUrl,\n correlationId,\n selfId,\n }: {\n locusUrl: string;\n phoneUrl: string;\n correlationId: string;\n selfId: string;\n }) {\n LoggerProxy.logger.info(\n `Meeting:request#disconnectPhoneAudio --> request phone ${phoneUrl} to leave`,\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n url: phoneUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#disconnectPhoneAudio --> Error when requesting phone ${phoneUrl} to leave, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Make a network request to leave a meeting\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @param {String} options.selfId\n * @param {Url} options.deviceUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @returns {Promise}\n */\n leaveMeeting({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId,\n }: {\n locusUrl: string;\n selfId: string;\n deviceUrl: string;\n resourceId: string;\n correlationId: string;\n }) {\n LoggerProxy.logger.info('Meeting:request#leaveMeeting --> Leaving a meeting', correlationId);\n\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url,\n },\n usingResource: resourceId || null,\n correlationId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Make a network request to acknowledge a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.correlationId\n * @returns {Promise}\n */\n acknowledgeMeeting(options: {locusUrl: string; deviceUrl: string; correlationId: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${ALERT}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n correlationId: options.correlationId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Make a network request to acknowledge a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.id\n * @returns {Promise}\n */\n recordMeeting(options: {\n locusUrl: string;\n deviceUrl: string;\n id: string;\n recording: any;\n paused: any;\n }) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n record: {\n recording: options.recording,\n paused: options.paused,\n },\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n });\n }\n\n lockMeeting(options) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n lock: {\n locked: options.lock,\n },\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n });\n }\n\n /**\n * Make a network request to decline a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.reason\n * @returns {Promise}\n */\n declineMeeting(options: {locusUrl: string; deviceUrl: string; reason: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${DECLINE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ...(options.reason && {reason: options.reason}),\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Toggle remote audio and/or video\n * @param {Object} options options for toggling\n * @param {String} options.selfId Locus self id??\n * @param {String} options.locusUrl Locus url\n * @param {String} options.deviceUrl Url of a device\n * @param {String} options.resourceId Populated if you are paired to a device\n * @param {String} options.localMedias local sdps\n * @param {Boolean} options.preferTranscoding false for multistream (Homer), true for transcoded media (Edonus)\n * @returns {Promise}\n */\n remoteAudioVideoToggle(\n options:\n | {\n selfId: string;\n locusUrl: string;\n deviceUrl: string;\n resourceId: string;\n localMedias: string;\n }\n | any\n ) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.selfId}/${MEDIA}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n usingResource: options.resourceId || null,\n correlationId: options.correlationId,\n respOnlySdp: true,\n localMedias: options.localMedias,\n clientMediaPreferences: {\n preferTranscoding: options.preferTranscoding ?? true,\n },\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * change the content floor grant\n * @param {Object} options options for floor grant\n * @param {String} options.disposition floor action (granted/released)\n * @param {String} options.personUrl personUrl who is requesting floor\n * @param {String} options.deviceUrl Url of a device\n * @param {String} options.resourceId Populated if you are paired to a device\n * @param {String} options.uri floor grant uri\n * @returns {Promise}\n */\n changeMeetingFloor(\n options:\n | {\n disposition: string;\n personUrl: string;\n deviceUrl: string;\n resourceId: string;\n uri: string;\n }\n | any\n ) {\n let floorReq: any = {disposition: options.disposition};\n\n /* istanbul ignore else */\n if (options.disposition === FLOOR_ACTION.GRANTED) {\n floorReq = {\n beneficiary: {\n url: options.personUrl,\n devices: [\n {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ],\n },\n disposition: options.disposition,\n requester: {\n url: options.personUrl,\n },\n };\n }\n\n const body: any = {\n floor: floorReq,\n resourceUrl: options.resourceUrl,\n };\n\n if (options?.resourceToken) {\n body.resourceToken = options?.resourceToken;\n }\n\n // @ts-ignore\n return this.request({\n uri: options.uri,\n method: HTTP_VERBS.PUT,\n body,\n });\n }\n\n /**\n * Sends a request to the DTMF endpoint to send tones\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.tones a string of one or more DTMF tones to send\n * @returns {Promise}\n */\n sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,\n body: {\n deviceUrl,\n dtmf: {\n correlationId: uuid.v4(),\n tones,\n },\n },\n });\n }\n\n /**\n * Sends a request to the controls endpoint to set the video layout\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.layoutType a layout type that should be available in meeting constants {@link #layout_types}\n * @param {Object} options.main preferred dimensions for the remote main video stream\n * @param {Number} options.main.width preferred width of main video stream\n * @param {Number} options.main.height preferred height of main video stream\n * @param {Object} options.content preferred dimensions for the remote content share stream\n * @param {Number} options.content.width preferred width of content share stream\n * @param {Number} options.content.height preferred height of content share stream\n * @returns {Promise}\n */\n changeVideoLayout({\n locusUrl,\n deviceUrl,\n layoutType,\n main,\n content,\n }: {\n locusUrl: string;\n deviceUrl: string;\n layoutType: string;\n main: {\n width: number;\n height: number;\n };\n content: {\n width: number;\n height: number;\n };\n }) {\n // send main/content renderInfo only if both width and height are specified\n if (main && (!main.width || !main.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for main: ${JSON.stringify(\n main\n )}`\n )\n );\n }\n\n if (content && (!content.width || !content.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for content: ${JSON.stringify(\n content\n )}`\n )\n );\n }\n\n const renderInfoMain = main ? {width: main.width, height: main.height} : undefined;\n const renderInfoContent = content ? {width: content.width, height: content.height} : undefined;\n\n const layoutParams =\n renderInfoMain || renderInfoContent\n ? {\n renderInfo: {\n main: renderInfoMain,\n content: renderInfoContent,\n },\n }\n : undefined;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: `${locusUrl}/${CONTROLS}`,\n body: {\n layout: {\n deviceUrl,\n type: layoutType,\n layoutParams,\n },\n },\n });\n }\n\n /**\n * Make a network request to end meeting for all\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @returns {Promise}\n */\n endMeetingForAll({locusUrl}: {locusUrl: string}) {\n const uri = `${locusUrl}/${END}`;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n });\n }\n\n /**\n * Send a locus keepAlive (used in lobby)\n * @param {Object} options\n * @param {Url} options.keepAliveUrl\n * @returns {Promise}\n */\n keepAlive({keepAliveUrl}: {keepAliveUrl: string}) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: keepAliveUrl,\n });\n }\n\n /**\n * Make a network request to send a reaction.\n * @param {Object} options\n * @param {Url} options.reactionChannelUrl\n * @param {Reaction} options.reaction\n * @param {string} options.senderID\n * @returns {Promise}\n */\n sendReaction({reactionChannelUrl, reaction, participantId}: SendReactionOptions) {\n const uri = reactionChannelUrl;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body: {\n sender: {participantId},\n reaction,\n },\n });\n }\n\n /**\n * Make a network request to enable or disable reactions.\n * @param {boolean} options.enable - determines if we need to enable or disable.\n * @param {locusUrl} options.locusUrl\n * @returns {Promise}\n */\n toggleReactions({enable, locusUrl, requestingParticipantId}: ToggleReactionsOptions) {\n const uri = `${locusUrl}/${CONTROLS}`;\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body: {\n reactions: {\n enabled: enable,\n },\n requestingParticipantId,\n },\n });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["MeetingRequest","attrs","options","changeVideoLayoutDebounced","changeVideoLayout","leading","trailing","asResourceOccupant","inviteeAddress","meetingNumber","permissionToken","deviceUrl","locusUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","preferTranscoding","breakoutsSupported","LoggerProxy","logger","info","url","body","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","clientMediaPreferences","deviceCapabilities","BREAKOUTS","BREAKOUTS_SUPPORTED","webex","clientRegion","countryCode","regionCode","undefined","PARTICIPANT","internal","services","waitForCatalog","get","LOCI","CALL","invitee","address","error","concat","ALTERNATE_REDIRECT_TRUE","callPreferences","requestedMedia","_SLIDES_","localMedias","request","method","HTTP_VERBS","POST","uri","captchaRefreshUrl","captchaId","catch","err","dialInUrl","clientUrl","PROVISIONAL","provisionalType","PROVISIONAL_TYPE_DIAL_IN","dialOutUrl","phoneNumber","PROVISIONAL_TYPE_DIAL_OUT","dialoutAddress","desync","syncUrl","split","LOCUS","SYNCDEBUG","GET","reject","phoneUrl","selfId","LEAVE","PUT","ALERT","CONTROLS","lock","locked","PATCH","DECLINE","reason","MEDIA","floorReq","disposition","FLOOR_ACTION","GRANTED","beneficiary","personUrl","devices","requester","floor","resourceUrl","resourceToken","tones","SEND_DTMF_ENDPOINT","dtmf","uuid","v4","layoutType","main","content","width","height","Error","renderInfoMain","renderInfoContent","layoutParams","renderInfo","layout","type","END","keepAliveUrl","reactionChannelUrl","reaction","participantId","sender","enable","requestingParticipantId","reactions","enabled","StatelessWebexPlugin"],"sources":["request.ts"],"sourcesContent":["import uuid from 'uuid';\nimport {debounce} from 'lodash';\n// @ts-ignore\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n// @ts-ignore\nimport {deviceType} from '@webex/common';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n ALERT,\n ALTERNATE_REDIRECT_TRUE,\n BREAKOUTS,\n CALL,\n CONTROLS,\n DECLINE,\n END,\n FLOOR_ACTION,\n HTTP_VERBS,\n LEAVE,\n LOCI,\n LOCUS,\n MEDIA,\n PARTICIPANT,\n PROVISIONAL_TYPE_DIAL_IN,\n PROVISIONAL_TYPE_DIAL_OUT,\n SEND_DTMF_ENDPOINT,\n _SLIDES_,\n} from '../constants';\nimport {Reaction} from '../reactions/reactions.type';\nimport {SendReactionOptions, ToggleReactionsOptions} from './request.type';\n\n/**\n * @class MeetingRequest\n */\nexport default class MeetingRequest extends StatelessWebexPlugin {\n changeVideoLayoutDebounced: any;\n\n constructor(attrs: any, options: any) {\n super(attrs, options);\n this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {\n leading: true,\n trailing: true,\n });\n }\n\n /**\n * Make a network request to join a meeting\n * @param {Object} options\n * @param {String} options.sipUri\n * @param {String} options.deviceUrl\n * @param {String} options.locusUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @param {boolean} options.ensureConversation\n * @param {boolean} options.moderator\n * @param {boolean} options.pin\n * @param {boolean} options.moveToResource\n * @param {Object} options.roapMessage\n * @param {boolean} options.breakoutsSupported\n * @returns {Promise}\n */\n async joinMeeting(options: {\n sipUri: string;\n deviceUrl: string;\n locusUrl: string;\n resourceId: string;\n correlationId: string;\n ensureConversation: boolean;\n moderator: boolean;\n pin: boolean;\n moveToResource: boolean;\n roapMessage: any;\n asResourceOccupant: any;\n inviteeAddress: any;\n meetingNumber: any;\n permissionToken: any;\n preferTranscoding: any;\n breakoutsSupported: boolean;\n }) {\n const {\n asResourceOccupant,\n inviteeAddress,\n meetingNumber,\n permissionToken,\n deviceUrl,\n locusUrl,\n resourceId,\n correlationId,\n ensureConversation,\n moderator,\n pin,\n moveToResource,\n roapMessage,\n preferTranscoding,\n breakoutsSupported,\n } = options;\n\n LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);\n\n let url = '';\n\n const body: any = {\n asResourceOccupant,\n device: {\n url: deviceUrl,\n // @ts-ignore - config comes from registerPlugin\n deviceType: this.config.meetings.deviceType,\n },\n usingResource: resourceId || null,\n moveMediaToResource: (resourceId && moveToResource) || false,\n correlationId,\n respOnlySdp: true,\n allowMultiDevice: true,\n ensureConversation: ensureConversation || false,\n supportsNativeLobby: 1,\n clientMediaPreferences: {\n preferTranscoding: preferTranscoding ?? true,\n },\n };\n\n if (breakoutsSupported) {\n body.deviceCapabilities = [BREAKOUTS.BREAKOUTS_SUPPORTED];\n }\n\n // @ts-ignore\n if (this.webex.meetings.clientRegion) {\n // @ts-ignore\n body.device.countryCode = this.webex.meetings.clientRegion.countryCode;\n // @ts-ignore\n body.device.regionCode = this.webex.meetings.clientRegion.regionCode;\n }\n\n if (moderator !== undefined) {\n body.moderator = moderator;\n }\n\n if (permissionToken) {\n body.permissionToken = permissionToken;\n }\n\n if (pin !== undefined) {\n body.pin = pin;\n }\n\n if (locusUrl) {\n url = `${locusUrl}/${PARTICIPANT}`;\n } else if (inviteeAddress || meetingNumber) {\n try {\n // @ts-ignore\n await this.webex.internal.services.waitForCatalog('postauth');\n // @ts-ignore\n url = `${this.webex.internal.services.get('locus')}/${LOCI}/${CALL}`;\n body.invitee = {\n address: inviteeAddress || `wbxmn:${meetingNumber}`,\n };\n } catch (e) {\n LoggerProxy.logger.error(\n `Meeting:request#joinMeeting Error Joining ${inviteeAddress || meetingNumber} --> ${e}`\n );\n throw e;\n }\n }\n\n // TODO: -- this will be resolved in SDK request\n url = url.concat(`?${ALTERNATE_REDIRECT_TRUE}`);\n\n if (resourceId === inviteeAddress) {\n body.callPreferences = {\n requestedMedia: [_SLIDES_],\n };\n }\n\n if (roapMessage) {\n body.localMedias = roapMessage.localMedias;\n }\n\n /// @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: url,\n body,\n });\n }\n\n /**\n * Send a request to refresh the captcha\n * @param {Object} options\n * @param {String} options.captchaRefreshUrl\n * @param {String} options.captchaId\n * @returns {Promise}\n * @private\n */\n private refreshCaptcha({\n captchaRefreshUrl,\n captchaId,\n }: {\n captchaRefreshUrl: string;\n captchaId: string;\n }) {\n const body = {\n captchaId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: captchaRefreshUrl,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#refreshCaptcha --> Error: ${err}`);\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial in device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialInUrl identifier for the to-be provisioned device\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialIn({\n locusUrl,\n dialInUrl,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialInUrl: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialIn --> Provisioning a dial in device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_IN,\n url: dialInUrl,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial out device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialOutUrl identifier for the to-be provisioned device\n * @param {String} options.phoneNumber phone number to dial out to\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialOut({\n locusUrl,\n dialOutUrl,\n phoneNumber,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialOutUrl: string;\n phoneNumber: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialOut --> Provisioning a dial out device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_OUT,\n url: dialOutUrl,\n dialoutAddress: phoneNumber,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Syns the missed delta event\n * @param {Object} options\n * @param {boolean} options.desync flag to get partial or whole locus object\n * @param {String} options.syncUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n syncMeeting(options: {desync: boolean; syncUrl: string}) {\n /* eslint-disable no-else-return */\n const {desync} = options;\n let {syncUrl} = options;\n\n /* istanbul ignore else */\n if (desync) {\n // check for existing URL parameters\n syncUrl = syncUrl\n .concat(syncUrl.split('?')[1] ? '&' : '?')\n .concat(`${LOCUS.SYNCDEBUG}=${desync}`);\n }\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: syncUrl,\n }) // TODO: Handle if delta sync failed . Get the full locus object\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#syncMeeting --> Error syncing meeting, error ${err}`\n );\n\n return err;\n });\n }\n\n /**\n * Request to get the complete locus object\n * @param {Object} options\n * @param {boolean} options.desync flag to get partial or whole locus object\n * @param {String} options.locusUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n getFullLocus(options: {desync: boolean; locusUrl: string}) {\n let {locusUrl} = options;\n const {desync} = options;\n\n if (locusUrl) {\n if (desync) {\n locusUrl += `?${LOCUS.SYNCDEBUG}=${desync}`;\n }\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: locusUrl,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#getFullLocus --> Error getting full locus, error ${err}`\n );\n\n return err;\n });\n }\n\n return Promise.reject();\n }\n\n /**\n * Make a network request to make a provisioned phone leave the meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.phoneUrl\n * @param {String} options.correlationId\n * @param {String} options.selfId\n * @returns {Promise}\n * @private\n */\n private disconnectPhoneAudio({\n locusUrl,\n phoneUrl,\n correlationId,\n selfId,\n }: {\n locusUrl: string;\n phoneUrl: string;\n correlationId: string;\n selfId: string;\n }) {\n LoggerProxy.logger.info(\n `Meeting:request#disconnectPhoneAudio --> request phone ${phoneUrl} to leave`,\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n url: phoneUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#disconnectPhoneAudio --> Error when requesting phone ${phoneUrl} to leave, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Make a network request to leave a meeting\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @param {String} options.selfId\n * @param {Url} options.deviceUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @returns {Promise}\n */\n leaveMeeting({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId,\n }: {\n locusUrl: string;\n selfId: string;\n deviceUrl: string;\n resourceId: string;\n correlationId: string;\n }) {\n LoggerProxy.logger.info('Meeting:request#leaveMeeting --> Leaving a meeting', correlationId);\n\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url,\n },\n usingResource: resourceId || null,\n correlationId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Make a network request to acknowledge a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.correlationId\n * @returns {Promise}\n */\n acknowledgeMeeting(options: {locusUrl: string; deviceUrl: string; correlationId: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${ALERT}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n correlationId: options.correlationId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n lockMeeting(options) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n lock: {\n locked: options.lock,\n },\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n });\n }\n\n /**\n * Make a network request to decline a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.reason\n * @returns {Promise}\n */\n declineMeeting(options: {locusUrl: string; deviceUrl: string; reason: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${DECLINE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ...(options.reason && {reason: options.reason}),\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Toggle remote audio and/or video\n * @param {Object} options options for toggling\n * @param {String} options.selfId Locus self id??\n * @param {String} options.locusUrl Locus url\n * @param {String} options.deviceUrl Url of a device\n * @param {String} options.resourceId Populated if you are paired to a device\n * @param {String} options.localMedias local sdps\n * @param {Boolean} options.preferTranscoding false for multistream (Homer), true for transcoded media (Edonus)\n * @returns {Promise}\n */\n remoteAudioVideoToggle(\n options:\n | {\n selfId: string;\n locusUrl: string;\n deviceUrl: string;\n resourceId: string;\n localMedias: string;\n }\n | any\n ) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.selfId}/${MEDIA}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n usingResource: options.resourceId || null,\n correlationId: options.correlationId,\n respOnlySdp: true,\n localMedias: options.localMedias,\n clientMediaPreferences: {\n preferTranscoding: options.preferTranscoding ?? true,\n },\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * change the content floor grant\n * @param {Object} options options for floor grant\n * @param {String} options.disposition floor action (granted/released)\n * @param {String} options.personUrl personUrl who is requesting floor\n * @param {String} options.deviceUrl Url of a device\n * @param {String} options.resourceId Populated if you are paired to a device\n * @param {String} options.uri floor grant uri\n * @returns {Promise}\n */\n changeMeetingFloor(\n options:\n | {\n disposition: string;\n personUrl: string;\n deviceUrl: string;\n resourceId: string;\n uri: string;\n }\n | any\n ) {\n let floorReq: any = {disposition: options.disposition};\n\n /* istanbul ignore else */\n if (options.disposition === FLOOR_ACTION.GRANTED) {\n floorReq = {\n beneficiary: {\n url: options.personUrl,\n devices: [\n {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ],\n },\n disposition: options.disposition,\n requester: {\n url: options.personUrl,\n },\n };\n }\n\n const body: any = {\n floor: floorReq,\n resourceUrl: options.resourceUrl,\n };\n\n if (options?.resourceToken) {\n body.resourceToken = options?.resourceToken;\n }\n\n // @ts-ignore\n return this.request({\n uri: options.uri,\n method: HTTP_VERBS.PUT,\n body,\n });\n }\n\n /**\n * Sends a request to the DTMF endpoint to send tones\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.tones a string of one or more DTMF tones to send\n * @returns {Promise}\n */\n sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,\n body: {\n deviceUrl,\n dtmf: {\n correlationId: uuid.v4(),\n tones,\n },\n },\n });\n }\n\n /**\n * Sends a request to the controls endpoint to set the video layout\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.layoutType a layout type that should be available in meeting constants {@link #layout_types}\n * @param {Object} options.main preferred dimensions for the remote main video stream\n * @param {Number} options.main.width preferred width of main video stream\n * @param {Number} options.main.height preferred height of main video stream\n * @param {Object} options.content preferred dimensions for the remote content share stream\n * @param {Number} options.content.width preferred width of content share stream\n * @param {Number} options.content.height preferred height of content share stream\n * @returns {Promise}\n */\n changeVideoLayout({\n locusUrl,\n deviceUrl,\n layoutType,\n main,\n content,\n }: {\n locusUrl: string;\n deviceUrl: string;\n layoutType: string;\n main: {\n width: number;\n height: number;\n };\n content: {\n width: number;\n height: number;\n };\n }) {\n // send main/content renderInfo only if both width and height are specified\n if (main && (!main.width || !main.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for main: ${JSON.stringify(\n main\n )}`\n )\n );\n }\n\n if (content && (!content.width || !content.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for content: ${JSON.stringify(\n content\n )}`\n )\n );\n }\n\n const renderInfoMain = main ? {width: main.width, height: main.height} : undefined;\n const renderInfoContent = content ? {width: content.width, height: content.height} : undefined;\n\n const layoutParams =\n renderInfoMain || renderInfoContent\n ? {\n renderInfo: {\n main: renderInfoMain,\n content: renderInfoContent,\n },\n }\n : undefined;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: `${locusUrl}/${CONTROLS}`,\n body: {\n layout: {\n deviceUrl,\n type: layoutType,\n layoutParams,\n },\n },\n });\n }\n\n /**\n * Make a network request to end meeting for all\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @returns {Promise}\n */\n endMeetingForAll({locusUrl}: {locusUrl: string}) {\n const uri = `${locusUrl}/${END}`;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n });\n }\n\n /**\n * Send a locus keepAlive (used in lobby)\n * @param {Object} options\n * @param {Url} options.keepAliveUrl\n * @returns {Promise}\n */\n keepAlive({keepAliveUrl}: {keepAliveUrl: string}) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: keepAliveUrl,\n });\n }\n\n /**\n * Make a network request to send a reaction.\n * @param {Object} options\n * @param {Url} options.reactionChannelUrl\n * @param {Reaction} options.reaction\n * @param {string} options.senderID\n * @returns {Promise}\n */\n sendReaction({reactionChannelUrl, reaction, participantId}: SendReactionOptions) {\n const uri = reactionChannelUrl;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body: {\n sender: {participantId},\n reaction,\n },\n });\n }\n\n /**\n * Make a network request to enable or disable reactions.\n * @param {boolean} options.enable - determines if we need to enable or disable.\n * @param {locusUrl} options.locusUrl\n * @returns {Promise}\n */\n toggleReactions({enable, locusUrl, requestingParticipantId}: ToggleReactionsOptions) {\n const uri = `${locusUrl}/${CONTROLS}`;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body: {\n reactions: {\n enabled: enable,\n },\n requestingParticipantId,\n },\n });\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["request.type.ts"],"sourcesContent":["export type SendReactionOptions = {\n reactionChannelUrl: string;\n reaction: Reaction;\n participantId: string;\n};\n\nexport type ToggleReactionsOptions = {\n enable: boolean;\n locusUrl: string;\n requestingParticipantId: string;\n};\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["request.type.ts"],"sourcesContent":["import {Reaction} from '../reactions/reactions.type';\n\nexport type SendReactionOptions = {\n reactionChannelUrl: string;\n reaction: Reaction;\n participantId: string;\n};\n\nexport type ToggleReactionsOptions = {\n enable: boolean;\n locusUrl: string;\n requestingParticipantId: string;\n};\n"],"mappings":""}
@@ -111,7 +111,8 @@ MeetingUtil.joinMeeting = function (meeting, options) {
111
111
  pin: options.pin,
112
112
  moveToResource: options.moveToResource,
113
113
  preferTranscoding: !meeting.isMultistream,
114
- asResourceOccupant: options.asResourceOccupant
114
+ asResourceOccupant: options.asResourceOccupant,
115
+ breakoutsSupported: options.breakoutsSupported
115
116
  }).then(function (res) {
116
117
  _metrics.default.postEvent({
117
118
  event: _config.eventType.LOCUS_JOIN_RESPONSE,
@@ -127,6 +128,8 @@ MeetingUtil.joinMeeting = function (meeting, options) {
127
128
  });
128
129
  };
129
130
  MeetingUtil.cleanUp = function (meeting) {
131
+ meeting.breakouts.cleanUp();
132
+
130
133
  // make sure we send last metrics before we close the peerconnection
131
134
  var stopStatsAnalyzer = meeting.statsAnalyzer ? meeting.statsAnalyzer.stopAnalyzer() : _promise.default.resolve();
132
135
  return stopStatsAnalyzer.then(function () {
@@ -339,62 +342,6 @@ MeetingUtil.canUserLock = function (displayHints) {
339
342
  MeetingUtil.canUserUnlock = function (displayHints) {
340
343
  return displayHints.includes(_constants.DISPLAY_HINTS.LOCK_CONTROL_UNLOCK) && displayHints.includes(_constants.DISPLAY_HINTS.LOCK_STATUS_LOCKED);
341
344
  };
342
- MeetingUtil.canUserRecord = function (displayHints) {
343
- return displayHints.includes(_constants.DISPLAY_HINTS.RECORDING_CONTROL_START);
344
- };
345
- MeetingUtil.canUserPause = function (displayHints) {
346
- return displayHints.includes(_constants.DISPLAY_HINTS.RECORDING_CONTROL_PAUSE);
347
- };
348
- MeetingUtil.canUserResume = function (displayHints) {
349
- return displayHints.includes(_constants.DISPLAY_HINTS.RECORDING_CONTROL_RESUME);
350
- };
351
- MeetingUtil.canUserStop = function (displayHints) {
352
- return displayHints.includes(_constants.DISPLAY_HINTS.RECORDING_CONTROL_STOP);
353
- };
354
- MeetingUtil.startRecording = function (request, locusUrl, locusInfo) {
355
- var displayHints = MeetingUtil.getUserDisplayHintsFromLocusInfo(locusInfo);
356
- if (MeetingUtil.canUserRecord(displayHints)) {
357
- return request.recordMeeting({
358
- locusUrl: locusUrl,
359
- recording: true,
360
- paused: false
361
- });
362
- }
363
- return _promise.default.reject(new _permission.default('Start recording not allowed, due to moderator property.'));
364
- };
365
- MeetingUtil.pauseRecording = function (request, locusUrl, locusInfo) {
366
- var displayHints = MeetingUtil.getUserDisplayHintsFromLocusInfo(locusInfo);
367
- if (MeetingUtil.canUserPause(displayHints)) {
368
- return request.recordMeeting({
369
- locusUrl: locusUrl,
370
- recording: true,
371
- paused: true
372
- });
373
- }
374
- return _promise.default.reject(new _permission.default('Pause recording not allowed, due to moderator property.'));
375
- };
376
- MeetingUtil.resumeRecording = function (request, locusUrl, locusInfo) {
377
- var displayHints = MeetingUtil.getUserDisplayHintsFromLocusInfo(locusInfo);
378
- if (MeetingUtil.canUserResume(displayHints)) {
379
- return request.recordMeeting({
380
- locusUrl: locusUrl,
381
- recording: true,
382
- paused: false
383
- });
384
- }
385
- return _promise.default.reject(new _permission.default('Resume recording not allowed, due to moderator property.'));
386
- };
387
- MeetingUtil.stopRecording = function (request, locusUrl, locusInfo) {
388
- var displayHints = MeetingUtil.getUserDisplayHintsFromLocusInfo(locusInfo);
389
- if (MeetingUtil.canUserStop(displayHints)) {
390
- return request.recordMeeting({
391
- locusUrl: locusUrl,
392
- recording: false,
393
- paused: false
394
- });
395
- }
396
- return _promise.default.reject(new _permission.default('Stop recording not allowed, due to moderator property.'));
397
- };
398
345
  MeetingUtil.canUserRaiseHand = function (displayHints) {
399
346
  return displayHints.includes(_constants.DISPLAY_HINTS.RAISE_HAND);
400
347
  };
@@ -1 +1 @@
1
- {"version":3,"names":["MeetingUtil","parseLocusJoin","response","parsed","locus","body","mediaConnections","locusUrl","url","locusId","split","pop","selfId","self","id","forEach","mediaConnection","mediaId","remoteUpdateAudioVideo","audioMuted","videoMuted","meeting","reject","ParameterError","localMedias","Media","generateLocalMedias","Metrics","postEvent","event","eventType","MEDIA_REQUEST","meetingRequest","remoteAudioVideoToggle","deviceUrl","correlationId","preferTranscoding","isMultistream","then","MEDIA_RESPONSE","hasOwner","info","owner","isOwnerSelf","isPinOrGuest","err","errorCode","INTENT_TO_JOIN","includes","joinMeeting","options","LOCUS_JOIN_REQUEST","inviteeAddress","meetingJoinUrl","sipUri","meetingNumber","roapMessage","permissionToken","resourceId","moderator","pin","moveToResource","asResourceOccupant","res","LOCUS_JOIN_RESPONSE","data","trigger","LOCI_UPDATE","trackingId","headers","trackingid","cleanUp","stopStatsAnalyzer","statsAnalyzer","stopAnalyzer","resolve","closeLocalStream","closeLocalShare","closeRemoteTracks","closePeerConnections","unsetLocalVideoTrack","unsetLocalShareTrack","unsetRemoteTracks","unsetPeerConnections","reconnectionManager","stopKeepAlive","updateLLMConnection","disconnectPhoneAudio","phoneUrl","meetingState","FULL_STATE","INACTIVE","MeetingNotActiveError","locusInfo","onFullLocus","catch","LoggerProxy","logger","error","leaveMeeting","isUserInLeftState","UserNotJoinedError","defaultOptions","leaveOptions","moveMeeting","declineMeeting","reason","parsedLocus","state","_LEFT_","isUserInIdleState","_IDLE_","isUserInJoinedState","_JOINED_","isMediaEstablished","currentMediaStatus","audio","video","share","joinMeetingOptions","requiredCaptcha","CaptchaError","passwordStatus","PASSWORD_STATUS","REQUIRED","PasswordError","PIN_COLLECTED","setLocus","PIN_PROMPT","IntentToJoinError","JoinMeetingError","validateOptions","sendVideo","sendAudio","sendShare","localStream","localShare","getTrack","videoTrack","audioTrack","stream","audioTracks","videoTracks","getAudioTracks","getVideoTracks","length","getModeratorFromLocusInfo","getPolicyFromLocusInfo","policy","getUserDisplayHintsFromLocusInfo","userDisplayHints","canInviteNewParticipants","displayHints","DISPLAY_HINTS","ADD_GUEST","canAdmitParticipant","ROSTER_WAITING_TO_JOIN","canUserLock","LOCK_CONTROL_LOCK","LOCK_STATUS_UNLOCKED","canUserUnlock","LOCK_CONTROL_UNLOCK","LOCK_STATUS_LOCKED","canUserRecord","RECORDING_CONTROL_START","canUserPause","RECORDING_CONTROL_PAUSE","canUserResume","RECORDING_CONTROL_RESUME","canUserStop","RECORDING_CONTROL_STOP","startRecording","request","recordMeeting","recording","paused","PermissionError","pauseRecording","resumeRecording","stopRecording","canUserRaiseHand","RAISE_HAND","canUserLowerAllHands","LOWER_ALL_HANDS","canUserLowerSomeoneElsesHand","LOWER_SOMEONE_ELSES_HAND","bothLeaveAndEndMeetingAvailable","LEAVE_TRANSFER_HOST_END_MEETING","LEAVE_END_MEETING","lockMeeting","actions","canLock","lock","unlockMeeting","canUnlock","handleAudioLogging","LOG_HEADER","settings","getSettings","deviceId","log","handleVideoLogging","handleDeviceLogging","devices","device","endMeetingForAll","endOptions","canEnableClosedCaption","CAPTION_START","canStartTranscribing","TRANSCRIPTION_CONTROL_START","canStopTranscribing","TRANSCRIPTION_CONTROL_STOP","isClosedCaptionActive","CAPTION_STATUS_ACTIVE","isWebexAssistantActive","WEBEX_ASSISTANT_STATUS_ACTIVE","canViewCaptionPanel","ENABLE_CAPTION_PANEL","isRealTimeTranslationEnabled","DISPLAY_REAL_TIME_TRANSLATION","canSelectSpokenLanguages","DISPLAY_NON_ENGLISH_ASR","waitingForOthersToJoin","WAITING_FOR_OTHERS","canEnableReactions","originalValue","ENABLE_REACTIONS","DISABLE_REACTIONS","canSendReactions","REACTIONS_ACTIVE","REACTIONS_INACTIVE"],"sources":["util.ts"],"sourcesContent":["import {isEmpty} from 'lodash';\n\nimport {MeetingNotActiveError, UserNotJoinedError} from '../common/errors/webex-errors';\nimport Metrics from '../metrics';\nimport {eventType, trigger} from '../metrics/config';\nimport Media from '../media';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n INTENT_TO_JOIN,\n _LEFT_,\n _IDLE_,\n _JOINED_,\n PASSWORD_STATUS,\n DISPLAY_HINTS,\n FULL_STATE,\n} from '../constants';\nimport IntentToJoinError from '../common/errors/intent-to-join';\nimport JoinMeetingError from '../common/errors/join-meeting';\nimport ParameterError from '../common/errors/parameter';\nimport PermissionError from '../common/errors/permission';\nimport PasswordError from '../common/errors/password-error';\nimport CaptchaError from '../common/errors/captcha-error';\n\nconst MeetingUtil: any = {};\n\nMeetingUtil.parseLocusJoin = (response) => {\n const parsed: any = {};\n\n // First todo: add check for existance\n parsed.locus = response.body.locus;\n parsed.mediaConnections = response.body.mediaConnections;\n parsed.locusUrl = parsed.locus.url;\n parsed.locusId = parsed.locus.url.split('/').pop();\n parsed.selfId = parsed.locus.self.id;\n\n // we need mediaId before making roap calls\n parsed.mediaConnections.forEach((mediaConnection) => {\n if (mediaConnection.mediaId) {\n parsed.mediaId = mediaConnection.mediaId;\n }\n });\n\n return parsed;\n};\n\nMeetingUtil.remoteUpdateAudioVideo = (audioMuted, videoMuted, meeting) => {\n if (!meeting) {\n return Promise.reject(new ParameterError('You need a meeting object.'));\n }\n const localMedias = Media.generateLocalMedias(meeting.mediaId, audioMuted, videoMuted);\n\n if (isEmpty(localMedias)) {\n return Promise.reject(\n new ParameterError('You need a media id on the meeting to change remote audio.')\n );\n }\n\n Metrics.postEvent({event: eventType.MEDIA_REQUEST, meeting});\n\n return meeting.meetingRequest\n .remoteAudioVideoToggle({\n locusUrl: meeting.locusUrl,\n selfId: meeting.selfId,\n localMedias,\n deviceUrl: meeting.deviceUrl,\n correlationId: meeting.correlationId,\n preferTranscoding: !meeting.isMultistream,\n })\n .then((response) => {\n Metrics.postEvent({event: eventType.MEDIA_RESPONSE, meeting});\n\n return response.body.locus;\n });\n};\n\nMeetingUtil.hasOwner = (info) => info && info.owner;\n\nMeetingUtil.isOwnerSelf = (owner, selfId) => owner === selfId;\n\nMeetingUtil.isPinOrGuest = (err) =>\n err?.body?.errorCode && INTENT_TO_JOIN.includes(err.body.errorCode);\n\nMeetingUtil.joinMeeting = (meeting, options) => {\n if (!meeting) {\n return Promise.reject(new ParameterError('You need a meeting object.'));\n }\n\n Metrics.postEvent({event: eventType.LOCUS_JOIN_REQUEST, meeting});\n\n // eslint-disable-next-line no-warning-comments\n // TODO: check if the meeting is in JOINING state\n // if Joining state termintate the request as user might click multiple times\n return meeting.meetingRequest\n .joinMeeting({\n inviteeAddress: meeting.meetingJoinUrl || meeting.sipUri,\n meetingNumber: meeting.meetingNumber,\n deviceUrl: meeting.deviceUrl,\n locusUrl: meeting.locusUrl,\n correlationId: meeting.correlationId,\n roapMessage: options.roapMessage,\n permissionToken: meeting.permissionToken,\n resourceId: options.resourceId || null,\n moderator: options.moderator,\n pin: options.pin,\n moveToResource: options.moveToResource,\n preferTranscoding: !meeting.isMultistream,\n asResourceOccupant: options.asResourceOccupant,\n })\n .then((res) => {\n Metrics.postEvent({\n event: eventType.LOCUS_JOIN_RESPONSE,\n meeting,\n data: {\n trigger: trigger.LOCI_UPDATE,\n locus: res.body.locus,\n mediaConnections: res.body.mediaConnections,\n trackingId: res.headers.trackingid,\n },\n });\n\n return MeetingUtil.parseLocusJoin(res);\n });\n};\n\nMeetingUtil.cleanUp = (meeting) => {\n // make sure we send last metrics before we close the peerconnection\n const stopStatsAnalyzer = meeting.statsAnalyzer\n ? meeting.statsAnalyzer.stopAnalyzer()\n : Promise.resolve();\n\n return stopStatsAnalyzer\n .then(() => meeting.closeLocalStream())\n .then(() => meeting.closeLocalShare())\n .then(() => meeting.closeRemoteTracks())\n .then(() => meeting.closePeerConnections())\n .then(() => {\n meeting.unsetLocalVideoTrack();\n meeting.unsetLocalShareTrack();\n meeting.unsetRemoteTracks();\n meeting.unsetPeerConnections();\n meeting.reconnectionManager.cleanUp();\n })\n .then(() => meeting.stopKeepAlive())\n .then(() => meeting.updateLLMConnection());\n};\n\nMeetingUtil.disconnectPhoneAudio = (meeting, phoneUrl) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n return Promise.reject(new MeetingNotActiveError());\n }\n\n const options = {\n locusUrl: meeting.locusUrl,\n selfId: meeting.selfId,\n correlationId: meeting.correlationId,\n phoneUrl,\n };\n\n return meeting.meetingRequest\n .disconnectPhoneAudio(options)\n .then((response) => {\n if (response?.body?.locus) {\n meeting.locusInfo.onFullLocus(response.body.locus);\n }\n })\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:util#disconnectPhoneAudio --> An error occured while disconnecting phone audio in meeting ${meeting.id}, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n};\n\n// by default will leave on meeting's resourceId\n// if you explicity want it not to leave on resource id, pass\n// {resourceId: null}\n// TODO: chris, you can modify this however you want\nMeetingUtil.leaveMeeting = (meeting, options: any = {}) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n // TODO: clean up if the meeting is already inactive\n return Promise.reject(new MeetingNotActiveError());\n }\n\n if (MeetingUtil.isUserInLeftState(meeting.locusInfo)) {\n return Promise.reject(new UserNotJoinedError());\n }\n\n const defaultOptions = {\n locusUrl: meeting.locusUrl,\n selfId: meeting.selfId,\n correlationId: meeting.correlationId,\n resourceId: meeting.resourceId,\n deviceUrl: meeting.deviceUrl,\n };\n\n const leaveOptions = {...defaultOptions, ...options};\n\n return meeting.meetingRequest\n .leaveMeeting(leaveOptions)\n .then((response) => {\n if (response && response.body && response.body.locus) {\n // && !options.moveMeeting) {\n meeting.locusInfo.onFullLocus(response.body.locus);\n }\n\n return Promise.resolve();\n })\n .then(() => {\n if (options.moveMeeting) {\n return Promise.resolve();\n }\n\n return MeetingUtil.cleanUp(meeting);\n })\n .catch((err) => {\n // TODO: If the meeting state comes as LEFT or INACTIVE as response then\n // 1) on leave clean up the meeting or simply do a sync on the meeting\n // 2) If the error says meeting is inactive then destroy the meeting object\n LoggerProxy.logger.error(\n `Meeting:util#leaveMeeting --> An error occured while trying to leave meeting with an id of ${meeting.id}, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n};\nMeetingUtil.declineMeeting = (meeting, reason) =>\n meeting.meetingRequest.declineMeeting({\n locusUrl: meeting.locusUrl,\n deviceUrl: meeting.deviceUrl,\n reason,\n });\n\nMeetingUtil.isUserInLeftState = (locusInfo) => locusInfo.parsedLocus?.self?.state === _LEFT_;\n\nMeetingUtil.isUserInIdleState = (locusInfo) => locusInfo.parsedLocus?.self?.state === _IDLE_;\n\nMeetingUtil.isUserInJoinedState = (locusInfo) => locusInfo.parsedLocus?.self?.state === _JOINED_;\n\nMeetingUtil.isMediaEstablished = (currentMediaStatus) =>\n currentMediaStatus &&\n (currentMediaStatus.audio || currentMediaStatus.video || currentMediaStatus.share);\n\nMeetingUtil.joinMeetingOptions = (meeting, options: any = {}) => {\n meeting.resourceId = meeting.resourceId || options.resourceId;\n\n if (meeting.requiredCaptcha) {\n return Promise.reject(new CaptchaError());\n }\n if (meeting.passwordStatus === PASSWORD_STATUS.REQUIRED) {\n return Promise.reject(new PasswordError());\n }\n\n if (options.pin) {\n Metrics.postEvent({\n event: eventType.PIN_COLLECTED,\n meeting,\n });\n }\n\n // normal join meeting, scenario A, D\n return MeetingUtil.joinMeeting(meeting, options)\n .then((response) => {\n meeting.setLocus(response);\n\n return Promise.resolve(response);\n })\n .catch((err) => {\n // joining a claimed PMR that is not my own, scenario B\n if (MeetingUtil.isPinOrGuest(err)) {\n Metrics.postEvent({\n event: eventType.PIN_PROMPT,\n meeting,\n });\n\n // request host pin or non host for unclaimed PMR, start of Scenario C\n // see https://sqbu-github.cisco.com/WebExSquared/locus/wiki/Locus-Lobby-and--IVR-Feature\n return Promise.reject(new IntentToJoinError('Error Joining Meeting', err));\n }\n LoggerProxy.logger.error('Meeting:util#joinMeetingOptions --> Error joining the call, ', err);\n\n return Promise.reject(new JoinMeetingError(options, 'Error Joining Meeting', err));\n });\n};\n\nMeetingUtil.validateOptions = (options) => {\n const {sendVideo, sendAudio, sendShare, localStream, localShare} = options;\n\n if (sendVideo && !MeetingUtil.getTrack(localStream).videoTrack) {\n return Promise.reject(new ParameterError('please pass valid video streams'));\n }\n\n if (sendAudio && !MeetingUtil.getTrack(localStream).audioTrack) {\n return Promise.reject(new ParameterError('please pass valid audio streams'));\n }\n\n if (sendShare && !MeetingUtil.getTrack(localShare).videoTrack) {\n return Promise.reject(new ParameterError('please pass valid share streams'));\n }\n\n return Promise.resolve();\n};\n\nMeetingUtil.getTrack = (stream) => {\n let audioTrack = null;\n let videoTrack = null;\n let audioTracks = null;\n let videoTracks = null;\n\n if (!stream) {\n return {audioTrack: null, videoTrack: null};\n }\n if (stream.getAudioTracks) {\n audioTracks = stream.getAudioTracks();\n }\n if (stream.getVideoTracks) {\n videoTracks = stream.getVideoTracks();\n }\n\n if (audioTracks && audioTracks.length > 0) {\n [audioTrack] = audioTracks;\n }\n\n if (videoTracks && videoTracks.length > 0) {\n [videoTrack] = videoTracks;\n }\n\n return {audioTrack, videoTrack};\n};\n\nMeetingUtil.getModeratorFromLocusInfo = (locusInfo) =>\n locusInfo &&\n locusInfo.parsedLocus &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info.moderator;\n\nMeetingUtil.getPolicyFromLocusInfo = (locusInfo) =>\n locusInfo &&\n locusInfo.parsedLocus &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info.policy;\n\nMeetingUtil.getUserDisplayHintsFromLocusInfo = (locusInfo) =>\n locusInfo?.parsedLocus?.info?.userDisplayHints || [];\n\nMeetingUtil.canInviteNewParticipants = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.ADD_GUEST);\n\nMeetingUtil.canAdmitParticipant = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.ROSTER_WAITING_TO_JOIN);\n\nMeetingUtil.canUserLock = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_LOCK) &&\n displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_UNLOCKED);\n\nMeetingUtil.canUserUnlock = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_UNLOCK) &&\n displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_LOCKED);\n\nMeetingUtil.canUserRecord = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_START);\n\nMeetingUtil.canUserPause = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_PAUSE);\n\nMeetingUtil.canUserResume = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_RESUME);\n\nMeetingUtil.canUserStop = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_STOP);\n\nMeetingUtil.startRecording = (request, locusUrl, locusInfo) => {\n const displayHints = MeetingUtil.getUserDisplayHintsFromLocusInfo(locusInfo);\n\n if (MeetingUtil.canUserRecord(displayHints)) {\n return request.recordMeeting({locusUrl, recording: true, paused: false});\n }\n\n return Promise.reject(\n new PermissionError('Start recording not allowed, due to moderator property.')\n );\n};\n\nMeetingUtil.pauseRecording = (request, locusUrl, locusInfo) => {\n const displayHints = MeetingUtil.getUserDisplayHintsFromLocusInfo(locusInfo);\n\n if (MeetingUtil.canUserPause(displayHints)) {\n return request.recordMeeting({locusUrl, recording: true, paused: true});\n }\n\n return Promise.reject(\n new PermissionError('Pause recording not allowed, due to moderator property.')\n );\n};\n\nMeetingUtil.resumeRecording = (request, locusUrl, locusInfo) => {\n const displayHints = MeetingUtil.getUserDisplayHintsFromLocusInfo(locusInfo);\n\n if (MeetingUtil.canUserResume(displayHints)) {\n return request.recordMeeting({locusUrl, recording: true, paused: false});\n }\n\n return Promise.reject(\n new PermissionError('Resume recording not allowed, due to moderator property.')\n );\n};\n\nMeetingUtil.stopRecording = (request, locusUrl, locusInfo) => {\n const displayHints = MeetingUtil.getUserDisplayHintsFromLocusInfo(locusInfo);\n\n if (MeetingUtil.canUserStop(displayHints)) {\n return request.recordMeeting({locusUrl, recording: false, paused: false});\n }\n\n return Promise.reject(\n new PermissionError('Stop recording not allowed, due to moderator property.')\n );\n};\n\nMeetingUtil.canUserRaiseHand = (displayHints) => displayHints.includes(DISPLAY_HINTS.RAISE_HAND);\n\nMeetingUtil.canUserLowerAllHands = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOWER_ALL_HANDS);\n\nMeetingUtil.canUserLowerSomeoneElsesHand = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOWER_SOMEONE_ELSES_HAND);\n\nMeetingUtil.bothLeaveAndEndMeetingAvailable = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LEAVE_TRANSFER_HOST_END_MEETING) ||\n displayHints.includes(DISPLAY_HINTS.LEAVE_END_MEETING);\n\nMeetingUtil.lockMeeting = (actions, request, locusUrl) => {\n if (actions && actions.canLock) {\n return request.lockMeeting({locusUrl, lock: true});\n }\n\n return Promise.reject(new PermissionError('Lock not allowed, due to joined property.'));\n};\n\nMeetingUtil.unlockMeeting = (actions, request, locusUrl) => {\n if (actions && actions.canUnlock) {\n return request.lockMeeting({locusUrl, lock: false});\n }\n\n return Promise.reject(new PermissionError('Unlock not allowed, due to joined property.'));\n};\n\nMeetingUtil.handleAudioLogging = (audioTrack) => {\n const LOG_HEADER = 'MeetingUtil#handleAudioLogging -->';\n\n if (audioTrack) {\n const settings = audioTrack.getSettings();\n const {deviceId} = settings;\n\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings =', JSON.stringify(settings));\n }\n};\n\nMeetingUtil.handleVideoLogging = (videoTrack) => {\n const LOG_HEADER = 'MeetingUtil#handleVideoLogging -->';\n\n if (videoTrack) {\n const settings = videoTrack.getSettings();\n const {deviceId} = settings;\n\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings =', JSON.stringify(settings));\n }\n};\n\nMeetingUtil.handleDeviceLogging = (devices = []) => {\n const LOG_HEADER = 'MeetingUtil#handleDeviceLogging -->';\n\n devices.forEach((device) => {\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${device.deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings', JSON.stringify(device));\n });\n};\n\nMeetingUtil.endMeetingForAll = (meeting) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n return Promise.reject(new MeetingNotActiveError());\n }\n\n const endOptions = {\n locusUrl: meeting.locusUrl,\n };\n\n return meeting.meetingRequest\n .endMeetingForAll(endOptions)\n .then((response) => {\n if (response && response.body && response.body.locus) {\n meeting.locusInfo.onFullLocus(response.body.locus);\n }\n\n return Promise.resolve();\n })\n .then(() => MeetingUtil.cleanUp(meeting))\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:util#endMeetingForAll An error occured while trying to end meeting for all with an id of ${meeting.id}, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n};\n\nMeetingUtil.canEnableClosedCaption = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.CAPTION_START);\n\nMeetingUtil.canStartTranscribing = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_START);\n\nMeetingUtil.canStopTranscribing = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_STOP);\n\nMeetingUtil.isClosedCaptionActive = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.CAPTION_STATUS_ACTIVE);\n\nMeetingUtil.isWebexAssistantActive = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.WEBEX_ASSISTANT_STATUS_ACTIVE);\n\nMeetingUtil.canViewCaptionPanel = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.ENABLE_CAPTION_PANEL);\n\nMeetingUtil.isRealTimeTranslationEnabled = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.DISPLAY_REAL_TIME_TRANSLATION);\n\nMeetingUtil.canSelectSpokenLanguages = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.DISPLAY_NON_ENGLISH_ASR);\n\nMeetingUtil.waitingForOthersToJoin = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.WAITING_FOR_OTHERS);\n\nMeetingUtil.canEnableReactions = (originalValue, displayHints) => {\n if (displayHints.includes(DISPLAY_HINTS.ENABLE_REACTIONS)) {\n return true;\n }\n if (displayHints.includes(DISPLAY_HINTS.DISABLE_REACTIONS)) {\n return false;\n }\n\n return originalValue;\n};\n\nMeetingUtil.canSendReactions = (originalValue, displayHints) => {\n if (displayHints.includes(DISPLAY_HINTS.REACTIONS_ACTIVE)) {\n return true;\n }\n if (displayHints.includes(DISPLAY_HINTS.REACTIONS_INACTIVE)) {\n return false;\n }\n\n return originalValue;\n};\n\nexport default MeetingUtil;\n"],"mappings":"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"}
1
+ {"version":3,"names":["MeetingUtil","parseLocusJoin","response","parsed","locus","body","mediaConnections","locusUrl","url","locusId","split","pop","selfId","self","id","forEach","mediaConnection","mediaId","remoteUpdateAudioVideo","audioMuted","videoMuted","meeting","reject","ParameterError","localMedias","Media","generateLocalMedias","Metrics","postEvent","event","eventType","MEDIA_REQUEST","meetingRequest","remoteAudioVideoToggle","deviceUrl","correlationId","preferTranscoding","isMultistream","then","MEDIA_RESPONSE","hasOwner","info","owner","isOwnerSelf","isPinOrGuest","err","errorCode","INTENT_TO_JOIN","includes","joinMeeting","options","LOCUS_JOIN_REQUEST","inviteeAddress","meetingJoinUrl","sipUri","meetingNumber","roapMessage","permissionToken","resourceId","moderator","pin","moveToResource","asResourceOccupant","breakoutsSupported","res","LOCUS_JOIN_RESPONSE","data","trigger","LOCI_UPDATE","trackingId","headers","trackingid","cleanUp","breakouts","stopStatsAnalyzer","statsAnalyzer","stopAnalyzer","resolve","closeLocalStream","closeLocalShare","closeRemoteTracks","closePeerConnections","unsetLocalVideoTrack","unsetLocalShareTrack","unsetRemoteTracks","unsetPeerConnections","reconnectionManager","stopKeepAlive","updateLLMConnection","disconnectPhoneAudio","phoneUrl","meetingState","FULL_STATE","INACTIVE","MeetingNotActiveError","locusInfo","onFullLocus","catch","LoggerProxy","logger","error","leaveMeeting","isUserInLeftState","UserNotJoinedError","defaultOptions","leaveOptions","moveMeeting","declineMeeting","reason","parsedLocus","state","_LEFT_","isUserInIdleState","_IDLE_","isUserInJoinedState","_JOINED_","isMediaEstablished","currentMediaStatus","audio","video","share","joinMeetingOptions","requiredCaptcha","CaptchaError","passwordStatus","PASSWORD_STATUS","REQUIRED","PasswordError","PIN_COLLECTED","setLocus","PIN_PROMPT","IntentToJoinError","JoinMeetingError","validateOptions","sendVideo","sendAudio","sendShare","localStream","localShare","getTrack","videoTrack","audioTrack","stream","audioTracks","videoTracks","getAudioTracks","getVideoTracks","length","getModeratorFromLocusInfo","getPolicyFromLocusInfo","policy","getUserDisplayHintsFromLocusInfo","userDisplayHints","canInviteNewParticipants","displayHints","DISPLAY_HINTS","ADD_GUEST","canAdmitParticipant","ROSTER_WAITING_TO_JOIN","canUserLock","LOCK_CONTROL_LOCK","LOCK_STATUS_UNLOCKED","canUserUnlock","LOCK_CONTROL_UNLOCK","LOCK_STATUS_LOCKED","canUserRaiseHand","RAISE_HAND","canUserLowerAllHands","LOWER_ALL_HANDS","canUserLowerSomeoneElsesHand","LOWER_SOMEONE_ELSES_HAND","bothLeaveAndEndMeetingAvailable","LEAVE_TRANSFER_HOST_END_MEETING","LEAVE_END_MEETING","lockMeeting","actions","request","canLock","lock","PermissionError","unlockMeeting","canUnlock","handleAudioLogging","LOG_HEADER","settings","getSettings","deviceId","log","handleVideoLogging","handleDeviceLogging","devices","device","endMeetingForAll","endOptions","canEnableClosedCaption","CAPTION_START","canStartTranscribing","TRANSCRIPTION_CONTROL_START","canStopTranscribing","TRANSCRIPTION_CONTROL_STOP","isClosedCaptionActive","CAPTION_STATUS_ACTIVE","isWebexAssistantActive","WEBEX_ASSISTANT_STATUS_ACTIVE","canViewCaptionPanel","ENABLE_CAPTION_PANEL","isRealTimeTranslationEnabled","DISPLAY_REAL_TIME_TRANSLATION","canSelectSpokenLanguages","DISPLAY_NON_ENGLISH_ASR","waitingForOthersToJoin","WAITING_FOR_OTHERS","canEnableReactions","originalValue","ENABLE_REACTIONS","DISABLE_REACTIONS","canSendReactions","REACTIONS_ACTIVE","REACTIONS_INACTIVE"],"sources":["util.ts"],"sourcesContent":["import {isEmpty} from 'lodash';\n\nimport {MeetingNotActiveError, UserNotJoinedError} from '../common/errors/webex-errors';\nimport Metrics from '../metrics';\nimport {eventType, trigger} from '../metrics/config';\nimport Media from '../media';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n INTENT_TO_JOIN,\n _LEFT_,\n _IDLE_,\n _JOINED_,\n PASSWORD_STATUS,\n DISPLAY_HINTS,\n FULL_STATE,\n} from '../constants';\nimport IntentToJoinError from '../common/errors/intent-to-join';\nimport JoinMeetingError from '../common/errors/join-meeting';\nimport ParameterError from '../common/errors/parameter';\nimport PermissionError from '../common/errors/permission';\nimport PasswordError from '../common/errors/password-error';\nimport CaptchaError from '../common/errors/captcha-error';\n\nconst MeetingUtil: any = {};\n\nMeetingUtil.parseLocusJoin = (response) => {\n const parsed: any = {};\n\n // First todo: add check for existance\n parsed.locus = response.body.locus;\n parsed.mediaConnections = response.body.mediaConnections;\n parsed.locusUrl = parsed.locus.url;\n parsed.locusId = parsed.locus.url.split('/').pop();\n parsed.selfId = parsed.locus.self.id;\n\n // we need mediaId before making roap calls\n parsed.mediaConnections.forEach((mediaConnection) => {\n if (mediaConnection.mediaId) {\n parsed.mediaId = mediaConnection.mediaId;\n }\n });\n\n return parsed;\n};\n\nMeetingUtil.remoteUpdateAudioVideo = (audioMuted, videoMuted, meeting) => {\n if (!meeting) {\n return Promise.reject(new ParameterError('You need a meeting object.'));\n }\n const localMedias = Media.generateLocalMedias(meeting.mediaId, audioMuted, videoMuted);\n\n if (isEmpty(localMedias)) {\n return Promise.reject(\n new ParameterError('You need a media id on the meeting to change remote audio.')\n );\n }\n\n Metrics.postEvent({event: eventType.MEDIA_REQUEST, meeting});\n\n return meeting.meetingRequest\n .remoteAudioVideoToggle({\n locusUrl: meeting.locusUrl,\n selfId: meeting.selfId,\n localMedias,\n deviceUrl: meeting.deviceUrl,\n correlationId: meeting.correlationId,\n preferTranscoding: !meeting.isMultistream,\n })\n .then((response) => {\n Metrics.postEvent({event: eventType.MEDIA_RESPONSE, meeting});\n\n return response.body.locus;\n });\n};\n\nMeetingUtil.hasOwner = (info) => info && info.owner;\n\nMeetingUtil.isOwnerSelf = (owner, selfId) => owner === selfId;\n\nMeetingUtil.isPinOrGuest = (err) =>\n err?.body?.errorCode && INTENT_TO_JOIN.includes(err.body.errorCode);\n\nMeetingUtil.joinMeeting = (meeting, options) => {\n if (!meeting) {\n return Promise.reject(new ParameterError('You need a meeting object.'));\n }\n\n Metrics.postEvent({event: eventType.LOCUS_JOIN_REQUEST, meeting});\n\n // eslint-disable-next-line no-warning-comments\n // TODO: check if the meeting is in JOINING state\n // if Joining state termintate the request as user might click multiple times\n return meeting.meetingRequest\n .joinMeeting({\n inviteeAddress: meeting.meetingJoinUrl || meeting.sipUri,\n meetingNumber: meeting.meetingNumber,\n deviceUrl: meeting.deviceUrl,\n locusUrl: meeting.locusUrl,\n correlationId: meeting.correlationId,\n roapMessage: options.roapMessage,\n permissionToken: meeting.permissionToken,\n resourceId: options.resourceId || null,\n moderator: options.moderator,\n pin: options.pin,\n moveToResource: options.moveToResource,\n preferTranscoding: !meeting.isMultistream,\n asResourceOccupant: options.asResourceOccupant,\n breakoutsSupported: options.breakoutsSupported,\n })\n .then((res) => {\n Metrics.postEvent({\n event: eventType.LOCUS_JOIN_RESPONSE,\n meeting,\n data: {\n trigger: trigger.LOCI_UPDATE,\n locus: res.body.locus,\n mediaConnections: res.body.mediaConnections,\n trackingId: res.headers.trackingid,\n },\n });\n\n return MeetingUtil.parseLocusJoin(res);\n });\n};\n\nMeetingUtil.cleanUp = (meeting) => {\n meeting.breakouts.cleanUp();\n\n // make sure we send last metrics before we close the peerconnection\n const stopStatsAnalyzer = meeting.statsAnalyzer\n ? meeting.statsAnalyzer.stopAnalyzer()\n : Promise.resolve();\n\n return stopStatsAnalyzer\n .then(() => meeting.closeLocalStream())\n .then(() => meeting.closeLocalShare())\n .then(() => meeting.closeRemoteTracks())\n .then(() => meeting.closePeerConnections())\n .then(() => {\n meeting.unsetLocalVideoTrack();\n meeting.unsetLocalShareTrack();\n meeting.unsetRemoteTracks();\n meeting.unsetPeerConnections();\n meeting.reconnectionManager.cleanUp();\n })\n .then(() => meeting.stopKeepAlive())\n .then(() => meeting.updateLLMConnection());\n};\n\nMeetingUtil.disconnectPhoneAudio = (meeting, phoneUrl) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n return Promise.reject(new MeetingNotActiveError());\n }\n\n const options = {\n locusUrl: meeting.locusUrl,\n selfId: meeting.selfId,\n correlationId: meeting.correlationId,\n phoneUrl,\n };\n\n return meeting.meetingRequest\n .disconnectPhoneAudio(options)\n .then((response) => {\n if (response?.body?.locus) {\n meeting.locusInfo.onFullLocus(response.body.locus);\n }\n })\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:util#disconnectPhoneAudio --> An error occured while disconnecting phone audio in meeting ${meeting.id}, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n};\n\n// by default will leave on meeting's resourceId\n// if you explicity want it not to leave on resource id, pass\n// {resourceId: null}\n// TODO: chris, you can modify this however you want\nMeetingUtil.leaveMeeting = (meeting, options: any = {}) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n // TODO: clean up if the meeting is already inactive\n return Promise.reject(new MeetingNotActiveError());\n }\n\n if (MeetingUtil.isUserInLeftState(meeting.locusInfo)) {\n return Promise.reject(new UserNotJoinedError());\n }\n\n const defaultOptions = {\n locusUrl: meeting.locusUrl,\n selfId: meeting.selfId,\n correlationId: meeting.correlationId,\n resourceId: meeting.resourceId,\n deviceUrl: meeting.deviceUrl,\n };\n\n const leaveOptions = {...defaultOptions, ...options};\n\n return meeting.meetingRequest\n .leaveMeeting(leaveOptions)\n .then((response) => {\n if (response && response.body && response.body.locus) {\n // && !options.moveMeeting) {\n meeting.locusInfo.onFullLocus(response.body.locus);\n }\n\n return Promise.resolve();\n })\n .then(() => {\n if (options.moveMeeting) {\n return Promise.resolve();\n }\n\n return MeetingUtil.cleanUp(meeting);\n })\n .catch((err) => {\n // TODO: If the meeting state comes as LEFT or INACTIVE as response then\n // 1) on leave clean up the meeting or simply do a sync on the meeting\n // 2) If the error says meeting is inactive then destroy the meeting object\n LoggerProxy.logger.error(\n `Meeting:util#leaveMeeting --> An error occured while trying to leave meeting with an id of ${meeting.id}, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n};\nMeetingUtil.declineMeeting = (meeting, reason) =>\n meeting.meetingRequest.declineMeeting({\n locusUrl: meeting.locusUrl,\n deviceUrl: meeting.deviceUrl,\n reason,\n });\n\nMeetingUtil.isUserInLeftState = (locusInfo) => locusInfo.parsedLocus?.self?.state === _LEFT_;\n\nMeetingUtil.isUserInIdleState = (locusInfo) => locusInfo.parsedLocus?.self?.state === _IDLE_;\n\nMeetingUtil.isUserInJoinedState = (locusInfo) => locusInfo.parsedLocus?.self?.state === _JOINED_;\n\nMeetingUtil.isMediaEstablished = (currentMediaStatus) =>\n currentMediaStatus &&\n (currentMediaStatus.audio || currentMediaStatus.video || currentMediaStatus.share);\n\nMeetingUtil.joinMeetingOptions = (meeting, options: any = {}) => {\n meeting.resourceId = meeting.resourceId || options.resourceId;\n\n if (meeting.requiredCaptcha) {\n return Promise.reject(new CaptchaError());\n }\n if (meeting.passwordStatus === PASSWORD_STATUS.REQUIRED) {\n return Promise.reject(new PasswordError());\n }\n\n if (options.pin) {\n Metrics.postEvent({\n event: eventType.PIN_COLLECTED,\n meeting,\n });\n }\n\n // normal join meeting, scenario A, D\n return MeetingUtil.joinMeeting(meeting, options)\n .then((response) => {\n meeting.setLocus(response);\n\n return Promise.resolve(response);\n })\n .catch((err) => {\n // joining a claimed PMR that is not my own, scenario B\n if (MeetingUtil.isPinOrGuest(err)) {\n Metrics.postEvent({\n event: eventType.PIN_PROMPT,\n meeting,\n });\n\n // request host pin or non host for unclaimed PMR, start of Scenario C\n // see https://sqbu-github.cisco.com/WebExSquared/locus/wiki/Locus-Lobby-and--IVR-Feature\n return Promise.reject(new IntentToJoinError('Error Joining Meeting', err));\n }\n LoggerProxy.logger.error('Meeting:util#joinMeetingOptions --> Error joining the call, ', err);\n\n return Promise.reject(new JoinMeetingError(options, 'Error Joining Meeting', err));\n });\n};\n\nMeetingUtil.validateOptions = (options) => {\n const {sendVideo, sendAudio, sendShare, localStream, localShare} = options;\n\n if (sendVideo && !MeetingUtil.getTrack(localStream).videoTrack) {\n return Promise.reject(new ParameterError('please pass valid video streams'));\n }\n\n if (sendAudio && !MeetingUtil.getTrack(localStream).audioTrack) {\n return Promise.reject(new ParameterError('please pass valid audio streams'));\n }\n\n if (sendShare && !MeetingUtil.getTrack(localShare).videoTrack) {\n return Promise.reject(new ParameterError('please pass valid share streams'));\n }\n\n return Promise.resolve();\n};\n\nMeetingUtil.getTrack = (stream) => {\n let audioTrack = null;\n let videoTrack = null;\n let audioTracks = null;\n let videoTracks = null;\n\n if (!stream) {\n return {audioTrack: null, videoTrack: null};\n }\n if (stream.getAudioTracks) {\n audioTracks = stream.getAudioTracks();\n }\n if (stream.getVideoTracks) {\n videoTracks = stream.getVideoTracks();\n }\n\n if (audioTracks && audioTracks.length > 0) {\n [audioTrack] = audioTracks;\n }\n\n if (videoTracks && videoTracks.length > 0) {\n [videoTrack] = videoTracks;\n }\n\n return {audioTrack, videoTrack};\n};\n\nMeetingUtil.getModeratorFromLocusInfo = (locusInfo) =>\n locusInfo &&\n locusInfo.parsedLocus &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info.moderator;\n\nMeetingUtil.getPolicyFromLocusInfo = (locusInfo) =>\n locusInfo &&\n locusInfo.parsedLocus &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info.policy;\n\nMeetingUtil.getUserDisplayHintsFromLocusInfo = (locusInfo) =>\n locusInfo?.parsedLocus?.info?.userDisplayHints || [];\n\nMeetingUtil.canInviteNewParticipants = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.ADD_GUEST);\n\nMeetingUtil.canAdmitParticipant = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.ROSTER_WAITING_TO_JOIN);\n\nMeetingUtil.canUserLock = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_LOCK) &&\n displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_UNLOCKED);\n\nMeetingUtil.canUserUnlock = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_UNLOCK) &&\n displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_LOCKED);\n\nMeetingUtil.canUserRaiseHand = (displayHints) => displayHints.includes(DISPLAY_HINTS.RAISE_HAND);\n\nMeetingUtil.canUserLowerAllHands = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOWER_ALL_HANDS);\n\nMeetingUtil.canUserLowerSomeoneElsesHand = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOWER_SOMEONE_ELSES_HAND);\n\nMeetingUtil.bothLeaveAndEndMeetingAvailable = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LEAVE_TRANSFER_HOST_END_MEETING) ||\n displayHints.includes(DISPLAY_HINTS.LEAVE_END_MEETING);\n\nMeetingUtil.lockMeeting = (actions, request, locusUrl) => {\n if (actions && actions.canLock) {\n return request.lockMeeting({locusUrl, lock: true});\n }\n\n return Promise.reject(new PermissionError('Lock not allowed, due to joined property.'));\n};\n\nMeetingUtil.unlockMeeting = (actions, request, locusUrl) => {\n if (actions && actions.canUnlock) {\n return request.lockMeeting({locusUrl, lock: false});\n }\n\n return Promise.reject(new PermissionError('Unlock not allowed, due to joined property.'));\n};\n\nMeetingUtil.handleAudioLogging = (audioTrack) => {\n const LOG_HEADER = 'MeetingUtil#handleAudioLogging -->';\n\n if (audioTrack) {\n const settings = audioTrack.getSettings();\n const {deviceId} = settings;\n\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings =', JSON.stringify(settings));\n }\n};\n\nMeetingUtil.handleVideoLogging = (videoTrack) => {\n const LOG_HEADER = 'MeetingUtil#handleVideoLogging -->';\n\n if (videoTrack) {\n const settings = videoTrack.getSettings();\n const {deviceId} = settings;\n\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings =', JSON.stringify(settings));\n }\n};\n\nMeetingUtil.handleDeviceLogging = (devices = []) => {\n const LOG_HEADER = 'MeetingUtil#handleDeviceLogging -->';\n\n devices.forEach((device) => {\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${device.deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings', JSON.stringify(device));\n });\n};\n\nMeetingUtil.endMeetingForAll = (meeting) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n return Promise.reject(new MeetingNotActiveError());\n }\n\n const endOptions = {\n locusUrl: meeting.locusUrl,\n };\n\n return meeting.meetingRequest\n .endMeetingForAll(endOptions)\n .then((response) => {\n if (response && response.body && response.body.locus) {\n meeting.locusInfo.onFullLocus(response.body.locus);\n }\n\n return Promise.resolve();\n })\n .then(() => MeetingUtil.cleanUp(meeting))\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:util#endMeetingForAll An error occured while trying to end meeting for all with an id of ${meeting.id}, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n};\n\nMeetingUtil.canEnableClosedCaption = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.CAPTION_START);\n\nMeetingUtil.canStartTranscribing = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_START);\n\nMeetingUtil.canStopTranscribing = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_STOP);\n\nMeetingUtil.isClosedCaptionActive = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.CAPTION_STATUS_ACTIVE);\n\nMeetingUtil.isWebexAssistantActive = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.WEBEX_ASSISTANT_STATUS_ACTIVE);\n\nMeetingUtil.canViewCaptionPanel = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.ENABLE_CAPTION_PANEL);\n\nMeetingUtil.isRealTimeTranslationEnabled = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.DISPLAY_REAL_TIME_TRANSLATION);\n\nMeetingUtil.canSelectSpokenLanguages = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.DISPLAY_NON_ENGLISH_ASR);\n\nMeetingUtil.waitingForOthersToJoin = (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.WAITING_FOR_OTHERS);\n\nMeetingUtil.canEnableReactions = (originalValue, displayHints) => {\n if (displayHints.includes(DISPLAY_HINTS.ENABLE_REACTIONS)) {\n return true;\n }\n if (displayHints.includes(DISPLAY_HINTS.DISABLE_REACTIONS)) {\n return false;\n }\n\n return originalValue;\n};\n\nMeetingUtil.canSendReactions = (originalValue, displayHints) => {\n if (displayHints.includes(DISPLAY_HINTS.REACTIONS_ACTIVE)) {\n return true;\n }\n if (displayHints.includes(DISPLAY_HINTS.REACTIONS_INACTIVE)) {\n return false;\n }\n\n return originalValue;\n};\n\nexport default MeetingUtil;\n"],"mappings":"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"}
@@ -56,6 +56,7 @@ var MeetingInfoV2PasswordError = /*#__PURE__*/function (_Error) {
56
56
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "meetingInfo", void 0);
57
57
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "sdkMessage", void 0);
58
58
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "wbxAppApiCode", void 0);
59
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "body", void 0);
59
60
  _this.name = 'MeetingInfoV2PasswordError';
60
61
  _this.sdkMessage = message;
61
62
  _this.stack = new Error().stack;
@@ -116,6 +117,7 @@ var MeetingInfoV2CaptchaError = /*#__PURE__*/function (_Error3) {
116
117
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this3), "isPasswordRequired", void 0);
117
118
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this3), "sdkMessage", void 0);
118
119
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this3), "wbxAppApiCode", void 0);
120
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this3), "body", void 0);
119
121
  _this3.name = 'MeetingInfoV2PasswordError';
120
122
  _this3.sdkMessage = message;
121
123
  _this3.stack = new Error().stack;