@webex/plugin-meetings 3.0.0-beta.143 → 3.0.0-beta.145

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.
@@ -349,6 +349,9 @@ var MeetingUtil = {
349
349
  canManageBreakout: function canManageBreakout(displayHints) {
350
350
  return displayHints.includes(_constants.DISPLAY_HINTS.BREAKOUT_MANAGEMENT);
351
351
  },
352
+ canBroadcastMessageToBreakout: function canBroadcastMessageToBreakout(displayHints) {
353
+ return displayHints.includes(_constants.DISPLAY_HINTS.BROADCAST_MESSAGE_TO_BREAKOUT);
354
+ },
352
355
  isSuppressBreakoutSupport: function isSuppressBreakoutSupport(displayHints) {
353
356
  return displayHints.includes(_constants.DISPLAY_HINTS.UCF_SUPPRESS_BREAKOUTS_SUPPORT);
354
357
  },
@@ -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","meeting","audioMuted","videoMuted","reject","ParameterError","locusMediaRequest","Metrics","postEvent","event","eventType","MEDIA_REQUEST","send","type","selfUrl","sequence","locusInfo","muteOptions","then","MEDIA_RESPONSE","hasOwner","info","owner","isOwnerSelf","isPinOrGuest","err","errorCode","INTENT_TO_JOIN","includes","joinMeeting","options","LOCUS_JOIN_REQUEST","meetingRequest","inviteeAddress","meetingJoinUrl","sipUri","meetingNumber","deviceUrl","correlationId","roapMessage","permissionToken","resourceId","moderator","pin","moveToResource","preferTranscoding","isMultistream","asResourceOccupant","breakoutsSupported","locale","deviceCapabilities","liveAnnotationSupported","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","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","canManageBreakout","BREAKOUT_MANAGEMENT","isSuppressBreakoutSupport","UCF_SUPPRESS_BREAKOUTS_SUPPORT","canAdmitLobbyToBreakout","DISABLE_LOBBY_TO_BREAKOUT","isBreakoutPreassignmentsEnabled","DISABLE_BREAKOUT_PREASSIGNMENTS","canUserAskForHelp","DISABLE_ASK_FOR_HELP","lockMeeting","actions","request","canLock","lock","PermissionError","unlockMeeting","canUnlock","handleAudioLogging","LOG_HEADER","settings","underlyingTrack","getSettings","deviceId","log","handleVideoLogging","handleDeviceLogging","devices","device","endMeetingForAll","endOptions","canEnableClosedCaption","CAPTION_START","isSaveTranscriptsEnabled","SAVE_TRANSCRIPTS_ENABLED","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","canSendReactions","originalValue","REACTIONS_ACTIVE","REACTIONS_INACTIVE","canUserRenameSelfAndObserved","CAN_RENAME_SELF_AND_OBSERVED","canUserRenameOthers","CAN_RENAME_OTHERS","addSequence","requestBody","updateLocusWithDelta","onDeltaLocus","generateLocusDeltaRequest","originalMeeting","meetingRef","WeakRef","locusDeltaRequest","originalOptions","deref"],"sources":["util.ts"],"sourcesContent":["import {LocalCameraTrack, LocalMicrophoneTrack} from '@webex/media-helpers';\n\nimport {cloneDeep} from 'lodash';\nimport {MeetingNotActiveError, UserNotJoinedError} from '../common/errors/webex-errors';\nimport Metrics from '../metrics';\nimport {eventType, trigger} from '../metrics/config';\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 = {\n 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\n remoteUpdateAudioVideo: (meeting, audioMuted?: boolean, videoMuted?: boolean) => {\n if (!meeting) {\n return Promise.reject(new ParameterError('You need a meeting object.'));\n }\n\n if (!meeting.locusMediaRequest) {\n return Promise.reject(\n new ParameterError(\n 'You need a meeting with a media connection, call Meeting.addMedia() first.'\n )\n );\n }\n\n Metrics.postEvent({event: eventType.MEDIA_REQUEST, meeting});\n\n return meeting.locusMediaRequest\n .send({\n type: 'LocalMute',\n selfUrl: meeting.selfUrl,\n mediaId: meeting.mediaId,\n sequence: meeting.locusInfo.sequence,\n muteOptions: {\n audioMuted,\n videoMuted,\n },\n })\n .then((response) => {\n Metrics.postEvent({event: eventType.MEDIA_RESPONSE, meeting});\n\n return response?.body?.locus;\n });\n },\n\n hasOwner: (info) => info && info.owner,\n\n isOwnerSelf: (owner, selfId) => owner === selfId,\n\n isPinOrGuest: (err) => err?.body?.errorCode && INTENT_TO_JOIN.includes(err.body.errorCode),\n\n 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 locale: options.locale,\n deviceCapabilities: options.deviceCapabilities,\n liveAnnotationSupported: options.liveAnnotationSupported,\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\n 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\n 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.disconnectPhoneAudio(options).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\n 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(() => {\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 },\n declineMeeting: (meeting, reason) =>\n meeting.meetingRequest.declineMeeting({\n locusUrl: meeting.locusUrl,\n deviceUrl: meeting.deviceUrl,\n reason,\n }),\n\n isUserInLeftState: (locusInfo) => locusInfo.parsedLocus?.self?.state === _LEFT_,\n\n isUserInIdleState: (locusInfo) => locusInfo.parsedLocus?.self?.state === _IDLE_,\n\n isUserInJoinedState: (locusInfo) => locusInfo.parsedLocus?.self?.state === _JOINED_,\n\n isMediaEstablished: (currentMediaStatus) =>\n currentMediaStatus &&\n (currentMediaStatus.audio || currentMediaStatus.video || currentMediaStatus.share),\n\n 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(\n 'Meeting:util#joinMeetingOptions --> Error joining the call, ',\n err\n );\n\n return Promise.reject(new JoinMeetingError(options, 'Error Joining Meeting', err));\n });\n },\n\n 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\n 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\n getModeratorFromLocusInfo: (locusInfo) =>\n locusInfo &&\n locusInfo.parsedLocus &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info.moderator,\n\n getPolicyFromLocusInfo: (locusInfo) =>\n locusInfo &&\n locusInfo.parsedLocus &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info.policy,\n\n getUserDisplayHintsFromLocusInfo: (locusInfo) =>\n locusInfo?.parsedLocus?.info?.userDisplayHints || [],\n\n canInviteNewParticipants: (displayHints) => displayHints.includes(DISPLAY_HINTS.ADD_GUEST),\n\n canAdmitParticipant: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.ROSTER_WAITING_TO_JOIN),\n\n canUserLock: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_LOCK) &&\n displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_UNLOCKED),\n\n canUserUnlock: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_UNLOCK) &&\n displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_LOCKED),\n\n canUserRaiseHand: (displayHints) => displayHints.includes(DISPLAY_HINTS.RAISE_HAND),\n\n canUserLowerAllHands: (displayHints) => displayHints.includes(DISPLAY_HINTS.LOWER_ALL_HANDS),\n\n canUserLowerSomeoneElsesHand: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOWER_SOMEONE_ELSES_HAND),\n\n bothLeaveAndEndMeetingAvailable: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LEAVE_TRANSFER_HOST_END_MEETING) ||\n displayHints.includes(DISPLAY_HINTS.LEAVE_END_MEETING),\n\n canManageBreakout: (displayHints) => displayHints.includes(DISPLAY_HINTS.BREAKOUT_MANAGEMENT),\n\n isSuppressBreakoutSupport: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.UCF_SUPPRESS_BREAKOUTS_SUPPORT),\n\n canAdmitLobbyToBreakout: (displayHints) =>\n !displayHints.includes(DISPLAY_HINTS.DISABLE_LOBBY_TO_BREAKOUT),\n\n isBreakoutPreassignmentsEnabled: (displayHints) =>\n !displayHints.includes(DISPLAY_HINTS.DISABLE_BREAKOUT_PREASSIGNMENTS),\n\n canUserAskForHelp: (displayHints) => !displayHints.includes(DISPLAY_HINTS.DISABLE_ASK_FOR_HELP),\n\n 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\n 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\n handleAudioLogging: (audioTrack: LocalMicrophoneTrack | null) => {\n const LOG_HEADER = 'MeetingUtil#handleAudioLogging -->';\n\n if (audioTrack) {\n const settings = audioTrack.underlyingTrack.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\n handleVideoLogging: (videoTrack: LocalCameraTrack | null) => {\n const LOG_HEADER = 'MeetingUtil#handleVideoLogging -->';\n\n if (videoTrack) {\n const settings = videoTrack.underlyingTrack.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\n 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\n 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(() => 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\n canEnableClosedCaption: (displayHints) => displayHints.includes(DISPLAY_HINTS.CAPTION_START),\n\n isSaveTranscriptsEnabled: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.SAVE_TRANSCRIPTS_ENABLED),\n\n canStartTranscribing: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_START),\n\n canStopTranscribing: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_STOP),\n\n isClosedCaptionActive: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.CAPTION_STATUS_ACTIVE),\n\n isWebexAssistantActive: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.WEBEX_ASSISTANT_STATUS_ACTIVE),\n\n canViewCaptionPanel: (displayHints) => displayHints.includes(DISPLAY_HINTS.ENABLE_CAPTION_PANEL),\n\n isRealTimeTranslationEnabled: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.DISPLAY_REAL_TIME_TRANSLATION),\n\n canSelectSpokenLanguages: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.DISPLAY_NON_ENGLISH_ASR),\n\n waitingForOthersToJoin: (displayHints) => displayHints.includes(DISPLAY_HINTS.WAITING_FOR_OTHERS),\n\n 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 canUserRenameSelfAndObserved: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.CAN_RENAME_SELF_AND_OBSERVED),\n\n canUserRenameOthers: (displayHints) => displayHints.includes(DISPLAY_HINTS.CAN_RENAME_OTHERS),\n\n /**\n * Adds the current locus sequence information to a request body\n * @param {Object} meeting The meeting object\n * @param {Object} requestBody The body of a request to locus\n * @returns {void}\n */\n addSequence: (meeting, requestBody) => {\n const sequence = meeting?.locusInfo?.sequence;\n\n if (!sequence) {\n return;\n }\n\n requestBody.sequence = sequence;\n },\n\n /**\n * Updates the locus info for the meeting with the delta locus\n * returned from requests that include the sequence information\n * Returns the original response object\n * @param {Object} meeting The meeting object\n * @param {Object} response The response of the http request\n * @returns {Object}\n */\n updateLocusWithDelta: (meeting, response) => {\n if (!meeting) {\n return response;\n }\n\n const locus = response?.body?.locus;\n\n if (locus) {\n meeting.locusInfo.onDeltaLocus(locus);\n }\n\n return response;\n },\n\n generateLocusDeltaRequest: (originalMeeting) => {\n const meetingRef = new WeakRef(originalMeeting);\n\n const locusDeltaRequest = (originalOptions) => {\n const meeting = meetingRef.deref();\n\n if (!meeting) {\n return Promise.resolve();\n }\n\n const options = cloneDeep(originalOptions);\n\n if (!options.body) {\n options.body = {};\n }\n\n MeetingUtil.addSequence(meeting, options.body);\n\n return meeting\n .request(options)\n .then((response) => MeetingUtil.updateLocusWithDelta(meeting, response));\n };\n\n return locusDeltaRequest;\n },\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","meeting","audioMuted","videoMuted","reject","ParameterError","locusMediaRequest","Metrics","postEvent","event","eventType","MEDIA_REQUEST","send","type","selfUrl","sequence","locusInfo","muteOptions","then","MEDIA_RESPONSE","hasOwner","info","owner","isOwnerSelf","isPinOrGuest","err","errorCode","INTENT_TO_JOIN","includes","joinMeeting","options","LOCUS_JOIN_REQUEST","meetingRequest","inviteeAddress","meetingJoinUrl","sipUri","meetingNumber","deviceUrl","correlationId","roapMessage","permissionToken","resourceId","moderator","pin","moveToResource","preferTranscoding","isMultistream","asResourceOccupant","breakoutsSupported","locale","deviceCapabilities","liveAnnotationSupported","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","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","canManageBreakout","BREAKOUT_MANAGEMENT","canBroadcastMessageToBreakout","BROADCAST_MESSAGE_TO_BREAKOUT","isSuppressBreakoutSupport","UCF_SUPPRESS_BREAKOUTS_SUPPORT","canAdmitLobbyToBreakout","DISABLE_LOBBY_TO_BREAKOUT","isBreakoutPreassignmentsEnabled","DISABLE_BREAKOUT_PREASSIGNMENTS","canUserAskForHelp","DISABLE_ASK_FOR_HELP","lockMeeting","actions","request","canLock","lock","PermissionError","unlockMeeting","canUnlock","handleAudioLogging","LOG_HEADER","settings","underlyingTrack","getSettings","deviceId","log","handleVideoLogging","handleDeviceLogging","devices","device","endMeetingForAll","endOptions","canEnableClosedCaption","CAPTION_START","isSaveTranscriptsEnabled","SAVE_TRANSCRIPTS_ENABLED","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","canSendReactions","originalValue","REACTIONS_ACTIVE","REACTIONS_INACTIVE","canUserRenameSelfAndObserved","CAN_RENAME_SELF_AND_OBSERVED","canUserRenameOthers","CAN_RENAME_OTHERS","addSequence","requestBody","updateLocusWithDelta","onDeltaLocus","generateLocusDeltaRequest","originalMeeting","meetingRef","WeakRef","locusDeltaRequest","originalOptions","deref"],"sources":["util.ts"],"sourcesContent":["import {LocalCameraTrack, LocalMicrophoneTrack} from '@webex/media-helpers';\n\nimport {cloneDeep} from 'lodash';\nimport {MeetingNotActiveError, UserNotJoinedError} from '../common/errors/webex-errors';\nimport Metrics from '../metrics';\nimport {eventType, trigger} from '../metrics/config';\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 = {\n 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\n remoteUpdateAudioVideo: (meeting, audioMuted?: boolean, videoMuted?: boolean) => {\n if (!meeting) {\n return Promise.reject(new ParameterError('You need a meeting object.'));\n }\n\n if (!meeting.locusMediaRequest) {\n return Promise.reject(\n new ParameterError(\n 'You need a meeting with a media connection, call Meeting.addMedia() first.'\n )\n );\n }\n\n Metrics.postEvent({event: eventType.MEDIA_REQUEST, meeting});\n\n return meeting.locusMediaRequest\n .send({\n type: 'LocalMute',\n selfUrl: meeting.selfUrl,\n mediaId: meeting.mediaId,\n sequence: meeting.locusInfo.sequence,\n muteOptions: {\n audioMuted,\n videoMuted,\n },\n })\n .then((response) => {\n Metrics.postEvent({event: eventType.MEDIA_RESPONSE, meeting});\n\n return response?.body?.locus;\n });\n },\n\n hasOwner: (info) => info && info.owner,\n\n isOwnerSelf: (owner, selfId) => owner === selfId,\n\n isPinOrGuest: (err) => err?.body?.errorCode && INTENT_TO_JOIN.includes(err.body.errorCode),\n\n 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 locale: options.locale,\n deviceCapabilities: options.deviceCapabilities,\n liveAnnotationSupported: options.liveAnnotationSupported,\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\n 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\n 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.disconnectPhoneAudio(options).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\n 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(() => {\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 },\n declineMeeting: (meeting, reason) =>\n meeting.meetingRequest.declineMeeting({\n locusUrl: meeting.locusUrl,\n deviceUrl: meeting.deviceUrl,\n reason,\n }),\n\n isUserInLeftState: (locusInfo) => locusInfo.parsedLocus?.self?.state === _LEFT_,\n\n isUserInIdleState: (locusInfo) => locusInfo.parsedLocus?.self?.state === _IDLE_,\n\n isUserInJoinedState: (locusInfo) => locusInfo.parsedLocus?.self?.state === _JOINED_,\n\n isMediaEstablished: (currentMediaStatus) =>\n currentMediaStatus &&\n (currentMediaStatus.audio || currentMediaStatus.video || currentMediaStatus.share),\n\n 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(\n 'Meeting:util#joinMeetingOptions --> Error joining the call, ',\n err\n );\n\n return Promise.reject(new JoinMeetingError(options, 'Error Joining Meeting', err));\n });\n },\n\n 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\n 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\n getModeratorFromLocusInfo: (locusInfo) =>\n locusInfo &&\n locusInfo.parsedLocus &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info.moderator,\n\n getPolicyFromLocusInfo: (locusInfo) =>\n locusInfo &&\n locusInfo.parsedLocus &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info.policy,\n\n getUserDisplayHintsFromLocusInfo: (locusInfo) =>\n locusInfo?.parsedLocus?.info?.userDisplayHints || [],\n\n canInviteNewParticipants: (displayHints) => displayHints.includes(DISPLAY_HINTS.ADD_GUEST),\n\n canAdmitParticipant: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.ROSTER_WAITING_TO_JOIN),\n\n canUserLock: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_LOCK) &&\n displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_UNLOCKED),\n\n canUserUnlock: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_UNLOCK) &&\n displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_LOCKED),\n\n canUserRaiseHand: (displayHints) => displayHints.includes(DISPLAY_HINTS.RAISE_HAND),\n\n canUserLowerAllHands: (displayHints) => displayHints.includes(DISPLAY_HINTS.LOWER_ALL_HANDS),\n\n canUserLowerSomeoneElsesHand: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOWER_SOMEONE_ELSES_HAND),\n\n bothLeaveAndEndMeetingAvailable: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LEAVE_TRANSFER_HOST_END_MEETING) ||\n displayHints.includes(DISPLAY_HINTS.LEAVE_END_MEETING),\n\n canManageBreakout: (displayHints) => displayHints.includes(DISPLAY_HINTS.BREAKOUT_MANAGEMENT),\n canBroadcastMessageToBreakout: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.BROADCAST_MESSAGE_TO_BREAKOUT),\n\n isSuppressBreakoutSupport: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.UCF_SUPPRESS_BREAKOUTS_SUPPORT),\n\n canAdmitLobbyToBreakout: (displayHints) =>\n !displayHints.includes(DISPLAY_HINTS.DISABLE_LOBBY_TO_BREAKOUT),\n\n isBreakoutPreassignmentsEnabled: (displayHints) =>\n !displayHints.includes(DISPLAY_HINTS.DISABLE_BREAKOUT_PREASSIGNMENTS),\n\n canUserAskForHelp: (displayHints) => !displayHints.includes(DISPLAY_HINTS.DISABLE_ASK_FOR_HELP),\n\n 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\n 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\n handleAudioLogging: (audioTrack: LocalMicrophoneTrack | null) => {\n const LOG_HEADER = 'MeetingUtil#handleAudioLogging -->';\n\n if (audioTrack) {\n const settings = audioTrack.underlyingTrack.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\n handleVideoLogging: (videoTrack: LocalCameraTrack | null) => {\n const LOG_HEADER = 'MeetingUtil#handleVideoLogging -->';\n\n if (videoTrack) {\n const settings = videoTrack.underlyingTrack.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\n 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\n 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(() => 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\n canEnableClosedCaption: (displayHints) => displayHints.includes(DISPLAY_HINTS.CAPTION_START),\n\n isSaveTranscriptsEnabled: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.SAVE_TRANSCRIPTS_ENABLED),\n\n canStartTranscribing: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_START),\n\n canStopTranscribing: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_STOP),\n\n isClosedCaptionActive: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.CAPTION_STATUS_ACTIVE),\n\n isWebexAssistantActive: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.WEBEX_ASSISTANT_STATUS_ACTIVE),\n\n canViewCaptionPanel: (displayHints) => displayHints.includes(DISPLAY_HINTS.ENABLE_CAPTION_PANEL),\n\n isRealTimeTranslationEnabled: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.DISPLAY_REAL_TIME_TRANSLATION),\n\n canSelectSpokenLanguages: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.DISPLAY_NON_ENGLISH_ASR),\n\n waitingForOthersToJoin: (displayHints) => displayHints.includes(DISPLAY_HINTS.WAITING_FOR_OTHERS),\n\n 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 canUserRenameSelfAndObserved: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.CAN_RENAME_SELF_AND_OBSERVED),\n\n canUserRenameOthers: (displayHints) => displayHints.includes(DISPLAY_HINTS.CAN_RENAME_OTHERS),\n\n /**\n * Adds the current locus sequence information to a request body\n * @param {Object} meeting The meeting object\n * @param {Object} requestBody The body of a request to locus\n * @returns {void}\n */\n addSequence: (meeting, requestBody) => {\n const sequence = meeting?.locusInfo?.sequence;\n\n if (!sequence) {\n return;\n }\n\n requestBody.sequence = sequence;\n },\n\n /**\n * Updates the locus info for the meeting with the delta locus\n * returned from requests that include the sequence information\n * Returns the original response object\n * @param {Object} meeting The meeting object\n * @param {Object} response The response of the http request\n * @returns {Object}\n */\n updateLocusWithDelta: (meeting, response) => {\n if (!meeting) {\n return response;\n }\n\n const locus = response?.body?.locus;\n\n if (locus) {\n meeting.locusInfo.onDeltaLocus(locus);\n }\n\n return response;\n },\n\n generateLocusDeltaRequest: (originalMeeting) => {\n const meetingRef = new WeakRef(originalMeeting);\n\n const locusDeltaRequest = (originalOptions) => {\n const meeting = meetingRef.deref();\n\n if (!meeting) {\n return Promise.resolve();\n }\n\n const options = cloneDeep(originalOptions);\n\n if (!options.body) {\n options.body = {};\n }\n\n MeetingUtil.addSequence(meeting, options.body);\n\n return meeting\n .request(options)\n .then((response) => MeetingUtil.updateLocusWithDelta(meeting, response));\n };\n\n return locusDeltaRequest;\n },\n};\n\nexport default MeetingUtil;\n"],"mappings":"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"}
@@ -2,19 +2,23 @@
2
2
 
3
3
  var _typeof = require("@babel/runtime-corejs2/helpers/typeof");
4
4
  var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
5
- var _WeakMap = require("@babel/runtime-corejs2/core-js/weak-map");
6
- var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
5
+ var _Object$keys2 = require("@babel/runtime-corejs2/core-js/object/keys");
6
+ var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
7
7
  var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
8
+ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
9
+ var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
10
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
11
+ var _WeakMap = require("@babel/runtime-corejs2/core-js/weak-map");
8
12
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
9
13
  _Object$defineProperty(exports, "__esModule", {
10
14
  value: true
11
15
  });
12
16
  exports.default = void 0;
13
- var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
14
17
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
15
18
  var _now = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/date/now"));
16
19
  var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
17
20
  var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
21
+ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
18
22
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/toConsumableArray"));
19
23
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
20
24
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
@@ -54,6 +58,8 @@ var _util2 = _interopRequireDefault(require("./util"));
54
58
  var _permission = _interopRequireDefault(require("../common/errors/permission"));
55
59
  function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
56
60
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
61
+ function ownKeys(object, enumerableOnly) { var keys = _Object$keys2(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
62
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
57
63
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
58
64
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
59
65
  var mediaLogger;
@@ -186,6 +192,48 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
186
192
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mediaHelpers", void 0);
187
193
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "breakoutLocusForHandleLater", void 0);
188
194
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "namespace", _constants.MEETINGS);
195
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "createNoiseReductionEffect", /*#__PURE__*/function () {
196
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(options) {
197
+ var authToken;
198
+ return _regenerator.default.wrap(function _callee$(_context) {
199
+ while (1) switch (_context.prev = _context.next) {
200
+ case 0:
201
+ // @ts-ignore
202
+ authToken = _this.webex.credentials.supertoken.access_token;
203
+ return _context.abrupt("return", new mediaHelpersModule.NoiseReductionEffect(_objectSpread({
204
+ authToken: authToken
205
+ }, options)));
206
+ case 2:
207
+ case "end":
208
+ return _context.stop();
209
+ }
210
+ }, _callee);
211
+ }));
212
+ return function (_x) {
213
+ return _ref.apply(this, arguments);
214
+ };
215
+ }());
216
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "createVirtualBackgroundEffect", /*#__PURE__*/function () {
217
+ var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(options) {
218
+ var authToken;
219
+ return _regenerator.default.wrap(function _callee2$(_context2) {
220
+ while (1) switch (_context2.prev = _context2.next) {
221
+ case 0:
222
+ // @ts-ignore
223
+ authToken = _this.webex.credentials.supertoken.access_token;
224
+ return _context2.abrupt("return", new mediaHelpersModule.VirtualBackgroundEffect(_objectSpread({
225
+ authToken: authToken
226
+ }, options)));
227
+ case 2:
228
+ case "end":
229
+ return _context2.stop();
230
+ }
231
+ }, _callee2);
232
+ }));
233
+ return function (_x2) {
234
+ return _ref2.apply(this, arguments);
235
+ };
236
+ }());
189
237
  _this.mediaHelpers = mediaHelpersModule;
190
238
 
191
239
  /**
@@ -750,6 +798,17 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
750
798
  );
751
799
  }
752
800
 
801
+ /**
802
+ * Creates a noise reduction effect
803
+ *
804
+ * @param {INoiseReductionEffect} options optional custom effect options
805
+ * @returns {Promise<effect>} noise reduction effect.
806
+ * @public
807
+ * @memberof Meetings
808
+ */
809
+ }, {
810
+ key: "uploadLogs",
811
+ value:
753
812
  /**
754
813
  * Uploads logs to the webex services for tracking
755
814
  * @param {Object} [options={}]
@@ -762,9 +821,7 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
762
821
  * @param {String} [options.orgId] org id
763
822
  * @returns {String} feedback ID logs were submitted under
764
823
  */
765
- }, {
766
- key: "uploadLogs",
767
- value: function uploadLogs() {
824
+ function uploadLogs() {
768
825
  var _this7 = this;
769
826
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
770
827
  _loggerProxy.default.logger.info('Meetings:index#uploadLogs --> uploading logs');
@@ -1036,7 +1093,7 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
1036
1093
  }, {
1037
1094
  key: "createMeeting",
1038
1095
  value: function () {
1039
- var _createMeeting = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(destination) {
1096
+ var _createMeeting = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(destination) {
1040
1097
  var type,
1041
1098
  useRandomDelayForInfo,
1042
1099
  infoExtraParams,
@@ -1051,13 +1108,13 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
1051
1108
  isMeetingActive,
1052
1109
  enableUnifiedMeetings,
1053
1110
  meetingAddedType,
1054
- _args = arguments;
1055
- return _regenerator.default.wrap(function _callee$(_context) {
1056
- while (1) switch (_context.prev = _context.next) {
1111
+ _args3 = arguments;
1112
+ return _regenerator.default.wrap(function _callee3$(_context3) {
1113
+ while (1) switch (_context3.prev = _context3.next) {
1057
1114
  case 0:
1058
- type = _args.length > 1 && _args[1] !== undefined ? _args[1] : null;
1059
- useRandomDelayForInfo = _args.length > 2 && _args[2] !== undefined ? _args[2] : false;
1060
- infoExtraParams = _args.length > 3 && _args[3] !== undefined ? _args[3] : {};
1115
+ type = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : null;
1116
+ useRandomDelayForInfo = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : false;
1117
+ infoExtraParams = _args3.length > 3 && _args3[3] !== undefined ? _args3[3] : {};
1061
1118
  meeting = new _meeting.default({
1062
1119
  // @ts-ignore
1063
1120
  userId: this.webex.internal.device.userId,
@@ -1075,7 +1132,7 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
1075
1132
  parent: this.webex
1076
1133
  });
1077
1134
  this.meetingCollection.set(meeting);
1078
- _context.prev = 5;
1135
+ _context3.prev = 5;
1079
1136
  // if no participant has joined the scheduled meeting (meaning meeting is not active) and we get a locusEvent,
1080
1137
  // it means the meeting will start in 5-6 min. In that case, we want to fetchMeetingInfo
1081
1138
  // between 5 and 2 min (random between 3 minutes) before the meeting starts
@@ -1092,7 +1149,7 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
1092
1149
  isMeetingActive = !!((_destination$fullStat = destination.fullState) !== null && _destination$fullStat !== void 0 && _destination$fullStat.active); // @ts-ignore
1093
1150
  enableUnifiedMeetings = this.config.experimental.enableUnifiedMeetings;
1094
1151
  if (!(enableUnifiedMeetings && !isMeetingActive && useRandomDelayForInfo && waitingTime > 0)) {
1095
- _context.next = 15;
1152
+ _context3.next = 15;
1096
1153
  break;
1097
1154
  }
1098
1155
  meeting.fetchMeetingInfoTimeoutId = setTimeout(function () {
@@ -1101,27 +1158,27 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
1101
1158
  });
1102
1159
  }, waitingTime);
1103
1160
  meeting.parseMeetingInfo(undefined, destination);
1104
- _context.next = 17;
1161
+ _context3.next = 17;
1105
1162
  break;
1106
1163
  case 15:
1107
- _context.next = 17;
1164
+ _context3.next = 17;
1108
1165
  return meeting.fetchMeetingInfo({
1109
1166
  extraParams: infoExtraParams
1110
1167
  });
1111
1168
  case 17:
1112
- _context.next = 23;
1169
+ _context3.next = 23;
1113
1170
  break;
1114
1171
  case 19:
1115
- _context.prev = 19;
1116
- _context.t0 = _context["catch"](5);
1117
- if (!(_context.t0 instanceof _captchaError.default) && !(_context.t0 instanceof _passwordError.default) && !(_context.t0 instanceof _permission.default)) {
1172
+ _context3.prev = 19;
1173
+ _context3.t0 = _context3["catch"](5);
1174
+ if (!(_context3.t0 instanceof _captchaError.default) && !(_context3.t0 instanceof _passwordError.default) && !(_context3.t0 instanceof _permission.default)) {
1118
1175
  // if there is no meeting info we assume its a 1:1 call or wireless share
1119
1176
  _loggerProxy.default.logger.info("Meetings:index#createMeeting --> Info Unable to fetch meeting info for ".concat(destination, "."));
1120
1177
  _loggerProxy.default.logger.info('Meetings:index#createMeeting --> Info assuming this destination is a 1:1 or wireless share');
1121
1178
  }
1122
- _loggerProxy.default.logger.debug("Meetings:index#createMeeting --> Debug ".concat(_context.t0, " fetching /meetingInfo for creation."));
1179
+ _loggerProxy.default.logger.debug("Meetings:index#createMeeting --> Debug ".concat(_context3.t0, " fetching /meetingInfo for creation."));
1123
1180
  case 23:
1124
- _context.prev = 23;
1181
+ _context3.prev = 23;
1125
1182
  // For type LOCUS_ID we need to parse the locus object to get the information
1126
1183
  // about the caller and callee
1127
1184
  // Meeting Added event will be created in `handleLocusEvent`
@@ -1141,16 +1198,16 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
1141
1198
  type: meetingAddedType
1142
1199
  });
1143
1200
  }
1144
- return _context.finish(23);
1201
+ return _context3.finish(23);
1145
1202
  case 26:
1146
- return _context.abrupt("return", meeting);
1203
+ return _context3.abrupt("return", meeting);
1147
1204
  case 27:
1148
1205
  case "end":
1149
- return _context.stop();
1206
+ return _context3.stop();
1150
1207
  }
1151
- }, _callee, this, [[5, 19, 23, 26]]);
1208
+ }, _callee3, this, [[5, 19, 23, 26]]);
1152
1209
  }));
1153
- function createMeeting(_x) {
1210
+ function createMeeting(_x3) {
1154
1211
  return _createMeeting.apply(this, arguments);
1155
1212
  }
1156
1213
  return createMeeting;