@webex/plugin-meetings 3.0.0-beta.303 → 3.0.0-beta.305
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.
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/constants.js +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/statsAnalyzer/index.js +2 -5
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/types/constants.d.ts +1 -1
- package/dist/webinar/index.js +1 -1
- package/package.json +19 -19
- package/src/constants.ts +1 -1
- package/src/statsAnalyzer/index.ts +2 -4
- package/test/unit/spec/stats-analyzer/index.js +24 -0
package/dist/breakouts/index.js
CHANGED
|
@@ -1041,7 +1041,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
1041
1041
|
this.trigger(_constants.BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);
|
|
1042
1042
|
}
|
|
1043
1043
|
},
|
|
1044
|
-
version: "3.0.0-beta.
|
|
1044
|
+
version: "3.0.0-beta.305"
|
|
1045
1045
|
});
|
|
1046
1046
|
var _default = Breakouts;
|
|
1047
1047
|
exports.default = _default;
|
package/dist/constants.js
CHANGED
|
@@ -276,7 +276,7 @@ var RETRY_TIMEOUT = 3000;
|
|
|
276
276
|
exports.RETRY_TIMEOUT = RETRY_TIMEOUT;
|
|
277
277
|
var ICE_AND_DTLS_CONNECTION_TIMEOUT = 10000;
|
|
278
278
|
exports.ICE_AND_DTLS_CONNECTION_TIMEOUT = ICE_AND_DTLS_CONNECTION_TIMEOUT;
|
|
279
|
-
var ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT =
|
|
279
|
+
var ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT = 35000;
|
|
280
280
|
|
|
281
281
|
// ******************** REGEX **********************
|
|
282
282
|
// Please alphabetize
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AUDIO","AUDIO_STATUS","ALERT","ALIAS","ANSWER","CALL","CORRELATION_ID","MEETINGNUMBER","CONVERSATION_URL","CALENDAR","CALENDAR_EVENTS_API","CMR_MEETINGS","CLAIM","CONTROLS","CONTENT","COMPLETE","WHITEBOARD","GATHERING","DEVELOPMENT","DECLINE","ERROR","ENDED","HECATE","HOST","JOIN","LEAVE","LIVE","LOCAL","LOCI","LOCUS_URL","END","MAX_RANDOM_DELAY_FOR_MEETING_INFO","MEETINGINFO","MEET","MEET_M","MEDIA","OFFLINE","ONLINE","PARTICIPANT","PROVISIONAL_TYPE_DIAL_IN","PROVISIONAL_TYPE_DIAL_OUT","REMOTE","READY","SEND_DTMF_ENDPOINT","SENDRECV","SIP_URI","SHARE","TYPE","VIDEO","VIDEO_STATUS","_ANSWER_","_ACTIVE_","_CALL_","_CREATED_","_CONFLICT_","_CONVERSATION_URL_","_ERROR_","_FORCED_","_IDLE_","_IN_LOBBY_","_IN_MEETING_","_INCOMING_","_IN_","_ID_","_JOIN_","_JOINED_","_LOCUS_ID_","_LEFT_","_MOVED_","_MEETING_LINK_","_MEETING_UUID_","_MEETING_","_MEETING_CENTER_","_MEETING_ID_","_NOT_IN_MEETING_","_NONE_","_OBSERVE_","_PERSONAL_ROOM_","_PEOPLE_","hydraTypes","PEOPLE","_REQUESTED_","_RESOURCE_ROOM_","_RECEIVE_ONLY_","_REMOVE_","_ROOM_","ROOM","_SIP_BRIDGE_","_SIP_URI_","_SEND_RECEIVE_","_SEND_ONLY_","_INACTIVE_","_SLIDES_","_S_LINE","_USER_","_UNKNOWN_","_WEBEX_MEETING_","_WAIT_","_MOVE_MEDIA_","PARTICIPANT_DELTAS","TARGETS","STATES","DISABLED","MUTED","UNKNOWN","UNMUTED","ALTERNATE_REDIRECT_TRUE","HTTPS_PROTOCOL","MEETINGS","MEDIA_PEER_CONNECTION_NAME","SHARE_PEER_CONNECTION_NAME","USE_URI_LOOKUP_FALSE","WWW_DOT","WEBEX_DOT_COM","CONVERSATION_SERVICE","WBXAPPAPI_SERVICE","DEFAULT_EXCLUDED_STATS","LAYOUT_TYPES","MODERATOR_TRUE","MODERATOR_FALSE","INTENT_TO_JOIN","ICE_TIMEOUT","ICE_FAIL_TIMEOUT","RETRY_TIMEOUT","ICE_AND_DTLS_CONNECTION_TIMEOUT","ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT","DIALER_REGEX","SIP_ADDRESS","PHONE_NUMBER","E164_FORMAT","IPV4_REGEX","VALID_EMAIL_ADDRESS","VALID_PMR_ADDRESS","VALID_PMR_LINK","VALID_PIN","UUID_REG","API","CALLIOPEDISCOVERY","LOCUS","CALENDAR_EVENTS","CREATE","UPDATE","CREATE_MINIMAL","UPDATE_MINIMAL","DELETE","ASSIGN_ROLES_ERROR_CODES","ReclaimHostNotSupportedErrorCode","ReclaimHostNotAllowedErrorCode","ReclaimHostEmptyWrongKeyErrorCode","ReclaimHostIsHostAlreadyErrorCode","DEFAULT_GET_STATS_FILTER","types","RECORDING_STATE","RECORDING","IDLE","PAUSED","RESUMED","SHARE_STATUS","NO_SHARE","REMOTE_SHARE_ACTIVE","LOCAL_SHARE_ACTIVE","WHITEBOARD_SHARE_ACTIVE","EVENT_TRIGGERS","MEETINGS_READY","MEETINGS_REGISTERED","MEETINGS_UNREGISTERED","MEDIA_READY","MEDIA_STOPPED","MEDIA_UPDATE","MEDIA_CODEC_MISSING","MEDIA_CODEC_LOADED","MEETING_STARTED_SHARING_LOCAL","MEETING_STOPPED_SHARING_LOCAL","MEETING_STARTED_SHARING_REMOTE","MEETING_STOPPED_SHARING_REMOTE","MEETING_UPDATE_ANNOTATION_INFO","MEETING_STARTED_SHARING_WHITEBOARD","MEETING_STOPPED_SHARING_WHITEBOARD","MEETING_MEDIA_LOCAL_STARTED","MEETING_MEDIA_REMOTE_STARTED","MEETING_STARTED_RECORDING","MEETING_STOPPED_RECORDING","MEETING_STARTED_RECEIVING_TRANSCRIPTION","MEETING_STOPPED_RECEIVING_TRANSCRIPTION","MEETING_RECEIVE_REACTIONS","MEETING_PAUSED_RECORDING","MEETING_RESUMED_RECORDING","MEETING_ADDED","MEETING_REMOVED","MEETING_RINGING","MEETING_RINGING_STOP","MEETING_SELF_LOBBY_WAITING","MEETING_SELF_GUEST_ADMITTED","MEETING_SELF_VIDEO_MUTED_BY_OTHERS","MEETING_SELF_VIDEO_UNMUTED_BY_OTHERS","MEETING_SELF_MUTED_BY_OTHERS","MEETING_SELF_UNMUTED_BY_OTHERS","MEETING_SELF_REQUESTED_TO_UNMUTE","MEETING_SELF_PHONE_AUDIO_UPDATE","MEETING_SELF_CANNOT_VIEW_PARTICIPANT_LIST","MEETING_SELF_IS_SHARING_BLOCKED","MEETING_SELF_ROLES_CHANGED","MEETING_CONTROLS_LAYOUT_UPDATE","MEETING_ENTRY_EXIT_TONE_UPDATE","MEETING_BREAKOUTS_UPDATE","MEETING_BREAKOUTS_CLOSING","MEETING_BREAKOUTS_MESSAGE","MEETING_BREAKOUTS_ASK_RETURN_TO_MAIN","MEETING_BREAKOUTS_LEAVE","MEETING_BREAKOUTS_ASK_FOR_HELP","MEETING_BREAKOUTS_PRE_ASSIGNMENTS_UPDATE","MEETING_INTERPRETATION_UPDATE","MEETING_INTERPRETATION_SUPPORT_LANGUAGES_UPDATE","MEETING_INTERPRETATION_HANDOFF_REQUESTS_ARRIVED","MEMBERS_UPDATE","MEMBERS_CLEAR","MEMBERS_CONTENT_UPDATE","MEMBERS_HOST_UPDATE","MEMBERS_SELF_UPDATE","MEETING_RECONNECTION_STARTING","MEETING_RECONNECTION_SUCCESS","MEETING_RECONNECTION_FAILURE","MEETING_UNLOCKED","MEETING_LOCKED","MEETING_INFO_AVAILABLE","MEETING_LOG_UPLOAD_SUCCESS","MEETING_LOG_UPLOAD_FAILURE","MEETING_ACTIONS_UPDATE","MEETING_STATE_CHANGE","MEETING_MEETING_CONTAINER_UPDATE","MEETING_EMBEDDED_APPS_UPDATE","MEDIA_QUALITY","MEETINGS_NETWORK_DISCONNECTED","MEETINGS_NETWORK_CONNECTED","MEETING_SELF_LEFT","NETWORK_QUALITY","MEDIA_NEGOTIATED","ACTIVE_SPEAKER_CHANGED","REMOTE_VIDEO_SOURCE_COUNT_CHANGED","REMOTE_AUDIO_SOURCE_COUNT_CHANGED","REMOTE_MEDIA_AUDIO_CREATED","REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED","REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED","MEETING_CONTROLS_MUTE_ON_ENTRY_UPDATED","MEETING_CONTROLS_SHARE_CONTROL_UPDATED","MEETING_CONTROLS_DISALLOW_UNMUTE_UPDATED","MEETING_CONTROLS_REACTIONS_UPDATED","MEETING_CONTROLS_VIEW_THE_PARTICIPANTS_LIST_UPDATED","MEETING_CONTROLS_RAISE_HAND_UPDATED","MEETING_CONTROLS_VIDEO_UPDATED","MEETING_LOCUS_URL_UPDATE","MEETING_STREAM_PUBLISH_STATE_CHANGED","EVENT_TYPES","SELF","OTHER","REMOTE_AUDIO","REMOTE_VIDEO","REMOTE_SHARE","REMOTE_SHARE_AUDIO","MEETING_REMOVED_REASON","SELF_REMOVED","FULLSTATE_REMOVED","MEETING_INACTIVE_TERMINATING","CLIENT_LEAVE_REQUEST","CLIENT_LEAVE_REQUEST_TAB_CLOSED","USER_ENDED_SHARE_STREAMS","NO_MEETINGS_TO_SYNC","MEETING_CONNECTION_FAILED","LOCUS_DTO_SYNC_FAILED","MISSING_MEETING_INFO","CALL_REMOVED_REASON","CALL_INACTIVE","PARTNER_LEFT","SELF_LEFT","SHARE_STOPPED_REASON","SELF_STOPPED","MEETING_REJOIN","MEDIA_RECONNECTION","TRACK_ENDED","EVENTS","SELF_UNADMITTED_GUEST","SELF_ADMITTED_GUEST","MEDIA_INACTIVITY","CONVERSATION_URL_UPDATE","DESTROY_MEETING","REQUEST_UPLOAD_LOGS","REMOTE_RESPONSE","LOCUS_INFO_UPDATE_PARTICIPANTS","LOCUS_INFO_UPDATE_HOST","LOCUS_INFO_UPDATE_MEDIA_SHARES","LOCUS_INFO_UPDATE_SELF","LOCUS_INFO_UPDATE_URL","LOCUS_INFO_CAN_ASSIGN_HOST","DISCONNECT_DUE_TO_INACTIVITY","MEDIA_STATE","active","inactive","ERROR_DICTIONARY","PARAMETER","NAME","MESSAGE","CODE","JOIN_MEETING","RECONNECTION","PERMISSION","STATS","PASSWORD","CAPTCHA","BREAKOUT_EDIT","NO_MEETING_INFO","RECLAIM_HOST_ROLE_NOT_SUPPORTED","RECLAIM_HOST_ROLE_NOT_ALLOWED","RECLAIM_HOST_ROLE_EMPTY_OR_WRONG_KEY","RECLAIM_HOST_ROLE_IS_ALREADY_HOST","FLOOR_ACTION","GRANTED","RELEASED","ACCEPTED","FULL_STATE","INITIALIZING","INACTIVE","ACTIVE","TERMINATING","HTTP_VERBS","PUT","POST","GET","PATCH","ICE_GATHERING_STATE","NEW","ICE_STATE","CHECKING","CONNECTED","CLOSED","COMPLETED","FAILED","DISCONNECTED","CONNECTION_STATE","CONNECTING","STATE","SEQUENCE","UN_DEF","EMPTY","DEF","NA","RANGE_START","RANGE_END","SYNCDEBUG","ANNOTATION","ANNOTATION_ON_SHARE_SUPPORTED","BREAKOUTS","STATUS","CLOSING","PENDING","OPEN","BREAKOUTS_CLOSING","ASK_RETURN_TO_MAIN","LEAVE_BREAKOUT","ASK_FOR_HELP","PRE_ASSIGNMENTS_UPDATE","SESSION_TYPES","MAIN","BREAKOUT","SESSION_STATES","ASSIGNED","ALLOWED","ASSIGNED_CURRENT","REQUESTED","BREAKOUTS_SUPPORTED","ACTION","START","CLOSE","ERROR_CODE","EDIT_LOCK_TOKEN_MISMATCH","EDIT_NOT_AUTHORIZED","EDIT_LOCK_STATUS","LOCKED","NOT_LOCKED","DEFAULT_TTL","INTERPRETATION","SUPPORT_LANGUAGES_UPDATE","HANDOFF_REQUESTS_ARRIVED","ACTION_TYPE","OFFERED","DECLINED","RESOURCE_TYPE","LOCUSINFO","CONTROLS_MEETING_LAYOUT_UPDATED","CONTROLS_RECORDING_UPDATED","CONTROLS_MEETING_TRANSCRIBE_UPDATED","CONTROLS_MEETING_BREAKOUT_UPDATED","CONTROLS_MEETING_CONTAINER_UPDATED","CONTROLS_MEETING_INTERPRETATION_UPDATED","CONTROLS_ENTRY_EXIT_TONE_UPDATED","CONTROLS_JOIN_BREAKOUT_FROM_MAIN","CONTROLS_MUTE_ON_ENTRY_CHANGED","CONTROLS_SHARE_CONTROL_CHANGED","CONTROLS_DISALLOW_UNMUTE_CHANGED","CONTROLS_REACTIONS_CHANGED","CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED","CONTROLS_RAISE_HAND_CHANGED","CONTROLS_VIDEO_CHANGED","SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED","SELF_REMOTE_MUTE_STATUS_UPDATED","LOCAL_UNMUTE_REQUESTED","LOCAL_UNMUTE_REQUIRED","SELF_MODERATOR_CHANGED","SELF_ROLES_CHANGED","MEETING_UPDATE","MEDIA_STATUS_CHANGE","FULL_STATE_TYPE_UPDATE","FULL_STATE_MEETING_STATE_CHANGE","MEETING_STATE_CHANGE_TO_ACTIVE","MEETING_INFO_UPDATED","SELF_OBSERVING","EMBEDDED_APPS_UPDATED","SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE","SELF_IS_SHARING_BLOCKED_CHANGE","SELF_MEETING_BREAKOUTS_CHANGED","SELF_MEETING_INTERPRETATION_CHANGED","LINKS_SERVICES","LOCUSEVENT","LOCUS_MERCURY","CONTROLS_UPDATED","DIFFERENCE","BREAKOUT_ROSTER","FLOOR_GRANTED","FLOOR_RELEASED","MESSAGE_ROAP","PARTICIPANT_JOIN","PARTICIPANT_LEFT","PARTICIPANT_DECLINED","PARTICIPANT_UPDATED","PARTICIPANT_CONTROLS_UPDATED","PARTICIPANT_ROLES_UPDATED","PARTICIPANT_AUDIO_MUTED","PARTICIPANT_AUDIO_UNMUTED","PARTICIPANT_VIDEO_MUTED","PARTICIPANT_VIDEO_UNMUTED","RECORDING_STARTED","RECORDING_START_FAILED","RECORDING_STOPPED","SELF_CHANGED","MEDIA_TRACK_CONSTRAINT","CURSOR","AWLAYS","MOTION","NEVER","MEETING_ERRORS","METRICS_NOT_SERVER_OR_CLIENT_EXCEPTION","BIDIRECTIONAL_ROSTER_NOT_ALLOWED","INVALID_LOCUS_URL","ARGUMENT_NULL_OR_EMPTY","INVALID_USER","INVALID_PHONE_NUMBER_OR_COUNTRY_CODE","EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE","PHONE_NUMBER_INVALID_COUNTRY_CODE","PHONE_NUMBER_NOT_A_NUMBER","PHONE_NUMBER_TOO_SHORT_AFTER_IDD","PHONE_NUMBER_TOO_SHORT_NSN","PHONE_NUMBER_TOO_LONG","INVALID_DIALABLE_KEY","INVALID_MEETING_LINK","INVALID_SINCE_OR_SEQUENCE_HASH_IN_REQUEST","INVALID_LOCUS_ID","EMPTY_SCHEDULED_MEETING_START_TIME","INVALID_SCHEDULED_MEETING_DURATION_MINUTES","INVALID_SCHEDULED_MEETING_REMINDER_DURATION_MINUTES","EMPTY_SCHEDULED_MEETING_ORGANIZER","INVALID_MEETING_ID_FORMAT","INVALID_SIP_URL_FORMAT","EMPTY_INVITEE_RECORD","EMPTY_INVITEE_ADDRESS","DESKPHONE_NOTHING_DIALABLE_FOUND","INVALID_INVITEE_ADDRESS","INVALID_ATTENDEE_ID","INVALID_IN_LOBBY","MISSING_REQUESTING_PARTICIPANT_ID","INVALID_REQUESTING_PARTICIPANT_ID","SUPPLEMENTARY_USER_INFO_NOT_FOUND","UNAUTHORIZED","REMOVED_PARTICIPANT","FREE_USER_MAX_PARTICIPANTS_EXCEEDED","PAID_USER_MAX_PARTICIPANTS_EXCEEDED","SERVICE_MAX_PARTICIPANTS_EXCEEDED","ONE_ON_ONE_TO_SELF_NOT_ALLOWED","JOIN_RESTRICTED_USER","GET_RESTRICTED_USER","JOIN_RESTRICTED_USER_NOT_IN_ROOM","CREATE_MEDIA_RESTRICTED_USER","DUPLICATE_RESOURCE_CREATION_REQUEST","MEETING_NOT_FOUND","NOT_WEBEX_SITE","INVALID_SCHEDULED_MEETING_ORGANIZER","FREE_USER_MAX_PARTICIPANTS_JOINED_EXCEEDED","PAID_USER_MAX_PARTICIPANTS_JOINED_EXCEEDED","SERVICE_MAX_PARTICIPANTS_ROSTER_EXCEEDED","SERVICE_INITIAL_PARTICIPANTS_ROSTER_EXCEEDED","RESOURCE_GUEST_FORBIDDEN","SERVICE_NO_MACHINE_OR_SERVICE_ACCOUNT","MODERATOR_ROLE_REMOVAL_NOT_ALLOWED","RECORDING_CONTROL_NOT_SUPPORTED","HOST_PIN_LOCKED","INVALID_HOST_PIN","REQUESTING_PARTICIPANT_NOT_MODERATOR","CONVERSATION_NOT_FOUND","MEETING_LINK_NOT_FOUND","MEETING_INFO_NOT_FOUND","SCHEDULED_MEETING_NOT_FOUND","RECORDING_NOT_STARTED","RECORDING_NOT_ENABLED","RECORDING_USER_STORAGE_FULL","RECORDING_SITE_STORAGE_FULL","NO_SCHEDULED_MEETING","MEETING_FULL_UPDATE_NOT_ALLOWED","MODERATOR_ROLE_REMOVAL_NOT_VALID","MODERATOR_ROLE_ADDITION_NOT_VALID","INVALID_CALL_START_TIME","MEETING_STARTED_UPDATE_NOT_ALLOWED","EXCEEDED_MAX_JOINED_PARTICIPANTS","EXCEEDED_SERVICE_MAX_PARTICIPANTS","MEETING_IS_LOCKED","MEETING_IS_TERMINATING","MEETING_REQUIRE_MODERATOR_PIN_INTENT","MEETING_REQUIRE_MODERATOR_PIN","MEETING_REQUIRE_MODERATOR_ROLE","PMR_ACCOUNT_SUSPENDED","PMR_ACCOUNT_LOCKED","INVALID_JOIN_TIME","REQUIRES_WEBEX_LOGIN","TOO_MANY_REQUESTS","UNABLE_TO_LOOK_UP_DEVICE_INFORMATION","UNABLE_TO_LOOK_UP_CONVERSATION","UNABLE_TO_LOOK_UP_CI_USER","UNABLE_TO_CREATE_CONFLUENCE","SERVICE_UNAVAILABLE","SOCKET_TIMEOUT","NO_HTTP_RESPONSE","MEETING_END_REASON","MEDIA_RELEASED","SELF_POLICY","DISPLAY_HINTS","ADD_GUEST","ROSTER_WAITING_TO_JOIN","RECORDING_CONTROL_START","RECORDING_CONTROL_PAUSE","RECORDING_CONTROL_STOP","RECORDING_CONTROL_RESUME","LOCK_CONTROL_UNLOCK","LOCK_CONTROL_LOCK","LOCK_STATUS_LOCKED","LOCK_STATUS_UNLOCKED","RAISE_HAND","LOWER_ALL_HANDS","LOWER_SOMEONE_ELSES_HAND","LEAVE_TRANSFER_HOST_END_MEETING","LEAVE_END_MEETING","CAPTION_START","CAPTION_STATUS_ACTIVE","DISPLAY_REAL_TIME_TRANSLATION","ENABLE_CAPTION_PANEL","DISPLAY_NON_ENGLISH_ASR","TRANSCRIPTION_CONTROL_START","TRANSCRIPTION_CONTROL_STOP","SAVE_TRANSCRIPTS_ENABLED","WEBEX_ASSISTANT_STATUS_ACTIVE","WAITING_FOR_OTHERS","ENABLE_REACTIONS","DISABLE_REACTIONS","REACTIONS_ACTIVE","REACTIONS_INACTIVE","SHARE_CONTROL","ENABLE_MUTE_ON_ENTRY","ENABLE_SHOW_DISPLAY_NAME","DISABLE_SHOW_DISPLAY_NAME","DISABLE_MUTE_ON_ENTRY","ENABLE_HARD_MUTE","DISABLE_HARD_MUTE","MUTE_ALL","UNMUTE_ALL","PRESENTER_CONTROL","CAN_RENAME_SELF_AND_OBSERVED","CAN_RENAME_OTHERS","BREAKOUT_MANAGEMENT","BROADCAST_MESSAGE_TO_BREAKOUT","UCF_SUPPRESS_BREAKOUTS_SUPPORT","DISABLE_ASK_FOR_HELP","DISABLE_BREAKOUT_PREASSIGNMENTS","DISABLE_LOBBY_TO_BREAKOUT","DISABLE_VIEW_THE_PARTICIPANT_LIST","ENABLE_VIEW_THE_PARTICIPANT_LIST","DISABLE_RAISE_HAND","ENABLE_RAISE_HAND","DISABLE_VIDEO","ENABLE_VIDEO","SHARE_FILE","SHARE_APPLICATION","SHARE_CAMERA","SHARE_DESKTOP","SHARE_CONTENT","SHARE_WHITEBOARD","VOIP_IS_ENABLED","INTERSTITIAL_DISPLAY_HINTS","SELF_ROLES","COHOST","MODERATOR","ATTENDEE","MEETING_STATE","INCOMING","DIALING","NOTIFIED","ON_GOING","JOINED","LEFT","MEETING_STATE_MACHINE","TRANSITIONS","FAIL","RING","RESET","RINGING","ANSWERED","MEETING_AUDIO_STATE_MACHINE","TOGGLE","INIT","MUTE_SELF","UNMUTE_SELF","MEETING_VIDEO_STATE_MACHINE","PEER_CONNECTION_STATE","IN_PROGRESS","FAILURE","DEFAULT_TRY_COUNT","DEFAULT_STATUS","RESOURCE","CLUSTERS","REACHABILITY","localStorageResult","localStorageJoinCookie","namespace","ROAP","ROAP_TYPES","OFFER","OK","TURN_DISCOVERY_REQUEST","TURN_DISCOVERY_RESPONSE","ROAP_MERCURY","ROAP_VERSION","MediaContent","main","slides","NETWORK_STATUS","RECONNECTING","NETWORK_TYPE","VPN","WIFI","ETHERNET","SEND_DIRECTION","RECEIVE_DIRECTION","MQA_STATS","MQA_SIZE","CA_TYPE","DEFAULT_IP","DEFAULT_SHARE_SENDER_STATS","common","direction","isMain","mariFecEnabled","mariQosEnabled","multistreamEnabled","availableBitrate","dtlsBitrate","dtlsPackets","fecBitrate","fecPackets","maxBitrate","queueDelay","remoteJitter","remoteLossRate","remoteReceiveRate","roundTripTime","rtcpBitrate","rtcpPackets","rtpBitrate","rtpPackets","stunBitrate","stunPackets","transportType","streams","codec","duplicateSsci","requestedBitrate","requestedFrames","ssci","transmittedBitrate","transmittedFrameRate","h264CodecProfile","localConfigurationChanges","remoteConfigurationChanges","requestedFrameSize","requestedKeyFrames","transmittedFrameSize","transmittedHeight","transmittedKeyFrames","transmittedWidth","intervalMetadata","memoryUsage","cpuBitWidth","mainProcessMaximumMemoryBytes","osBitWidth","processAverageMemoryUsage","processMaximumMemoryBytes","processMaximumMemoryUsage","systemAverageMemoryUsage","systemMaximumMemoryUsage","peerReflexiveIP","processAverageCPU","processMaximumCPU","systemAverageCPU","systemMaximumCPU","QUALITY_LEVELS","LOW","MEDIUM","HIGH","AVAILABLE_RESOLUTIONS","video","width","max","ideal","height","MQA_INTEVAL","MEDIA_DEVICES","MICROPHONE","SPEAKER","CAMERA","PSTN_STATUS","TRANSFERRING","SUCCESS","PASSWORD_STATUS","NOT_REQUIRED","REQUIRED","VERIFIED","MEETING_INFO_FAILURE_REASON","NONE","WRONG_PASSWORD","WRONG_CAPTCHA","POLICY","BNR_STATUS","SHOULD_ENABLE","ENABLED","SHOULD_DISABLE","NOT_ENABLED","EMBEDDED_APP_TYPES","SLIDO","DEFAULT_MEETING_INFO_REQUEST_BODY","supportHostKey","supportCountryList","IP_VERSION","unknown","only_ipv4","only_ipv6","ipv4_and_ipv6","MEETING_PERMISSION_TOKEN_REFRESH_THRESHOLD_IN_SEC","MEETING_PERMISSION_TOKEN_REFRESH_REASON"],"sources":["constants.ts"],"sourcesContent":["// @ts-ignore\nimport {hydraTypes} from '@webex/common';\n\n// *********** LOWERCASE / CAMELCASE STRINGS ************\n\nexport const AUDIO = 'audio';\nexport const AUDIO_STATUS = 'audioStatus';\nexport const ALERT = 'alert';\nexport const ALIAS = 'alias';\nexport const ANSWER = 'answer';\n\nexport const CALL = 'call';\nexport const CORRELATION_ID = 'correlationId';\nexport const MEETINGNUMBER = 'meetingNumber';\nexport const CONVERSATION_URL = 'conversationUrl';\nexport const CALENDAR = 'calendar';\nexport const CALENDAR_EVENTS_API = 'calendarEvents';\nexport const CMR_MEETINGS = 'cmrmeetings';\nexport const CLAIM = 'claim';\nexport const CONTROLS = 'controls';\nexport const CONTENT = 'content';\nexport const COMPLETE = 'complete';\nexport const WHITEBOARD = 'whiteboard';\nexport const GATHERING = 'gathering';\nexport const DEVELOPMENT = 'development';\nexport const DECLINE = 'decline';\n\nexport const ERROR = 'error';\nexport const ENDED = 'ended';\n\nexport const HECATE = 'hecate';\n\nexport const HOST = 'host';\n\nexport const JOIN = 'join';\n\nexport const LEAVE = 'leave';\nexport const LIVE = 'live';\nexport const LOCAL = 'local';\nexport const LOCI = 'loci';\nexport const LOCUS_URL = 'locusUrl';\nexport const END = 'end';\n\nexport const MAX_RANDOM_DELAY_FOR_MEETING_INFO = 3 * 60 * 1000;\nexport const MEETINGINFO = 'meetingInfo';\nexport const MEET = 'meet';\nexport const MEET_M = 'm';\nexport const MEDIA = 'media';\n\nexport const OFFLINE = 'offline';\nexport const ONLINE = 'online';\n\nexport const PARTICIPANT = 'participant';\n\nexport const PROVISIONAL_TYPE_DIAL_IN = 'DIAL_IN';\nexport const PROVISIONAL_TYPE_DIAL_OUT = 'DIAL_OUT';\n\nexport const REMOTE = 'remote';\nexport const READY = 'ready';\n\nexport const SEND_DTMF_ENDPOINT = 'sendDtmf';\nexport const SENDRECV = 'sendrecv';\nexport const SIP_URI = 'sipUri';\nexport const SHARE = 'share';\n\nexport const TYPE = 'type';\n\nexport const VIDEO = 'video';\nexport const VIDEO_STATUS = 'videoStatus';\n\n// *********** UPPERCASE ONLY STRINGS ************\n// Please alphabetize\nexport const _ANSWER_ = 'ANSWER';\nexport const _ACTIVE_ = 'ACTIVE';\nexport const _CALL_ = 'CALL';\nexport const _CREATED_ = 'CREATED';\nexport const _CONFLICT_ = 'CONFLICT';\nexport const _CONVERSATION_URL_ = 'CONVERSATION_URL';\n\nexport const _ERROR_ = 'ERROR';\n\nexport const _FORCED_ = 'FORCED';\n\nexport const _IDLE_ = 'IDLE';\nexport const _IN_LOBBY_ = 'IN_LOBBY';\nexport const _IN_MEETING_ = 'IN_MEETING';\nexport const _INCOMING_ = 'INCOMING';\nexport const _IN_ = 'IN';\nexport const _ID_ = 'id';\n\nexport const _JOIN_ = 'JOIN';\nexport const _JOINED_ = 'JOINED';\n\nexport const _LOCUS_ID_ = 'LOCUS_ID';\nexport const _LEFT_ = 'LEFT';\nexport const _MOVED_ = 'MOVED';\n\nexport const _MEETING_LINK_ = 'MEETING_LINK';\nexport const _MEETING_UUID_ = 'MEETING_UUID';\nexport const _MEETING_ = 'MEETING';\nexport const _MEETING_CENTER_ = 'MEETING_CENTER';\nexport const _MEETING_ID_ = 'MEETING_ID';\n\nexport const _NOT_IN_MEETING_ = 'NOT_IN_MEETING';\nexport const _NONE_ = 'NONE';\n\nexport const _OBSERVE_ = 'OBSERVE';\n\nexport const _PERSONAL_ROOM_ = 'PERSONAL_ROOM';\nexport const _PEOPLE_ = hydraTypes.PEOPLE;\n\nexport const _REQUESTED_ = 'REQUESTED';\nexport const _RESOURCE_ROOM_ = 'RESOURCE_ROOM';\nexport const _RECEIVE_ONLY_ = 'RECVONLY';\nexport const _REMOVE_ = 'REMOVE';\nexport const _ROOM_ = hydraTypes.ROOM;\n\nexport const _SIP_BRIDGE_ = 'SIP_BRIDGE';\nexport const _SIP_URI_ = 'SIP_URI';\nexport const _SEND_RECEIVE_ = 'SENDRECV';\nexport const _SEND_ONLY_ = 'SENDONLY';\nexport const _INACTIVE_ = 'INACTIVE';\nexport const _SLIDES_ = 'SLIDES';\nexport const _S_LINE = 's=-';\n\nexport const _USER_ = 'USER';\nexport const _UNKNOWN_ = 'UNKNOWN';\n\nexport const _WEBEX_MEETING_ = 'WEBEX_MEETING';\nexport const _WAIT_ = 'WAIT';\nexport const _MOVE_MEDIA_ = 'MOVE_MEDIA';\n\n// *********** PARTICIPANT DELTAS ***********\nexport const PARTICIPANT_DELTAS = {\n TARGETS: {\n AUDIO: 'audio',\n VIDEO: 'video',\n },\n STATES: {\n DISABLED: 'disabled',\n MUTED: 'muted',\n UNKNOWN: 'unknown',\n UNMUTED: 'unmuted',\n },\n};\n\n// *********** STRING HELPERS ***********\n// Please alphabetize\nexport const ALTERNATE_REDIRECT_TRUE = 'alternateRedirect=true';\n\nexport const HTTPS_PROTOCOL = 'https://';\n\nexport const MEETINGS = 'Meetings';\n\nexport const MEDIA_PEER_CONNECTION_NAME = 'MediaPeerConnection';\n\nexport const SHARE_PEER_CONNECTION_NAME = 'SharePeerConnection';\n\nexport const USE_URI_LOOKUP_FALSE = 'useUriLookup=false';\n\nexport const WWW_DOT = 'www.';\n\nexport const WEBEX_DOT_COM = 'webex.com';\n\nexport const CONVERSATION_SERVICE = 'identityLookup';\n\nexport const WBXAPPAPI_SERVICE = 'webex-appapi-service';\n\n// ******************* ARRAYS ********************\n// Please alphabetize\nexport const DEFAULT_EXCLUDED_STATS = ['timestamp', 'ssrc', 'priority'];\n\n/**\n * @description @description Layout type for remote video participants. Allowed values are: Single, Equal, ActivePresence, Prominent, OnePlusN\n * @type {array}\n * @constant\n */\nexport const LAYOUT_TYPES = ['Single', 'Equal', 'ActivePresence', 'Prominent', 'OnePlusN'];\n\n// ******************* BOOLEANS *******************\n// Please alphabetize\nexport const MODERATOR_TRUE = true;\nexport const MODERATOR_FALSE = false;\n\n// ******************** NUMBERS ********************\n\nexport const INTENT_TO_JOIN = [2423005, 2423006, 2423016, 2423017, 2423018];\nexport const ICE_TIMEOUT = 2000;\nexport const ICE_FAIL_TIMEOUT = 3000;\n\nexport const RETRY_TIMEOUT = 3000;\n\nexport const ICE_AND_DTLS_CONNECTION_TIMEOUT = 10000;\nexport const ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT = 10000;\n\n// ******************** REGEX **********************\n// Please alphabetize\nexport const DIALER_REGEX = {\n // modified from https://github.com/kirm/sip.js base\n // and with https://tools.ietf.org/html/rfc3261\n // requires the @ symbol\n SIP_ADDRESS:\n /^(sips?)?:?(?:([^\\s>:@]+)(?::([^\\s@>]+))?@)([\\w\\-.]+)(?::(\\d+))?((?:;[^\\s=?>;]+(?:=[^\\s?;]+)?)*)(?:\\?(([^\\s&=>]+=[^\\s&=>]+)(&[^\\s&=>]+=[^\\s&=>]+)*))?$/,\n // standard telephony num regex\n PHONE_NUMBER:\n /^(?:(?:\\+?1\\s*(?:[.-]\\s*)?)?(?:\\(\\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\\s*\\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\\s*(?:[.-]\\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\\s*(?:[.-]\\s*)?([0-9]{4})(?:\\s*(?:#|x\\.?|ext\\.?|extension)\\s*(\\d+))?$/,\n E164_FORMAT: /^\\+[1-9]\\d{1,14}$/,\n};\n\n// eslint-disable-next-line max-len\nexport const IPV4_REGEX = /^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}|.local/g;\n\nexport const VALID_EMAIL_ADDRESS =\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\nexport const VALID_PMR_ADDRESS =\n /([a-z0-9][-a-z0-9, '.']{0,62})@([a-z0-9][-a-z0-9, '.']{0,62})\\.webex\\.com/i;\nexport const VALID_PMR_LINK =\n /(https:\\/\\/)?([a-z0-9][-a-z0-9, '.']{0,62})\\.webex\\.com\\/(meet|join)\\/([a-z0-9][-a-z0-9, '.']{0,62})\\/?/i;\nexport const VALID_PIN = /([0-9]{4,6})/;\nexport const UUID_REG =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n\n// ******************** OBJECTS ********************\n// Please alphabetize, and keep objects organized\n\n// TODO: move all api params to API section\nexport const API = {\n CALLIOPEDISCOVERY: 'calliopeDiscovery',\n LOCUS: 'locus',\n};\n\nexport const CALENDAR_EVENTS = {\n CREATE: 'event:calendar.meeting.create',\n UPDATE: 'event:calendar.meeting.update',\n CREATE_MINIMAL: 'event:calendar.meeting.create.minimal',\n UPDATE_MINIMAL: 'event:calendar.meeting.update.minimal',\n DELETE: 'event:calendar.meeting.delete',\n};\n\nexport const ASSIGN_ROLES_ERROR_CODES = {\n ReclaimHostNotSupportedErrorCode: 2400127,\n ReclaimHostNotAllowedErrorCode: 2403135,\n ReclaimHostEmptyWrongKeyErrorCode: 2403136,\n ReclaimHostIsHostAlreadyErrorCode: 2409150,\n};\n\nexport const DEFAULT_GET_STATS_FILTER = {\n types: [\n 'track',\n 'transport',\n 'candidate-pair',\n 'outbound-rtp',\n 'outboundrtp',\n 'inbound-rtp',\n 'inboundrtp',\n 'remote-inbound-rtp',\n 'remote-outbound-rtp',\n 'remote-candidate',\n 'local-candidate',\n 'media-source',\n ],\n};\n\nexport const RECORDING_STATE = {\n RECORDING: 'recording',\n IDLE: 'idle',\n PAUSED: 'paused',\n RESUMED: 'resumed',\n};\n\nexport const SHARE_STATUS = {\n NO_SHARE: 'no_share',\n REMOTE_SHARE_ACTIVE: 'remote_share_active',\n LOCAL_SHARE_ACTIVE: 'local_share_active',\n WHITEBOARD_SHARE_ACTIVE: 'whiteboard_share_active',\n};\n\n// TODO: do we want to scope by meeting, members when they come off those objects themselves?\nexport const EVENT_TRIGGERS = {\n MEETINGS_READY: 'meetings:ready',\n MEETINGS_REGISTERED: 'meetings:registered',\n MEETINGS_UNREGISTERED: 'meetings:unregistered',\n MEDIA_READY: 'media:ready',\n MEDIA_STOPPED: 'media:stopped',\n MEDIA_UPDATE: 'media:update',\n MEDIA_CODEC_MISSING: 'media:codec:missing',\n MEDIA_CODEC_LOADED: 'media:codec:loaded',\n MEETING_STARTED_SHARING_LOCAL: 'meeting:startedSharingLocal',\n MEETING_STOPPED_SHARING_LOCAL: 'meeting:stoppedSharingLocal',\n MEETING_STARTED_SHARING_REMOTE: 'meeting:startedSharingRemote',\n MEETING_STOPPED_SHARING_REMOTE: 'meeting:stoppedSharingRemote',\n MEETING_UPDATE_ANNOTATION_INFO: 'meeting:updateAnnotationInfo',\n MEETING_STARTED_SHARING_WHITEBOARD: 'meeting:startedSharingWhiteboard',\n MEETING_STOPPED_SHARING_WHITEBOARD: 'meeting:stoppedSharingWhiteboard',\n MEETING_MEDIA_LOCAL_STARTED: 'meeting:media:local:start',\n MEETING_MEDIA_REMOTE_STARTED: 'meeting:media:remote:start',\n MEETING_STARTED_RECORDING: 'meeting:recording:started',\n MEETING_STOPPED_RECORDING: 'meeting:recording:stopped',\n MEETING_STARTED_RECEIVING_TRANSCRIPTION: 'meeting:receiveTranscription:started',\n MEETING_STOPPED_RECEIVING_TRANSCRIPTION: 'meeting:receiveTranscription:stopped',\n MEETING_RECEIVE_REACTIONS: 'meeting:receiveReactions',\n MEETING_PAUSED_RECORDING: 'meeting:recording:paused',\n MEETING_RESUMED_RECORDING: 'meeting:recording:resumed',\n MEETING_ADDED: 'meeting:added',\n MEETING_REMOVED: 'meeting:removed',\n MEETING_RINGING: 'meeting:ringing',\n MEETING_RINGING_STOP: 'meeting:ringingStop',\n MEETING_SELF_LOBBY_WAITING: 'meeting:self:lobbyWaiting',\n MEETING_SELF_GUEST_ADMITTED: 'meeting:self:guestAdmitted',\n MEETING_SELF_VIDEO_MUTED_BY_OTHERS: 'meeting:self:videoMutedByOthers',\n MEETING_SELF_VIDEO_UNMUTED_BY_OTHERS: 'meeting:self:videoUnmutedByOthers',\n MEETING_SELF_MUTED_BY_OTHERS: 'meeting:self:mutedByOthers',\n MEETING_SELF_UNMUTED_BY_OTHERS: 'meeting:self:unmutedByOthers',\n MEETING_SELF_REQUESTED_TO_UNMUTE: 'meeting:self:requestedToUnmute',\n MEETING_SELF_PHONE_AUDIO_UPDATE: 'meeting:self:phoneAudioUpdate',\n MEETING_SELF_CANNOT_VIEW_PARTICIPANT_LIST: 'meeting:self:cannotViewParticipantList',\n MEETING_SELF_IS_SHARING_BLOCKED: 'meeting:self:isSharingBlocked',\n MEETING_SELF_ROLES_CHANGED: 'meeting:self:rolesChanged',\n MEETING_CONTROLS_LAYOUT_UPDATE: 'meeting:layout:update',\n MEETING_ENTRY_EXIT_TONE_UPDATE: 'meeting:entryExitTone:update',\n MEETING_BREAKOUTS_UPDATE: 'meeting:breakouts:update',\n MEETING_BREAKOUTS_CLOSING: 'meeting:breakouts:closing',\n MEETING_BREAKOUTS_MESSAGE: 'meeting:breakouts:message',\n MEETING_BREAKOUTS_ASK_RETURN_TO_MAIN: 'meeting:breakouts:askReturnToMain',\n MEETING_BREAKOUTS_LEAVE: 'meeting:breakouts:leave',\n MEETING_BREAKOUTS_ASK_FOR_HELP: 'meeting:breakouts:askForHelp',\n MEETING_BREAKOUTS_PRE_ASSIGNMENTS_UPDATE: 'meeting:breakouts:preAssignmentsUpdate',\n MEETING_INTERPRETATION_UPDATE: 'meeting:interpretation:update',\n MEETING_INTERPRETATION_SUPPORT_LANGUAGES_UPDATE: 'meeting:interpretation:supportLanguagesUpdate',\n MEETING_INTERPRETATION_HANDOFF_REQUESTS_ARRIVED: 'meeting:interpretation:handoffRequestsArrived',\n MEMBERS_UPDATE: 'members:update',\n MEMBERS_CLEAR: 'members:clear',\n MEMBERS_CONTENT_UPDATE: 'members:content:update',\n MEMBERS_HOST_UPDATE: 'members:host:update',\n MEMBERS_SELF_UPDATE: 'members:self:update',\n MEETING_RECONNECTION_STARTING: 'meeting:reconnectionStarting',\n MEETING_RECONNECTION_SUCCESS: 'meeting:reconnectionSuccess',\n MEETING_RECONNECTION_FAILURE: 'meeting:reconnectionFailure',\n MEETING_UNLOCKED: 'meeting:unlocked',\n MEETING_LOCKED: 'meeting:locked',\n MEETING_INFO_AVAILABLE: 'meeting:meetingInfoAvailable',\n MEETING_LOG_UPLOAD_SUCCESS: 'meeting:logUpload:success',\n MEETING_LOG_UPLOAD_FAILURE: 'meeting:logUpload:failure',\n MEETING_ACTIONS_UPDATE: 'meeting:actionsUpdate',\n MEETING_STATE_CHANGE: 'meeting:stateChange',\n MEETING_MEETING_CONTAINER_UPDATE: 'meeting:meetingContainer:update',\n MEETING_EMBEDDED_APPS_UPDATE: 'meeting:embeddedApps:update',\n MEDIA_QUALITY: 'media:quality',\n MEETINGS_NETWORK_DISCONNECTED: 'network:disconnected',\n MEETINGS_NETWORK_CONNECTED: 'network:connected',\n MEETING_SELF_LEFT: 'meeting:self:left',\n NETWORK_QUALITY: 'network:quality',\n MEDIA_NEGOTIATED: 'media:negotiated',\n // the following events apply only to multistream media connections\n ACTIVE_SPEAKER_CHANGED: 'media:activeSpeakerChanged',\n REMOTE_VIDEO_SOURCE_COUNT_CHANGED: 'media:remoteVideoSourceCountChanged',\n REMOTE_AUDIO_SOURCE_COUNT_CHANGED: 'media:remoteAudioSourceCountChanged',\n REMOTE_MEDIA_AUDIO_CREATED: 'media:remoteAudio:created',\n REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED: 'media:remoteScreenShareAudio:created',\n REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED: 'media:remoteVideo:layoutChanged',\n // Controls\n MEETING_CONTROLS_MUTE_ON_ENTRY_UPDATED: 'meeting:controls:mute-on-entry:updated',\n MEETING_CONTROLS_SHARE_CONTROL_UPDATED: 'meeting:controls:share-control:updated',\n MEETING_CONTROLS_DISALLOW_UNMUTE_UPDATED: 'meeting:controls:disallow-unmute:updated',\n MEETING_CONTROLS_REACTIONS_UPDATED: 'meeting:controls:reactions:updated',\n MEETING_CONTROLS_VIEW_THE_PARTICIPANTS_LIST_UPDATED:\n 'meeting:controls:view-the-participants-list:updated',\n MEETING_CONTROLS_RAISE_HAND_UPDATED: 'meeting:controls:raise-hand:updated',\n MEETING_CONTROLS_VIDEO_UPDATED: 'meeting:controls:video:updated',\n // Locus URL changed\n MEETING_LOCUS_URL_UPDATE: 'meeting:locus:locusUrl:update',\n MEETING_STREAM_PUBLISH_STATE_CHANGED: 'meeting:streamPublishStateChanged',\n};\n\nexport const EVENT_TYPES = {\n SELF: 'self',\n OTHER: 'other',\n REMOTE: 'remote',\n REMOTE_AUDIO: 'remoteAudio',\n REMOTE_VIDEO: 'remoteVideo',\n REMOTE_SHARE: 'remoteShare',\n REMOTE_SHARE_AUDIO: 'remoteShareAudio',\n ERROR: 'error',\n};\n\n// Handles the reason when meeting gets destroyed\n// host removed you from the meeting\n// You are the host and you left the meeting\n// Meeting actually ended\nexport const MEETING_REMOVED_REASON = {\n SELF_REMOVED: 'SELF_REMOVED', // server or host removed you from the meeting\n FULLSTATE_REMOVED: 'FULLSTATE_REMOVED', // meeting got dropped ? not sure\n MEETING_INACTIVE_TERMINATING: 'MEETING_INACTIVE_TERMINATING', // Meeting got ended or everyone left the meeting\n CLIENT_LEAVE_REQUEST: 'CLIENT_LEAVE_REQUEST', // You triggered leave meeting\n CLIENT_LEAVE_REQUEST_TAB_CLOSED: 'CLIENT_LEAVE_REQUEST_TAB_CLOSED', // You triggered leave meeting, such as closing the browser tab directly\n USER_ENDED_SHARE_STREAMS: 'USER_ENDED_SHARE_STREAMS', // user triggered stop share\n NO_MEETINGS_TO_SYNC: 'NO_MEETINGS_TO_SYNC', // After the syncMeeting no meeting exists\n MEETING_CONNECTION_FAILED: 'MEETING_CONNECTION_FAILED', // meeting failed to connect due to ice failures or firewall issue\n LOCUS_DTO_SYNC_FAILED: 'LOCUS_DTO_SYNC_FAILED', // failed to get any Locus DTO for that meeting\n MISSING_MEETING_INFO: 'MISSING_MEETING_INFO', // meeting info failed to be fetched\n};\n\n// One one one calls ends for the following reasons\n// Partner reject the call or ends the call\n// self cancel or end the ongoing call\nexport const CALL_REMOVED_REASON = {\n CALL_INACTIVE: 'CALL_INACTIVE', // partner and you leave the call\n PARTNER_LEFT: 'PARTNER_LEFT', // partner left the call\n SELF_LEFT: 'SELF_LEFT', // you left/declined the call\n};\n\nexport const SHARE_STOPPED_REASON = {\n SELF_STOPPED: 'SELF_STOPPED',\n MEETING_REJOIN: 'MEETING_REJOIN',\n MEDIA_RECONNECTION: 'MEDIA_RECONNECTION',\n TRACK_ENDED: 'TRACK_ENDED',\n};\n\nexport const EVENTS = {\n SELF_UNADMITTED_GUEST: 'SELF_UNADMITTED_GUEST',\n SELF_ADMITTED_GUEST: 'SELF_ADMITTED_GUEST',\n MEDIA_INACTIVITY: 'MEDIA_INACTIVITY',\n CONVERSATION_URL_UPDATE: 'CONVERSATION_URL_UPDATE',\n DESTROY_MEETING: 'DESTROY_MEETING',\n REQUEST_UPLOAD_LOGS: 'REQUEST_UPLOAD_LOGS',\n REMOTE_RESPONSE: 'REMOTE_RESPONSE',\n // TODO: move all of these to LOCUSINFO.EVENTS\n LOCUS_INFO_UPDATE_PARTICIPANTS: 'LOCUS_INFO_UPDATE_PARTICIPANTS',\n LOCUS_INFO_UPDATE_HOST: 'LOCUS_INFO_UPDATE_HOST',\n LOCUS_INFO_UPDATE_MEDIA_SHARES: 'LOCUS_INFO_UPDATE_MEDIA_SHARES',\n LOCUS_INFO_UPDATE_SELF: 'LOCUS_INFO_UPDATE_SELF',\n LOCUS_INFO_UPDATE_URL: 'LOCUS_INFO_UPDATE_URL',\n LOCUS_INFO_CAN_ASSIGN_HOST: 'LOCUS_INFO_CAN_ASSIGN_HOST',\n DISCONNECT_DUE_TO_INACTIVITY: 'DISCONNECT_DUE_TO_INACTIVITY',\n};\n\nexport const MEDIA_STATE = {\n active: 'active',\n inactive: 'inactive',\n};\n\nexport const ERROR_DICTIONARY = {\n PARAMETER: {\n NAME: 'ParameterError',\n MESSAGE:\n 'The parameters passed to the function, or object properties needed in the function were null, missing where required, or otherwise incorrect.',\n CODE: 0,\n },\n INTENT_TO_JOIN: {\n NAME: 'IntentToJoinError',\n MESSAGE:\n 'The meeting is locked. This is expected behavior. Call #join again with pin and/or moderator option',\n CODE: 1,\n },\n JOIN_MEETING: {\n NAME: 'JoinMeetingError',\n MESSAGE: 'There was an issue joining the meeting, meeting could be in a bad state.',\n CODE: 2,\n },\n RECONNECTION: {\n NAME: 'ReconnectionError',\n MESSAGE:\n 'There was an error in the reconnection flow, the meeting may not reconnect, disconnect and dial again.',\n CODE: 3,\n },\n MEDIA: {\n NAME: 'MediaError',\n MESSAGE: 'There was an error with media, the meeting may not have live audio, video or share.',\n CODE: 4,\n },\n PERMISSION: {\n NAME: 'PermissionError',\n MESSAGE:\n 'Not allowed to execute the function, some properties on server, or local client state do not allow you to complete this action.',\n CODE: 5,\n },\n STATS: {\n NAME: 'StatsError',\n MESSAGE: 'An error occurred with getStats, stats may not continue for this data stream.',\n CODE: 6,\n },\n PASSWORD: {\n NAME: 'PasswordError',\n MESSAGE: 'Password is required, please use verifyPassword()',\n CODE: 7,\n },\n CAPTCHA: {\n NAME: 'CaptchaError',\n MESSAGE: 'Captcha is required.',\n CODE: 8,\n },\n BREAKOUT_EDIT: {\n NAME: 'BreakoutEditLockedError',\n MESSAGE: 'Edit lock token mismatch',\n CODE: 9,\n },\n NO_MEETING_INFO: {\n NAME: 'NoMeetingInfo',\n MESSAGE: 'No meeting info found for the meeting',\n CODE: 10,\n },\n RECLAIM_HOST_ROLE_NOT_SUPPORTED: {\n NAME: 'ReclaimHostRoleNotSupported',\n MESSAGE:\n 'Non converged meetings, PSTN or SIP users in converged meetings are not supported currently.',\n CODE: 11,\n },\n RECLAIM_HOST_ROLE_NOT_ALLOWED: {\n NAME: 'ReclaimHostRoleNotAllowed',\n MESSAGE:\n 'Reclaim Host Role Not Allowed For Other Participants. Participants cannot claim host role in PMR meeting, space instant meeting or escalated instant meeting. However, the original host still can reclaim host role when it manually makes another participant to be the host.',\n CODE: 12,\n },\n RECLAIM_HOST_ROLE_EMPTY_OR_WRONG_KEY: {\n NAME: 'ReclaimHostRoleEmptyOrWrongKey',\n MESSAGE:\n 'Host Key Not Specified Or Matched. The original host can reclaim the host role without entering the host key. However, any other person who claims the host role must enter the host key to get it.',\n CODE: 13,\n },\n RECLAIM_HOST_ROLE_IS_ALREADY_HOST: {\n NAME: 'ReclaimHostRoleIsAlreadyHost',\n MESSAGE:\n 'Participant Having Host Role Already. Participant who sends request to reclaim host role has already a host role.',\n CODE: 14,\n },\n};\n\nexport const FLOOR_ACTION = {\n GRANTED: 'GRANTED',\n RELEASED: 'RELEASED',\n ACCEPTED: 'ACCEPTED',\n};\n\nexport const FULL_STATE = {\n INITIALIZING: 'INITIALIZING',\n INACTIVE: 'INACTIVE',\n ACTIVE: 'ACTIVE',\n TERMINATING: 'TERMINATING',\n UNKNOWN: 'UNKNOWN',\n};\n\nexport const HTTP_VERBS = {\n PUT: 'PUT',\n POST: 'POST',\n GET: 'GET',\n PATCH: 'PATCH',\n DELETE: 'DELETE',\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/iceGatheringState\nexport const ICE_GATHERING_STATE = {\n NEW: 'new',\n GATHERING: 'gathering',\n COMPLETE: 'complete',\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/iceConnectionState\nexport const ICE_STATE = {\n CHECKING: 'checking',\n CONNECTED: 'connected',\n CLOSED: 'closed',\n COMPLETED: 'completed',\n FAILED: 'failed',\n DISCONNECTED: 'disconnected',\n};\n\nexport const CONNECTION_STATE = {\n NEW: 'new',\n CONNECTING: 'connecting',\n CONNECTED: 'connected',\n CLOSED: 'closed',\n FAILED: 'failed',\n DISCONNECTED: 'disconnected',\n};\n\nexport const LOCUS = {\n STATE: {\n INACTIVE: 'INACTIVE',\n ENDED: 'ENDED',\n INITIALIZING: 'INITIALIZING',\n },\n SEQUENCE: {\n UN_DEF: 'undef',\n EMPTY: 'empty',\n DEF: 'def',\n NA: 'na',\n RANGE_START: 'rangeStart',\n RANGE_END: 'rangeEnd',\n },\n SYNCDEBUG: 'sync_debug',\n};\n\nexport const ANNOTATION = {\n ANNOTATION_ON_SHARE_SUPPORTED: 'ANNOTATION_ON_SHARE_SUPPORTED',\n};\nexport const BREAKOUTS = {\n STATUS: {\n CLOSING: 'CLOSING',\n CLOSED: 'CLOSED',\n PENDING: 'PENDING',\n OPEN: 'OPEN',\n },\n EVENTS: {\n BREAKOUTS_CLOSING: 'BREAKOUTS_CLOSING',\n MESSAGE: 'MESSAGE',\n MEMBERS_UPDATE: 'MEMBERS_UPDATE',\n ASK_RETURN_TO_MAIN: 'ASK_RETURN_TO_MAIN',\n LEAVE_BREAKOUT: 'LEAVE_BREAKOUT',\n ASK_FOR_HELP: 'ASK_FOR_HELP',\n PRE_ASSIGNMENTS_UPDATE: 'PRE_ASSIGNMENTS_UPDATE',\n },\n SESSION_TYPES: {\n MAIN: 'MAIN',\n BREAKOUT: 'BREAKOUT',\n },\n SESSION_STATES: {\n ACTIVE: 'active',\n ASSIGNED: 'assigned',\n ALLOWED: 'allowed',\n ASSIGNED_CURRENT: 'assignedCurrent',\n REQUESTED: 'requested',\n },\n BREAKOUTS_SUPPORTED: 'BREAKOUTS_SUPPORTED',\n ACTION: {\n START: 'START',\n CLOSE: 'CLOSE',\n DELETE: 'DELETE',\n },\n ERROR_CODE: {\n EDIT_LOCK_TOKEN_MISMATCH: 201409024,\n EDIT_NOT_AUTHORIZED: 201403007,\n },\n EDIT_LOCK_STATUS: {\n LOCKED: 'LOCKED',\n NOT_LOCKED: 'NOT_LOCKED',\n UNKNOWN: 'UNKNOWN',\n },\n DEFAULT_TTL: 30,\n};\n\nexport const INTERPRETATION = {\n EVENTS: {\n SUPPORT_LANGUAGES_UPDATE: 'SUPPORT_LANGUAGES_UPDATE',\n HANDOFF_REQUESTS_ARRIVED: 'HANDOFF_REQUESTS_ARRIVED',\n },\n ACTION_TYPE: {\n OFFERED: 'OFFERED',\n ACCEPTED: 'ACCEPTED',\n REQUESTED: 'REQUESTED',\n DECLINED: 'DECLINED',\n },\n RESOURCE_TYPE: 'SiHandover',\n};\n\nexport const LOCUSINFO = {\n EVENTS: {\n CONTROLS_MEETING_LAYOUT_UPDATED: 'CONTROLS_MEETING_LAYOUT_UPDATED',\n CONTROLS_RECORDING_UPDATED: 'CONTROLS_RECORDING_UPDATED',\n CONTROLS_MEETING_TRANSCRIBE_UPDATED: 'CONTROLS_MEETING_TRANSCRIBE_UPDATED',\n CONTROLS_MEETING_BREAKOUT_UPDATED: 'CONTROLS_MEETING_BREAKOUT_UPDATED',\n CONTROLS_MEETING_CONTAINER_UPDATED: 'CONTROLS_MEETING_CONTAINER_UPDATED',\n CONTROLS_MEETING_INTERPRETATION_UPDATED: 'CONTROLS_MEETING_INTERPRETATION_UPDATED',\n CONTROLS_ENTRY_EXIT_TONE_UPDATED: 'CONTROLS_ENTRY_EXIT_TONE_UPDATED',\n CONTROLS_JOIN_BREAKOUT_FROM_MAIN: 'CONTROLS_JOIN_BREAKOUT_FROM_MAIN',\n CONTROLS_MUTE_ON_ENTRY_CHANGED: 'CONTROLS_MUTE_ON_ENTRY_CHANGED',\n CONTROLS_SHARE_CONTROL_CHANGED: 'CONTROLS_SHARE_CONTROL_CHANGED',\n CONTROLS_DISALLOW_UNMUTE_CHANGED: 'CONTROLS_DISALLOW_UNMUTE_CHANGED',\n CONTROLS_REACTIONS_CHANGED: 'CONTROLS_REACTIONS_CHANGED',\n CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED: 'CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED',\n CONTROLS_RAISE_HAND_CHANGED: 'CONTROLS_RAISE_HAND_CHANGED',\n CONTROLS_VIDEO_CHANGED: 'CONTROLS_VIDEO_CHANGED',\n SELF_UNADMITTED_GUEST: 'SELF_UNADMITTED_GUEST',\n SELF_ADMITTED_GUEST: 'SELF_ADMITTED_GUEST',\n SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED: 'SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED',\n SELF_REMOTE_MUTE_STATUS_UPDATED: 'SELF_REMOTE_MUTE_STATUS_UPDATED',\n LOCAL_UNMUTE_REQUESTED: 'LOCAL_UNMUTE_REQUESTED',\n LOCAL_UNMUTE_REQUIRED: 'LOCAL_UNMUTE_REQUIRED',\n SELF_MODERATOR_CHANGED: 'SELF_MODERATOR_CHANGED',\n SELF_ROLES_CHANGED: 'SELF_ROLES_CHANGED',\n MEETING_UPDATE: 'MEETING_UPDATE',\n MEDIA_STATUS_CHANGE: 'MEDIA_STATUS_CHANGE',\n FULL_STATE_TYPE_UPDATE: 'FULL_STATE_TYPE_UPDATE',\n FULL_STATE_MEETING_STATE_CHANGE: 'FULL_STATE_MEETING_STATE_CHANGE',\n MEETING_STATE_CHANGE_TO_ACTIVE: 'MEETING_STATE_CHANGE_TO_ACTIVE',\n MEETING_INFO_UPDATED: 'MEETING_INFO_UPDATED',\n MEETING_LOCKED: 'MEETING_LOCKED',\n MEETING_UNLOCKED: 'MEETING_UNLOCKED',\n SELF_OBSERVING: 'SELF_OBSERVING',\n DISCONNECT_DUE_TO_INACTIVITY: 'DISCONNECT_DUE_TO_INACTIVITY',\n EMBEDDED_APPS_UPDATED: 'EMBEDDED_APPS_UPDATED',\n SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE: 'SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE',\n SELF_IS_SHARING_BLOCKED_CHANGE: 'SELF_IS_SHARING_BLOCKED_CHANGE',\n SELF_MEETING_BREAKOUTS_CHANGED: 'SELF_MEETING_BREAKOUTS_CHANGED',\n SELF_MEETING_INTERPRETATION_CHANGED: 'SELF_MEETING_INTERPRETATION_CHANGED',\n MEDIA_INACTIVITY: 'MEDIA_INACTIVITY',\n LINKS_SERVICES: 'LINKS_SERVICES',\n },\n};\n\nexport const LOCUSEVENT = {\n LOCUS_MERCURY: 'event:locus',\n\n // update the tp unit status\n CONTROLS_UPDATED: 'locus.controls_updated',\n\n // delta events\n DIFFERENCE: 'locus.difference',\n\n // Breakout sessions\n BREAKOUT_ROSTER: 'breakout.roster',\n\n // screen sharing\n FLOOR_GRANTED: 'locus.floor_granted',\n FLOOR_RELEASED: 'locus.floor_released',\n\n // Roap\n MESSAGE_ROAP: 'locus.message.roap',\n\n // Join events\n PARTICIPANT_JOIN: 'locus.participant_joined',\n PARTICIPANT_LEFT: 'locus.participant_left',\n PARTICIPANT_DECLINED: 'locus.participant_declined',\n PARTICIPANT_UPDATED: 'locus.participant_updated',\n PARTICIPANT_CONTROLS_UPDATED: 'locus.participant_controls_updated',\n PARTICIPANT_ROLES_UPDATED: 'locus.participant_roles_updated',\n PARTICIPANT_AUDIO_MUTED: 'locus.participant_audio_muted',\n PARTICIPANT_AUDIO_UNMUTED: 'locus.participant_audio_unmuted',\n PARTICIPANT_VIDEO_MUTED: 'locus.participant_video_muted',\n PARTICIPANT_VIDEO_UNMUTED: 'locus.participant_video_unmuted',\n\n RECORDING_STARTED: 'locus.recording_started',\n RECORDING_START_FAILED: 'locus.recording_start_failed',\n RECORDING_STOPPED: 'locus.recording_stopped',\n\n SELF_CHANGED: 'locus.self_changed',\n};\n\nexport const MEDIA_TRACK_CONSTRAINT = {\n CURSOR: {\n // The mouse cursor should always be captured in the generated stream.\n AWLAYS: 'always',\n // The cursor should only be visible while moving, then removed.\n MOTION: 'motion',\n // The cursor should never be visible in the generated stream.\n NEVER: 'never',\n },\n};\n\nexport const MEETING_ERRORS = {\n METRICS_NOT_SERVER_OR_CLIENT_EXCEPTION: 'METRICS_NOT_SERVER_OR_CLIENT_EXCEPTION',\n\n BIDIRECTIONAL_ROSTER_NOT_ALLOWED: 'BIDIRECTIONAL_ROSTER_NOT_ALLOWED',\n INVALID_LOCUS_URL: 'INVALID_LOCUS_URL',\n ARGUMENT_NULL_OR_EMPTY: 'ARGUMENT_NULL_OR_EMPTY',\n INVALID_USER: 'INVALID_USER',\n INVALID_PHONE_NUMBER_OR_COUNTRY_CODE: 'INVALID_PHONE_NUMBER_OR_COUNTRY_CODE',\n EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE: 'EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE',\n PHONE_NUMBER_INVALID_COUNTRY_CODE: 'PHONE_NUMBER_INVALID_COUNTRY_CODE',\n PHONE_NUMBER_NOT_A_NUMBER: 'PHONE_NUMBER_NOT_A_NUMBER',\n PHONE_NUMBER_TOO_SHORT_AFTER_IDD: 'PHONE_NUMBER_TOO_SHORT_AFTER_IDD',\n PHONE_NUMBER_TOO_SHORT_NSN: 'PHONE_NUMBER_TOO_SHORT_NSN',\n PHONE_NUMBER_TOO_LONG: 'PHONE_NUMBER_TOO_LONG',\n INVALID_DIALABLE_KEY: 'INVALID_DIALABLE_KEY',\n INVALID_MEETING_LINK: 'INVALID_MEETING_LINK',\n INVALID_SINCE_OR_SEQUENCE_HASH_IN_REQUEST: 'INVALID_SINCE_OR_SEQUENCE_HASH_IN_REQUEST',\n INVALID_LOCUS_ID: 'INVALID_LOCUS_ID',\n EMPTY_SCHEDULED_MEETING_START_TIME: 'EMPTY_SCHEDULED_MEETING_START_TIME',\n INVALID_SCHEDULED_MEETING_DURATION_MINUTES: 'INVALID_SCHEDULED_MEETING_DURATION_MINUTES',\n INVALID_SCHEDULED_MEETING_REMINDER_DURATION_MINUTES:\n 'INVALID_SCHEDULED_MEETING_REMINDER_DURATION_MINUTES',\n EMPTY_SCHEDULED_MEETING_ORGANIZER: 'EMPTY_SCHEDULED_MEETING_ORGANIZER',\n INVALID_MEETING_ID_FORMAT: 'INVALID_MEETING_ID_FORMAT',\n INVALID_SIP_URL_FORMAT: 'INVALID_SIP_URL_FORMAT',\n EMPTY_INVITEE_RECORD: 'EMPTY_INVITEE_RECORD',\n EMPTY_INVITEE_ADDRESS: 'EMPTY_INVITEE_ADDRESS',\n DESKPHONE_NOTHING_DIALABLE_FOUND: 'DESKPHONE_NOTHING_DIALABLE_FOUND',\n INVALID_INVITEE_ADDRESS: 'INVALID_INVITEE_ADDRESS',\n INVALID_ATTENDEE_ID: 'INVALID_ATTENDEE_ID',\n INVALID_IN_LOBBY: 'INVALID_IN_LOBBY',\n MISSING_REQUESTING_PARTICIPANT_ID: 'MISSING_REQUESTING_PARTICIPANT_ID',\n INVALID_REQUESTING_PARTICIPANT_ID: 'INVALID_REQUESTING_PARTICIPANT_ID',\n SUPPLEMENTARY_USER_INFO_NOT_FOUND: 'SUPPLEMENTARY_USER_INFO_NOT_FOUND',\n\n UNAUTHORIZED: 'UNAUTHORIZED',\n REMOVED_PARTICIPANT: 'REMOVED_PARTICIPANT',\n\n FREE_USER_MAX_PARTICIPANTS_EXCEEDED: 'FREE_USER_MAX_PARTICIPANTS_EXCEEDED',\n PAID_USER_MAX_PARTICIPANTS_EXCEEDED: 'PAID_USER_MAX_PARTICIPANTS_EXCEEDED',\n SERVICE_MAX_PARTICIPANTS_EXCEEDED: 'SERVICE_MAX_PARTICIPANTS_EXCEEDED',\n INACTIVE: 'INACTIVE',\n ONE_ON_ONE_TO_SELF_NOT_ALLOWED: 'ONE_ON_ONE_TO_SELF_NOT_ALLOWED',\n JOIN_RESTRICTED_USER: 'JOIN_RESTRICTED_USER',\n GET_RESTRICTED_USER: 'GET_RESTRICTED_USER',\n JOIN_RESTRICTED_USER_NOT_IN_ROOM: 'JOIN_RESTRICTED_USER_NOT_IN_ROOM',\n CREATE_MEDIA_RESTRICTED_USER: 'CREATE_MEDIA_RESTRICTED_USER',\n DUPLICATE_RESOURCE_CREATION_REQUEST: 'DUPLICATE_RESOURCE_CREATION_REQUEST',\n MEETING_NOT_FOUND: 'MEETING_NOT_FOUND',\n NOT_WEBEX_SITE: 'NOT_WEBEX_SITE',\n INVALID_SCHEDULED_MEETING_ORGANIZER: 'INVALID_SCHEDULED_MEETING_ORGANIZER',\n FREE_USER_MAX_PARTICIPANTS_JOINED_EXCEEDED: 'FREE_USER_MAX_PARTICIPANTS_JOINED_EXCEEDED',\n PAID_USER_MAX_PARTICIPANTS_JOINED_EXCEEDED: 'PAID_USER_MAX_PARTICIPANTS_JOINED_EXCEEDED',\n SERVICE_MAX_PARTICIPANTS_ROSTER_EXCEEDED: 'SERVICE_MAX_PARTICIPANTS_ROSTER_EXCEEDED',\n SERVICE_INITIAL_PARTICIPANTS_ROSTER_EXCEEDED: 'SERVICE_INITIAL_PARTICIPANTS_ROSTER_EXCEEDED',\n RESOURCE_GUEST_FORBIDDEN: 'RESOURCE_GUEST_FORBIDDEN',\n SERVICE_NO_MACHINE_OR_SERVICE_ACCOUNT: 'SERVICE_NO_MACHINE_OR_SERVICE_ACCOUNT',\n MODERATOR_ROLE_REMOVAL_NOT_ALLOWED: 'MODERATOR_ROLE_REMOVAL_NOT_ALLOWED',\n RECORDING_CONTROL_NOT_SUPPORTED: 'RECORDING_CONTROL_NOT_SUPPORTED',\n HOST_PIN_LOCKED: 'HOST_PIN_LOCKED',\n INVALID_HOST_PIN: 'INVALID_HOST_PIN',\n REQUESTING_PARTICIPANT_NOT_MODERATOR: 'REQUESTING_PARTICIPANT_NOT_MODERATOR',\n\n CONVERSATION_NOT_FOUND: 'CONVERSATION_NOT_FOUND',\n MEETING_LINK_NOT_FOUND: 'MEETING_LINK_NOT_FOUND',\n MEETING_INFO_NOT_FOUND: 'MEETING_INFO_NOT_FOUND',\n SCHEDULED_MEETING_NOT_FOUND: 'SCHEDULED_MEETING_NOT_FOUND',\n\n RECORDING_NOT_STARTED: 'RECORDING_NOT_STARTED',\n RECORDING_NOT_ENABLED: 'RECORDING_NOT_ENABLED',\n RECORDING_USER_STORAGE_FULL: 'RECORDING_USER_STORAGE_FULL',\n RECORDING_SITE_STORAGE_FULL: 'RECORDING_SITE_STORAGE_FULL',\n\n NO_SCHEDULED_MEETING: 'NO_SCHEDULED_MEETING',\n MEETING_FULL_UPDATE_NOT_ALLOWED: 'MEETING_FULL_UPDATE_NOT_ALLOWED',\n MODERATOR_ROLE_REMOVAL_NOT_VALID: 'MODERATOR_ROLE_REMOVAL_NOT_VALID',\n MODERATOR_ROLE_ADDITION_NOT_VALID: 'MODERATOR_ROLE_ADDITION_NOT_VALID',\n INVALID_CALL_START_TIME: 'INVALID_CALL_START_TIME',\n MEETING_STARTED_UPDATE_NOT_ALLOWED: 'MEETING_STARTED_UPDATE_NOT_ALLOWED',\n\n EXCEEDED_MAX_JOINED_PARTICIPANTS: 'EXCEEDED_MAX_JOINED_PARTICIPANTS',\n EXCEEDED_SERVICE_MAX_PARTICIPANTS: 'EXCEEDED_SERVICE_MAX_PARTICIPANTS',\n MEETING_IS_LOCKED: 'MEETING_IS_LOCKED',\n MEETING_IS_TERMINATING: 'MEETING_IS_TERMINATING',\n MEETING_REQUIRE_MODERATOR_PIN_INTENT: 'MEETING_REQUIRE_MODERATOR_PIN_INTENT',\n MEETING_REQUIRE_MODERATOR_PIN: 'MEETING_REQUIRE_MODERATOR_PIN',\n MEETING_REQUIRE_MODERATOR_ROLE: 'MEETING_REQUIRE_MODERATOR_ROLE',\n PMR_ACCOUNT_SUSPENDED: 'PMR_ACCOUNT_SUSPENDED',\n PMR_ACCOUNT_LOCKED: 'PMR_ACCOUNT_LOCKED',\n INVALID_JOIN_TIME: 'INVALID_JOIN_TIME',\n REQUIRES_WEBEX_LOGIN: 'REQUIRES_WEBEX_LOGIN',\n\n TOO_MANY_REQUESTS: 'TOO_MANY_REQUESTS',\n\n UNABLE_TO_LOOK_UP_DEVICE_INFORMATION: 'UNABLE_TO_LOOK_UP_DEVICE_INFORMATION',\n UNABLE_TO_LOOK_UP_CONVERSATION: 'UNABLE_TO_LOOK_UP_CONVERSATION',\n UNABLE_TO_LOOK_UP_CI_USER: 'UNABLE_TO_LOOK_UP_CI_USER',\n UNABLE_TO_CREATE_CONFLUENCE: 'UNABLE_TO_CREATE_CONFLUENCE',\n\n SERVICE_UNAVAILABLE: 'SERVICE_UNAVAILABLE',\n\n SOCKET_TIMEOUT: 'SOCKET_TIMEOUT',\n NO_HTTP_RESPONSE: 'NO_HTTP_RESPONSE',\n};\n\nexport const MEETING_END_REASON = {\n INACTIVE: 'INACTIVE',\n MEDIA_RELEASED: 'MEDIA_RELEASED',\n};\n\nexport enum SELF_POLICY {\n ENFORCE_VIRTUAL_BACKGROUND = 'enforceVirtualBackground',\n SUPPORT_LOCAL_RECORD = 'supportLocalRecord',\n SUPPORT_NETWORK_BASED_RECORD = 'supportNetworkBasedRecord',\n SUPPORT_REALTIME_CLOSE_CAPTION = 'supportRealtimeCloseCaption',\n SUPPORT_CHAT = 'supportChat',\n SUPPORT_DESKTOP_SHARE_REMOTE = 'supportDesktopShareRemote',\n SUPPORT_DESKTOP_SHARE = 'supportDesktopShare',\n SUPPORT_WHITEBOARD = 'supportWhiteboard',\n SUPPORT_FILE_TRANSFER = 'supportFileTransfer',\n SUPPORT_APP_SHARE = 'supportAppShare',\n SUPPORT_CAMERA_SHARE = 'supportCameraShare',\n SUPPORT_FILE_SHARE = 'supportFileShare',\n SUPPORT_ANNOTATION = 'supportAnnotation',\n SUPPORT_BROADCAST_MESSAGE = 'supportBroadcastMessage',\n SUPPORT_VIDEO = 'supportVideo',\n SUPPORT_HQV = 'supportHQV',\n SUPPORT_HDV = 'supportHDV',\n SUPPORT_PARTICIPANT_LIST = 'supportParticipantList',\n SUPPORT_VOIP = 'supportVoIP',\n}\n\nexport const DISPLAY_HINTS = {\n ADD_GUEST: 'ADD_GUEST',\n ROSTER_WAITING_TO_JOIN: 'ROSTER_WAITING_TO_JOIN',\n RECORDING_CONTROL_START: 'RECORDING_CONTROL_START',\n RECORDING_CONTROL_PAUSE: 'RECORDING_CONTROL_PAUSE',\n RECORDING_CONTROL_STOP: 'RECORDING_CONTROL_STOP',\n RECORDING_CONTROL_RESUME: 'RECORDING_CONTROL_RESUME',\n LOCK_CONTROL_UNLOCK: 'LOCK_CONTROL_UNLOCK',\n LOCK_CONTROL_LOCK: 'LOCK_CONTROL_LOCK',\n LOCK_STATUS_LOCKED: 'LOCK_STATUS_LOCKED',\n LOCK_STATUS_UNLOCKED: 'LOCK_STATUS_UNLOCKED',\n RAISE_HAND: 'RAISE_HAND',\n LOWER_ALL_HANDS: 'LOWER_ALL_HANDS',\n LOWER_SOMEONE_ELSES_HAND: 'LOWER_SOMEONE_ELSES_HAND',\n LEAVE_TRANSFER_HOST_END_MEETING: 'LEAVE_TRANSFER_HOST_END_MEETING',\n LEAVE_END_MEETING: 'LEAVE_END_MEETING',\n CAPTION_START: 'CAPTION_START',\n CAPTION_STATUS_ACTIVE: 'CAPTION_STATUS_ACTIVE',\n DISPLAY_REAL_TIME_TRANSLATION: 'DISPLAY_REAL_TIME_TRANSLATION',\n ENABLE_CAPTION_PANEL: 'ENABLE_CAPTION_PANEL',\n DISPLAY_NON_ENGLISH_ASR: 'DISPLAY_NON_ENGLISH_ASR',\n TRANSCRIPTION_CONTROL_START: 'TRANSCRIPTION_CONTROL_START',\n TRANSCRIPTION_CONTROL_STOP: 'TRANSCRIPTION_CONTROL_STOP',\n SAVE_TRANSCRIPTS_ENABLED: 'SAVE_TRANSCRIPTS_ENABLED',\n WEBEX_ASSISTANT_STATUS_ACTIVE: 'WEBEX_ASSISTANT_STATUS_ACTIVE',\n WAITING_FOR_OTHERS: 'WAITING_FOR_OTHERS',\n ENABLE_REACTIONS: 'ENABLE_REACTIONS',\n DISABLE_REACTIONS: 'DISABLE_REACTIONS',\n REACTIONS_ACTIVE: 'REACTIONS_ACTIVE',\n REACTIONS_INACTIVE: 'REACTIONS_INACTIVE',\n SHARE_CONTROL: 'SHARE_CONTROL',\n ENABLE_MUTE_ON_ENTRY: 'ENABLE_MUTE_ON_ENTRY',\n ENABLE_SHOW_DISPLAY_NAME: 'ENABLE_SHOW_DISPLAY_NAME',\n DISABLE_SHOW_DISPLAY_NAME: 'DISABLE_SHOW_DISPLAY_NAME',\n DISABLE_MUTE_ON_ENTRY: 'DISABLE_MUTE_ON_ENTRY',\n ENABLE_HARD_MUTE: 'ENABLE_HARD_MUTE',\n DISABLE_HARD_MUTE: 'DISABLE_HARD_MUTE',\n MUTE_ALL: 'MUTE_ALL',\n UNMUTE_ALL: 'UNMUTE_ALL',\n PRESENTER_CONTROL: 'PRESENTER_CONTROL',\n CAN_RENAME_SELF_AND_OBSERVED: 'CAN_RENAME_SELF_AND_OBSERVED',\n CAN_RENAME_OTHERS: 'CAN_RENAME_OTHERS',\n\n // breakout session\n BREAKOUT_MANAGEMENT: 'BREAKOUT_MANAGEMENT',\n BROADCAST_MESSAGE_TO_BREAKOUT: 'BROADCAST_MESSAGE_TO_BREAKOUT',\n UCF_SUPPRESS_BREAKOUTS_SUPPORT: 'UCF_SUPPRESS_BREAKOUTS_SUPPORT',\n DISABLE_ASK_FOR_HELP: 'DISABLE_ASK_FOR_HELP',\n DISABLE_BREAKOUT_PREASSIGNMENTS: 'DISABLE_BREAKOUT_PREASSIGNMENTS',\n DISABLE_LOBBY_TO_BREAKOUT: 'DISABLE_LOBBY_TO_BREAKOUT',\n\n // participants list\n DISABLE_VIEW_THE_PARTICIPANT_LIST: 'DISABLE_VIEW_THE_PARTICIPANT_LIST',\n ENABLE_VIEW_THE_PARTICIPANT_LIST: 'ENABLE_VIEW_THE_PARTICIPANT_LIST',\n\n // raise hand\n DISABLE_RAISE_HAND: 'DISABLE_RAISE_HAND',\n ENABLE_RAISE_HAND: 'ENABLE_RAISE_HAND',\n\n // video\n DISABLE_VIDEO: 'DISABLE_VIDEO',\n ENABLE_VIDEO: 'ENABLE_VIDEO',\n\n // Sharing\n SHARE_FILE: 'SHARE_FILE',\n SHARE_APPLICATION: 'SHARE_APPLICATION',\n SHARE_CAMERA: 'SHARE_CAMERA',\n SHARE_DESKTOP: 'SHARE_DESKTOP',\n SHARE_CONTENT: 'SHARE_CONTENT',\n SHARE_WHITEBOARD: 'SHARE_WHITEBOARD',\n\n // Voip (audio/video)\n VOIP_IS_ENABLED: 'VOIP_IS_ENABLED',\n};\n\nexport const INTERSTITIAL_DISPLAY_HINTS = [DISPLAY_HINTS.VOIP_IS_ENABLED];\n\nexport const SELF_ROLES = {\n COHOST: 'COHOST',\n MODERATOR: 'MODERATOR',\n ATTENDEE: 'ATTENDEE',\n};\n\nexport const MEETING_STATE = {\n STATES: {\n IDLE: 'IDLE',\n INCOMING: 'INCOMING',\n DIALING: 'DIALING',\n NOTIFIED: 'NOTIFIED',\n DECLINED: 'DECLINED',\n ON_GOING: 'ON_GOING',\n JOINED: 'JOINED',\n TERMINATING: 'TERMINATING',\n LEFT: 'LEFT',\n ENDED: 'ENDED',\n ERROR: 'ERROR',\n },\n};\n\nexport const MEETING_STATE_MACHINE = {\n TRANSITIONS: {\n FAIL: 'fail',\n RING: 'ring',\n REMOTE: 'remote',\n JOIN: 'join',\n DECLINE: 'decline',\n LEAVE: 'leave',\n END: 'end',\n RESET: 'reset',\n },\n STATES: {\n ERROR: 'ERROR',\n IDLE: 'IDLE',\n ENDED: 'ENDED',\n DECLINED: 'DECLINED',\n RINGING: 'RINGING',\n JOINED: 'JOINED',\n ANSWERED: 'ANSWERED',\n },\n};\n\nexport const MEETING_AUDIO_STATE_MACHINE = {\n TRANSITIONS: {\n TOGGLE: 'toggle',\n INIT: 'init',\n },\n STATES: {\n MUTE_SELF: 'SELF_AUDIO_OFF',\n UNMUTE_SELF: 'SELF_AUDIO_ON',\n },\n};\n\nexport const MEETING_VIDEO_STATE_MACHINE = {\n TRANSITIONS: {\n TOGGLE: 'toggle',\n INIT: 'init',\n },\n STATES: {\n MUTE_SELF: 'SELF_VIDEO_OFF',\n UNMUTE_SELF: 'SELF_VIDEO_ON',\n },\n};\n\nexport const PEER_CONNECTION_STATE = {\n CLOSED: 'closed',\n FAILED: 'failed',\n};\n\nexport const RECONNECTION = {\n STATE: {\n IN_PROGRESS: 'IN_PROGRESS',\n COMPLETE: 'COMPLETE',\n FAILURE: 'FAILURE',\n DEFAULT_TRY_COUNT: 0,\n DEFAULT_STATUS: '',\n },\n};\n\nexport const RESOURCE = {\n CLUSTERS: 'clusters',\n REACHABILITY: 'reachability',\n LOCI: 'loci',\n};\n\nexport const REACHABILITY = {\n localStorageResult: 'reachability.result',\n localStorageJoinCookie: 'reachability.joinCookie',\n namespace: 'Reachability',\n};\n\nexport const ROAP = {\n ROAP_TYPES: {\n OFFER: 'OFFER',\n ANSWER: 'ANSWER',\n OK: 'OK',\n ERROR: 'ERROR',\n TURN_DISCOVERY_REQUEST: 'TURN_DISCOVERY_REQUEST',\n TURN_DISCOVERY_RESPONSE: 'TURN_DISCOVERY_RESPONSE',\n },\n ROAP_MERCURY: 'event:locus.message.roap',\n ROAP_VERSION: '2',\n};\n\nexport const MediaContent = {\n main: 'main',\n slides: 'slides',\n};\n\nexport const NETWORK_STATUS = {\n DISCONNECTED: 'DISCONNECTED',\n RECONNECTING: 'RECONNECTING',\n CONNECTED: 'CONNECTED',\n};\n\nexport const NETWORK_TYPE = {\n VPN: 'vpn',\n UNKNOWN: 'unknown',\n WIFI: 'wifi',\n ETHERNET: 'ethernet',\n};\n\nexport const STATS = {\n SEND_DIRECTION: 'send',\n RECEIVE_DIRECTION: 'recv',\n REMOTE: 'remote',\n LOCAL: 'local',\n};\n\nexport const MQA_STATS = {\n MQA_SIZE: 120, // MQA is done on 60 second intervals by server def, add a buffer for missed events\n CA_TYPE: 'MQA',\n DEFAULT_IP: '0.0.0.0',\n DEFAULT_SHARE_SENDER_STATS: {\n common: {\n common: {\n direction: 'sendrecv', // TODO: parse from SDP and save globally\n isMain: false, // always true for share sender\n mariFecEnabled: false, // unavailable\n mariQosEnabled: false, // unavailable\n multistreamEnabled: false, // unavailable\n },\n availableBitrate: 0,\n dtlsBitrate: 0, // unavailable\n dtlsPackets: 0, // unavailable\n fecBitrate: 0, // unavailable\n fecPackets: 0, // unavailable\n maxBitrate: 0, // unavailable\n queueDelay: 0, // unavailable\n remoteJitter: 0, // unavailable\n remoteLossRate: 0,\n remoteReceiveRate: 0, // unavailable\n roundTripTime: 0,\n rtcpBitrate: 0, // unavailable\n rtcpPackets: 0, // unavailable\n rtpBitrate: 0, // unavailable\n rtpPackets: 0,\n stunBitrate: 0, // unavailable\n stunPackets: 0, // unavailable\n transportType: 'UDP', // TODO: parse the transport type from the SDP and save globally\n },\n streams: [\n {\n common: {\n codec: 'H264', // TODO: parse the codec from the SDP and save globally\n duplicateSsci: 0, // unavailable\n requestedBitrate: 0, // unavailable\n requestedFrames: 0, // unavailable\n rtpPackets: 0,\n ssci: 0, // unavailable\n transmittedBitrate: 0,\n transmittedFrameRate: 0,\n },\n h264CodecProfile: 'BP', // TODO: parse the profile level from h264 in the SDP and save globally\n localConfigurationChanges: 0, // unavailable\n remoteConfigurationChanges: 0, // unavailable\n requestedFrameSize: 0, // unavailable\n requestedKeyFrames: 0, // unavailable\n transmittedFrameSize: 0, // unavailable\n transmittedHeight: 0,\n transmittedKeyFrames: 0,\n transmittedWidth: 0,\n },\n ],\n },\n intervalMetadata: {\n memoryUsage: {\n cpuBitWidth: 0,\n mainProcessMaximumMemoryBytes: 0,\n osBitWidth: 0,\n processAverageMemoryUsage: 0,\n processMaximumMemoryBytes: 0,\n processMaximumMemoryUsage: 0,\n systemAverageMemoryUsage: 0,\n systemMaximumMemoryUsage: 0,\n },\n peerReflexiveIP: 'NULL', // TODO: save after ice trickling completes and use as a global variable\n processAverageCPU: 0,\n processMaximumCPU: 0,\n systemAverageCPU: 0,\n systemMaximumCPU: 0,\n },\n};\n\n// ****** MEDIA QUALITY CONSTANTS ****** //\n\n// these values must match allowed values of RemoteQualityLevel from the @webex/internal-media-core lib\nexport const QUALITY_LEVELS = {\n LOW: 'LOW',\n MEDIUM: 'MEDIUM',\n HIGH: 'HIGH',\n '360p': '360p',\n '480p': '480p',\n '720p': '720p',\n '1080p': '1080p',\n};\n\nexport const AVAILABLE_RESOLUTIONS = {\n '360p': {\n video: {\n width: {\n max: 640,\n ideal: 640,\n },\n height: {\n max: 360,\n ideal: 360,\n },\n },\n },\n '480p': {\n video: {\n width: {\n max: 640,\n ideal: 640,\n },\n height: {\n max: 480,\n ideal: 480,\n },\n },\n },\n '720p': {\n video: {\n width: {\n max: 1280,\n ideal: 1280,\n },\n height: {\n max: 720,\n ideal: 720,\n },\n },\n },\n '1080p': {\n video: {\n width: {\n max: 1920,\n ideal: 1920,\n },\n height: {\n max: 1080,\n ideal: 1080,\n },\n },\n },\n};\n\n/*\n * mqa Interval for sending stats metrics\n */\n\nexport const MQA_INTEVAL = 60000; // mqa analyzer interval its fixed to 60000\n\nexport const MEDIA_DEVICES = {\n MICROPHONE: 'microphone',\n SPEAKER: 'speaker',\n CAMERA: 'camera',\n};\n\nexport const PSTN_STATUS = {\n JOINED: 'JOINED', // we have provisioned a pstn device, which can be used to connect\n CONNECTED: 'CONNECTED', // user is connected to audio with pstn device\n LEFT: 'LEFT', // user has disconnected from the pstn device\n TRANSFERRING: 'TRANSFERRING', // usually happens in dial-out after the CONNECTED state\n SUCCESS: 'SUCCESS', // happens after the transfer (TRANSFERRING) is successful\n UNKNOWN: '', // placeholder if we haven't been told what the status is\n};\n\nexport const PASSWORD_STATUS = {\n NOT_REQUIRED: 'NOT_REQUIRED', // password is not required to join the meeting\n REQUIRED: 'REQUIRED', // client needs to provide the password by calling verifyPassword() before calling join()\n UNKNOWN: 'UNKNOWN', // we are waiting for information from the backend if password is required or not\n VERIFIED: 'VERIFIED', // client has already provided the password and it has been verified, client can proceed to call join()\n};\n\nexport const MEETING_INFO_FAILURE_REASON = {\n NONE: 'NONE', // meeting info was retrieved succesfully\n WRONG_PASSWORD: 'WRONG_PASSWORD', // meeting requires password and no password or wrong one was provided\n WRONG_CAPTCHA: 'WRONG_CAPTCHA', // wbxappapi requires a captcha code or a wrong captcha code was provided\n POLICY: 'POLICY', // meeting info request violates some meeting policy\n OTHER: 'OTHER', // any other error (network, etc)\n};\n\nexport const BNR_STATUS = {\n SHOULD_ENABLE: 'SHOULD_ENABLE',\n ENABLED: 'ENABLED',\n SHOULD_DISABLE: 'SHOULD_DISABLE',\n NOT_ENABLED: 'NOT_ENABLED',\n};\n\nexport const EMBEDDED_APP_TYPES = {\n SLIDO: 'SLIDO',\n OTHER: 'OTHER',\n};\n\nexport const DEFAULT_MEETING_INFO_REQUEST_BODY = {\n supportHostKey: true,\n supportCountryList: true,\n};\n\n/** the values for IP_VERSION are fixed and defined in Orpheus API */\nexport const IP_VERSION = {\n unknown: 0,\n only_ipv4: 4, // we know we have ipv4, we don't know or we don't have ipv6\n only_ipv6: 6, // we know we have ipv6, we don't know or we don't have ipv4\n ipv4_and_ipv6: 1,\n} as const;\n\nexport type IP_VERSION = (typeof IP_VERSION)[keyof typeof IP_VERSION];\n\n// constant for if the permissionToken is about to expire in the next 30 seconds, refresh it\nexport const MEETING_PERMISSION_TOKEN_REFRESH_THRESHOLD_IN_SEC = 30;\nexport const MEETING_PERMISSION_TOKEN_REFRESH_REASON = 'ttl-join';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["AUDIO","AUDIO_STATUS","ALERT","ALIAS","ANSWER","CALL","CORRELATION_ID","MEETINGNUMBER","CONVERSATION_URL","CALENDAR","CALENDAR_EVENTS_API","CMR_MEETINGS","CLAIM","CONTROLS","CONTENT","COMPLETE","WHITEBOARD","GATHERING","DEVELOPMENT","DECLINE","ERROR","ENDED","HECATE","HOST","JOIN","LEAVE","LIVE","LOCAL","LOCI","LOCUS_URL","END","MAX_RANDOM_DELAY_FOR_MEETING_INFO","MEETINGINFO","MEET","MEET_M","MEDIA","OFFLINE","ONLINE","PARTICIPANT","PROVISIONAL_TYPE_DIAL_IN","PROVISIONAL_TYPE_DIAL_OUT","REMOTE","READY","SEND_DTMF_ENDPOINT","SENDRECV","SIP_URI","SHARE","TYPE","VIDEO","VIDEO_STATUS","_ANSWER_","_ACTIVE_","_CALL_","_CREATED_","_CONFLICT_","_CONVERSATION_URL_","_ERROR_","_FORCED_","_IDLE_","_IN_LOBBY_","_IN_MEETING_","_INCOMING_","_IN_","_ID_","_JOIN_","_JOINED_","_LOCUS_ID_","_LEFT_","_MOVED_","_MEETING_LINK_","_MEETING_UUID_","_MEETING_","_MEETING_CENTER_","_MEETING_ID_","_NOT_IN_MEETING_","_NONE_","_OBSERVE_","_PERSONAL_ROOM_","_PEOPLE_","hydraTypes","PEOPLE","_REQUESTED_","_RESOURCE_ROOM_","_RECEIVE_ONLY_","_REMOVE_","_ROOM_","ROOM","_SIP_BRIDGE_","_SIP_URI_","_SEND_RECEIVE_","_SEND_ONLY_","_INACTIVE_","_SLIDES_","_S_LINE","_USER_","_UNKNOWN_","_WEBEX_MEETING_","_WAIT_","_MOVE_MEDIA_","PARTICIPANT_DELTAS","TARGETS","STATES","DISABLED","MUTED","UNKNOWN","UNMUTED","ALTERNATE_REDIRECT_TRUE","HTTPS_PROTOCOL","MEETINGS","MEDIA_PEER_CONNECTION_NAME","SHARE_PEER_CONNECTION_NAME","USE_URI_LOOKUP_FALSE","WWW_DOT","WEBEX_DOT_COM","CONVERSATION_SERVICE","WBXAPPAPI_SERVICE","DEFAULT_EXCLUDED_STATS","LAYOUT_TYPES","MODERATOR_TRUE","MODERATOR_FALSE","INTENT_TO_JOIN","ICE_TIMEOUT","ICE_FAIL_TIMEOUT","RETRY_TIMEOUT","ICE_AND_DTLS_CONNECTION_TIMEOUT","ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT","DIALER_REGEX","SIP_ADDRESS","PHONE_NUMBER","E164_FORMAT","IPV4_REGEX","VALID_EMAIL_ADDRESS","VALID_PMR_ADDRESS","VALID_PMR_LINK","VALID_PIN","UUID_REG","API","CALLIOPEDISCOVERY","LOCUS","CALENDAR_EVENTS","CREATE","UPDATE","CREATE_MINIMAL","UPDATE_MINIMAL","DELETE","ASSIGN_ROLES_ERROR_CODES","ReclaimHostNotSupportedErrorCode","ReclaimHostNotAllowedErrorCode","ReclaimHostEmptyWrongKeyErrorCode","ReclaimHostIsHostAlreadyErrorCode","DEFAULT_GET_STATS_FILTER","types","RECORDING_STATE","RECORDING","IDLE","PAUSED","RESUMED","SHARE_STATUS","NO_SHARE","REMOTE_SHARE_ACTIVE","LOCAL_SHARE_ACTIVE","WHITEBOARD_SHARE_ACTIVE","EVENT_TRIGGERS","MEETINGS_READY","MEETINGS_REGISTERED","MEETINGS_UNREGISTERED","MEDIA_READY","MEDIA_STOPPED","MEDIA_UPDATE","MEDIA_CODEC_MISSING","MEDIA_CODEC_LOADED","MEETING_STARTED_SHARING_LOCAL","MEETING_STOPPED_SHARING_LOCAL","MEETING_STARTED_SHARING_REMOTE","MEETING_STOPPED_SHARING_REMOTE","MEETING_UPDATE_ANNOTATION_INFO","MEETING_STARTED_SHARING_WHITEBOARD","MEETING_STOPPED_SHARING_WHITEBOARD","MEETING_MEDIA_LOCAL_STARTED","MEETING_MEDIA_REMOTE_STARTED","MEETING_STARTED_RECORDING","MEETING_STOPPED_RECORDING","MEETING_STARTED_RECEIVING_TRANSCRIPTION","MEETING_STOPPED_RECEIVING_TRANSCRIPTION","MEETING_RECEIVE_REACTIONS","MEETING_PAUSED_RECORDING","MEETING_RESUMED_RECORDING","MEETING_ADDED","MEETING_REMOVED","MEETING_RINGING","MEETING_RINGING_STOP","MEETING_SELF_LOBBY_WAITING","MEETING_SELF_GUEST_ADMITTED","MEETING_SELF_VIDEO_MUTED_BY_OTHERS","MEETING_SELF_VIDEO_UNMUTED_BY_OTHERS","MEETING_SELF_MUTED_BY_OTHERS","MEETING_SELF_UNMUTED_BY_OTHERS","MEETING_SELF_REQUESTED_TO_UNMUTE","MEETING_SELF_PHONE_AUDIO_UPDATE","MEETING_SELF_CANNOT_VIEW_PARTICIPANT_LIST","MEETING_SELF_IS_SHARING_BLOCKED","MEETING_SELF_ROLES_CHANGED","MEETING_CONTROLS_LAYOUT_UPDATE","MEETING_ENTRY_EXIT_TONE_UPDATE","MEETING_BREAKOUTS_UPDATE","MEETING_BREAKOUTS_CLOSING","MEETING_BREAKOUTS_MESSAGE","MEETING_BREAKOUTS_ASK_RETURN_TO_MAIN","MEETING_BREAKOUTS_LEAVE","MEETING_BREAKOUTS_ASK_FOR_HELP","MEETING_BREAKOUTS_PRE_ASSIGNMENTS_UPDATE","MEETING_INTERPRETATION_UPDATE","MEETING_INTERPRETATION_SUPPORT_LANGUAGES_UPDATE","MEETING_INTERPRETATION_HANDOFF_REQUESTS_ARRIVED","MEMBERS_UPDATE","MEMBERS_CLEAR","MEMBERS_CONTENT_UPDATE","MEMBERS_HOST_UPDATE","MEMBERS_SELF_UPDATE","MEETING_RECONNECTION_STARTING","MEETING_RECONNECTION_SUCCESS","MEETING_RECONNECTION_FAILURE","MEETING_UNLOCKED","MEETING_LOCKED","MEETING_INFO_AVAILABLE","MEETING_LOG_UPLOAD_SUCCESS","MEETING_LOG_UPLOAD_FAILURE","MEETING_ACTIONS_UPDATE","MEETING_STATE_CHANGE","MEETING_MEETING_CONTAINER_UPDATE","MEETING_EMBEDDED_APPS_UPDATE","MEDIA_QUALITY","MEETINGS_NETWORK_DISCONNECTED","MEETINGS_NETWORK_CONNECTED","MEETING_SELF_LEFT","NETWORK_QUALITY","MEDIA_NEGOTIATED","ACTIVE_SPEAKER_CHANGED","REMOTE_VIDEO_SOURCE_COUNT_CHANGED","REMOTE_AUDIO_SOURCE_COUNT_CHANGED","REMOTE_MEDIA_AUDIO_CREATED","REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED","REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED","MEETING_CONTROLS_MUTE_ON_ENTRY_UPDATED","MEETING_CONTROLS_SHARE_CONTROL_UPDATED","MEETING_CONTROLS_DISALLOW_UNMUTE_UPDATED","MEETING_CONTROLS_REACTIONS_UPDATED","MEETING_CONTROLS_VIEW_THE_PARTICIPANTS_LIST_UPDATED","MEETING_CONTROLS_RAISE_HAND_UPDATED","MEETING_CONTROLS_VIDEO_UPDATED","MEETING_LOCUS_URL_UPDATE","MEETING_STREAM_PUBLISH_STATE_CHANGED","EVENT_TYPES","SELF","OTHER","REMOTE_AUDIO","REMOTE_VIDEO","REMOTE_SHARE","REMOTE_SHARE_AUDIO","MEETING_REMOVED_REASON","SELF_REMOVED","FULLSTATE_REMOVED","MEETING_INACTIVE_TERMINATING","CLIENT_LEAVE_REQUEST","CLIENT_LEAVE_REQUEST_TAB_CLOSED","USER_ENDED_SHARE_STREAMS","NO_MEETINGS_TO_SYNC","MEETING_CONNECTION_FAILED","LOCUS_DTO_SYNC_FAILED","MISSING_MEETING_INFO","CALL_REMOVED_REASON","CALL_INACTIVE","PARTNER_LEFT","SELF_LEFT","SHARE_STOPPED_REASON","SELF_STOPPED","MEETING_REJOIN","MEDIA_RECONNECTION","TRACK_ENDED","EVENTS","SELF_UNADMITTED_GUEST","SELF_ADMITTED_GUEST","MEDIA_INACTIVITY","CONVERSATION_URL_UPDATE","DESTROY_MEETING","REQUEST_UPLOAD_LOGS","REMOTE_RESPONSE","LOCUS_INFO_UPDATE_PARTICIPANTS","LOCUS_INFO_UPDATE_HOST","LOCUS_INFO_UPDATE_MEDIA_SHARES","LOCUS_INFO_UPDATE_SELF","LOCUS_INFO_UPDATE_URL","LOCUS_INFO_CAN_ASSIGN_HOST","DISCONNECT_DUE_TO_INACTIVITY","MEDIA_STATE","active","inactive","ERROR_DICTIONARY","PARAMETER","NAME","MESSAGE","CODE","JOIN_MEETING","RECONNECTION","PERMISSION","STATS","PASSWORD","CAPTCHA","BREAKOUT_EDIT","NO_MEETING_INFO","RECLAIM_HOST_ROLE_NOT_SUPPORTED","RECLAIM_HOST_ROLE_NOT_ALLOWED","RECLAIM_HOST_ROLE_EMPTY_OR_WRONG_KEY","RECLAIM_HOST_ROLE_IS_ALREADY_HOST","FLOOR_ACTION","GRANTED","RELEASED","ACCEPTED","FULL_STATE","INITIALIZING","INACTIVE","ACTIVE","TERMINATING","HTTP_VERBS","PUT","POST","GET","PATCH","ICE_GATHERING_STATE","NEW","ICE_STATE","CHECKING","CONNECTED","CLOSED","COMPLETED","FAILED","DISCONNECTED","CONNECTION_STATE","CONNECTING","STATE","SEQUENCE","UN_DEF","EMPTY","DEF","NA","RANGE_START","RANGE_END","SYNCDEBUG","ANNOTATION","ANNOTATION_ON_SHARE_SUPPORTED","BREAKOUTS","STATUS","CLOSING","PENDING","OPEN","BREAKOUTS_CLOSING","ASK_RETURN_TO_MAIN","LEAVE_BREAKOUT","ASK_FOR_HELP","PRE_ASSIGNMENTS_UPDATE","SESSION_TYPES","MAIN","BREAKOUT","SESSION_STATES","ASSIGNED","ALLOWED","ASSIGNED_CURRENT","REQUESTED","BREAKOUTS_SUPPORTED","ACTION","START","CLOSE","ERROR_CODE","EDIT_LOCK_TOKEN_MISMATCH","EDIT_NOT_AUTHORIZED","EDIT_LOCK_STATUS","LOCKED","NOT_LOCKED","DEFAULT_TTL","INTERPRETATION","SUPPORT_LANGUAGES_UPDATE","HANDOFF_REQUESTS_ARRIVED","ACTION_TYPE","OFFERED","DECLINED","RESOURCE_TYPE","LOCUSINFO","CONTROLS_MEETING_LAYOUT_UPDATED","CONTROLS_RECORDING_UPDATED","CONTROLS_MEETING_TRANSCRIBE_UPDATED","CONTROLS_MEETING_BREAKOUT_UPDATED","CONTROLS_MEETING_CONTAINER_UPDATED","CONTROLS_MEETING_INTERPRETATION_UPDATED","CONTROLS_ENTRY_EXIT_TONE_UPDATED","CONTROLS_JOIN_BREAKOUT_FROM_MAIN","CONTROLS_MUTE_ON_ENTRY_CHANGED","CONTROLS_SHARE_CONTROL_CHANGED","CONTROLS_DISALLOW_UNMUTE_CHANGED","CONTROLS_REACTIONS_CHANGED","CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED","CONTROLS_RAISE_HAND_CHANGED","CONTROLS_VIDEO_CHANGED","SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED","SELF_REMOTE_MUTE_STATUS_UPDATED","LOCAL_UNMUTE_REQUESTED","LOCAL_UNMUTE_REQUIRED","SELF_MODERATOR_CHANGED","SELF_ROLES_CHANGED","MEETING_UPDATE","MEDIA_STATUS_CHANGE","FULL_STATE_TYPE_UPDATE","FULL_STATE_MEETING_STATE_CHANGE","MEETING_STATE_CHANGE_TO_ACTIVE","MEETING_INFO_UPDATED","SELF_OBSERVING","EMBEDDED_APPS_UPDATED","SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE","SELF_IS_SHARING_BLOCKED_CHANGE","SELF_MEETING_BREAKOUTS_CHANGED","SELF_MEETING_INTERPRETATION_CHANGED","LINKS_SERVICES","LOCUSEVENT","LOCUS_MERCURY","CONTROLS_UPDATED","DIFFERENCE","BREAKOUT_ROSTER","FLOOR_GRANTED","FLOOR_RELEASED","MESSAGE_ROAP","PARTICIPANT_JOIN","PARTICIPANT_LEFT","PARTICIPANT_DECLINED","PARTICIPANT_UPDATED","PARTICIPANT_CONTROLS_UPDATED","PARTICIPANT_ROLES_UPDATED","PARTICIPANT_AUDIO_MUTED","PARTICIPANT_AUDIO_UNMUTED","PARTICIPANT_VIDEO_MUTED","PARTICIPANT_VIDEO_UNMUTED","RECORDING_STARTED","RECORDING_START_FAILED","RECORDING_STOPPED","SELF_CHANGED","MEDIA_TRACK_CONSTRAINT","CURSOR","AWLAYS","MOTION","NEVER","MEETING_ERRORS","METRICS_NOT_SERVER_OR_CLIENT_EXCEPTION","BIDIRECTIONAL_ROSTER_NOT_ALLOWED","INVALID_LOCUS_URL","ARGUMENT_NULL_OR_EMPTY","INVALID_USER","INVALID_PHONE_NUMBER_OR_COUNTRY_CODE","EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE","PHONE_NUMBER_INVALID_COUNTRY_CODE","PHONE_NUMBER_NOT_A_NUMBER","PHONE_NUMBER_TOO_SHORT_AFTER_IDD","PHONE_NUMBER_TOO_SHORT_NSN","PHONE_NUMBER_TOO_LONG","INVALID_DIALABLE_KEY","INVALID_MEETING_LINK","INVALID_SINCE_OR_SEQUENCE_HASH_IN_REQUEST","INVALID_LOCUS_ID","EMPTY_SCHEDULED_MEETING_START_TIME","INVALID_SCHEDULED_MEETING_DURATION_MINUTES","INVALID_SCHEDULED_MEETING_REMINDER_DURATION_MINUTES","EMPTY_SCHEDULED_MEETING_ORGANIZER","INVALID_MEETING_ID_FORMAT","INVALID_SIP_URL_FORMAT","EMPTY_INVITEE_RECORD","EMPTY_INVITEE_ADDRESS","DESKPHONE_NOTHING_DIALABLE_FOUND","INVALID_INVITEE_ADDRESS","INVALID_ATTENDEE_ID","INVALID_IN_LOBBY","MISSING_REQUESTING_PARTICIPANT_ID","INVALID_REQUESTING_PARTICIPANT_ID","SUPPLEMENTARY_USER_INFO_NOT_FOUND","UNAUTHORIZED","REMOVED_PARTICIPANT","FREE_USER_MAX_PARTICIPANTS_EXCEEDED","PAID_USER_MAX_PARTICIPANTS_EXCEEDED","SERVICE_MAX_PARTICIPANTS_EXCEEDED","ONE_ON_ONE_TO_SELF_NOT_ALLOWED","JOIN_RESTRICTED_USER","GET_RESTRICTED_USER","JOIN_RESTRICTED_USER_NOT_IN_ROOM","CREATE_MEDIA_RESTRICTED_USER","DUPLICATE_RESOURCE_CREATION_REQUEST","MEETING_NOT_FOUND","NOT_WEBEX_SITE","INVALID_SCHEDULED_MEETING_ORGANIZER","FREE_USER_MAX_PARTICIPANTS_JOINED_EXCEEDED","PAID_USER_MAX_PARTICIPANTS_JOINED_EXCEEDED","SERVICE_MAX_PARTICIPANTS_ROSTER_EXCEEDED","SERVICE_INITIAL_PARTICIPANTS_ROSTER_EXCEEDED","RESOURCE_GUEST_FORBIDDEN","SERVICE_NO_MACHINE_OR_SERVICE_ACCOUNT","MODERATOR_ROLE_REMOVAL_NOT_ALLOWED","RECORDING_CONTROL_NOT_SUPPORTED","HOST_PIN_LOCKED","INVALID_HOST_PIN","REQUESTING_PARTICIPANT_NOT_MODERATOR","CONVERSATION_NOT_FOUND","MEETING_LINK_NOT_FOUND","MEETING_INFO_NOT_FOUND","SCHEDULED_MEETING_NOT_FOUND","RECORDING_NOT_STARTED","RECORDING_NOT_ENABLED","RECORDING_USER_STORAGE_FULL","RECORDING_SITE_STORAGE_FULL","NO_SCHEDULED_MEETING","MEETING_FULL_UPDATE_NOT_ALLOWED","MODERATOR_ROLE_REMOVAL_NOT_VALID","MODERATOR_ROLE_ADDITION_NOT_VALID","INVALID_CALL_START_TIME","MEETING_STARTED_UPDATE_NOT_ALLOWED","EXCEEDED_MAX_JOINED_PARTICIPANTS","EXCEEDED_SERVICE_MAX_PARTICIPANTS","MEETING_IS_LOCKED","MEETING_IS_TERMINATING","MEETING_REQUIRE_MODERATOR_PIN_INTENT","MEETING_REQUIRE_MODERATOR_PIN","MEETING_REQUIRE_MODERATOR_ROLE","PMR_ACCOUNT_SUSPENDED","PMR_ACCOUNT_LOCKED","INVALID_JOIN_TIME","REQUIRES_WEBEX_LOGIN","TOO_MANY_REQUESTS","UNABLE_TO_LOOK_UP_DEVICE_INFORMATION","UNABLE_TO_LOOK_UP_CONVERSATION","UNABLE_TO_LOOK_UP_CI_USER","UNABLE_TO_CREATE_CONFLUENCE","SERVICE_UNAVAILABLE","SOCKET_TIMEOUT","NO_HTTP_RESPONSE","MEETING_END_REASON","MEDIA_RELEASED","SELF_POLICY","DISPLAY_HINTS","ADD_GUEST","ROSTER_WAITING_TO_JOIN","RECORDING_CONTROL_START","RECORDING_CONTROL_PAUSE","RECORDING_CONTROL_STOP","RECORDING_CONTROL_RESUME","LOCK_CONTROL_UNLOCK","LOCK_CONTROL_LOCK","LOCK_STATUS_LOCKED","LOCK_STATUS_UNLOCKED","RAISE_HAND","LOWER_ALL_HANDS","LOWER_SOMEONE_ELSES_HAND","LEAVE_TRANSFER_HOST_END_MEETING","LEAVE_END_MEETING","CAPTION_START","CAPTION_STATUS_ACTIVE","DISPLAY_REAL_TIME_TRANSLATION","ENABLE_CAPTION_PANEL","DISPLAY_NON_ENGLISH_ASR","TRANSCRIPTION_CONTROL_START","TRANSCRIPTION_CONTROL_STOP","SAVE_TRANSCRIPTS_ENABLED","WEBEX_ASSISTANT_STATUS_ACTIVE","WAITING_FOR_OTHERS","ENABLE_REACTIONS","DISABLE_REACTIONS","REACTIONS_ACTIVE","REACTIONS_INACTIVE","SHARE_CONTROL","ENABLE_MUTE_ON_ENTRY","ENABLE_SHOW_DISPLAY_NAME","DISABLE_SHOW_DISPLAY_NAME","DISABLE_MUTE_ON_ENTRY","ENABLE_HARD_MUTE","DISABLE_HARD_MUTE","MUTE_ALL","UNMUTE_ALL","PRESENTER_CONTROL","CAN_RENAME_SELF_AND_OBSERVED","CAN_RENAME_OTHERS","BREAKOUT_MANAGEMENT","BROADCAST_MESSAGE_TO_BREAKOUT","UCF_SUPPRESS_BREAKOUTS_SUPPORT","DISABLE_ASK_FOR_HELP","DISABLE_BREAKOUT_PREASSIGNMENTS","DISABLE_LOBBY_TO_BREAKOUT","DISABLE_VIEW_THE_PARTICIPANT_LIST","ENABLE_VIEW_THE_PARTICIPANT_LIST","DISABLE_RAISE_HAND","ENABLE_RAISE_HAND","DISABLE_VIDEO","ENABLE_VIDEO","SHARE_FILE","SHARE_APPLICATION","SHARE_CAMERA","SHARE_DESKTOP","SHARE_CONTENT","SHARE_WHITEBOARD","VOIP_IS_ENABLED","INTERSTITIAL_DISPLAY_HINTS","SELF_ROLES","COHOST","MODERATOR","ATTENDEE","MEETING_STATE","INCOMING","DIALING","NOTIFIED","ON_GOING","JOINED","LEFT","MEETING_STATE_MACHINE","TRANSITIONS","FAIL","RING","RESET","RINGING","ANSWERED","MEETING_AUDIO_STATE_MACHINE","TOGGLE","INIT","MUTE_SELF","UNMUTE_SELF","MEETING_VIDEO_STATE_MACHINE","PEER_CONNECTION_STATE","IN_PROGRESS","FAILURE","DEFAULT_TRY_COUNT","DEFAULT_STATUS","RESOURCE","CLUSTERS","REACHABILITY","localStorageResult","localStorageJoinCookie","namespace","ROAP","ROAP_TYPES","OFFER","OK","TURN_DISCOVERY_REQUEST","TURN_DISCOVERY_RESPONSE","ROAP_MERCURY","ROAP_VERSION","MediaContent","main","slides","NETWORK_STATUS","RECONNECTING","NETWORK_TYPE","VPN","WIFI","ETHERNET","SEND_DIRECTION","RECEIVE_DIRECTION","MQA_STATS","MQA_SIZE","CA_TYPE","DEFAULT_IP","DEFAULT_SHARE_SENDER_STATS","common","direction","isMain","mariFecEnabled","mariQosEnabled","multistreamEnabled","availableBitrate","dtlsBitrate","dtlsPackets","fecBitrate","fecPackets","maxBitrate","queueDelay","remoteJitter","remoteLossRate","remoteReceiveRate","roundTripTime","rtcpBitrate","rtcpPackets","rtpBitrate","rtpPackets","stunBitrate","stunPackets","transportType","streams","codec","duplicateSsci","requestedBitrate","requestedFrames","ssci","transmittedBitrate","transmittedFrameRate","h264CodecProfile","localConfigurationChanges","remoteConfigurationChanges","requestedFrameSize","requestedKeyFrames","transmittedFrameSize","transmittedHeight","transmittedKeyFrames","transmittedWidth","intervalMetadata","memoryUsage","cpuBitWidth","mainProcessMaximumMemoryBytes","osBitWidth","processAverageMemoryUsage","processMaximumMemoryBytes","processMaximumMemoryUsage","systemAverageMemoryUsage","systemMaximumMemoryUsage","peerReflexiveIP","processAverageCPU","processMaximumCPU","systemAverageCPU","systemMaximumCPU","QUALITY_LEVELS","LOW","MEDIUM","HIGH","AVAILABLE_RESOLUTIONS","video","width","max","ideal","height","MQA_INTEVAL","MEDIA_DEVICES","MICROPHONE","SPEAKER","CAMERA","PSTN_STATUS","TRANSFERRING","SUCCESS","PASSWORD_STATUS","NOT_REQUIRED","REQUIRED","VERIFIED","MEETING_INFO_FAILURE_REASON","NONE","WRONG_PASSWORD","WRONG_CAPTCHA","POLICY","BNR_STATUS","SHOULD_ENABLE","ENABLED","SHOULD_DISABLE","NOT_ENABLED","EMBEDDED_APP_TYPES","SLIDO","DEFAULT_MEETING_INFO_REQUEST_BODY","supportHostKey","supportCountryList","IP_VERSION","unknown","only_ipv4","only_ipv6","ipv4_and_ipv6","MEETING_PERMISSION_TOKEN_REFRESH_THRESHOLD_IN_SEC","MEETING_PERMISSION_TOKEN_REFRESH_REASON"],"sources":["constants.ts"],"sourcesContent":["// @ts-ignore\nimport {hydraTypes} from '@webex/common';\n\n// *********** LOWERCASE / CAMELCASE STRINGS ************\n\nexport const AUDIO = 'audio';\nexport const AUDIO_STATUS = 'audioStatus';\nexport const ALERT = 'alert';\nexport const ALIAS = 'alias';\nexport const ANSWER = 'answer';\n\nexport const CALL = 'call';\nexport const CORRELATION_ID = 'correlationId';\nexport const MEETINGNUMBER = 'meetingNumber';\nexport const CONVERSATION_URL = 'conversationUrl';\nexport const CALENDAR = 'calendar';\nexport const CALENDAR_EVENTS_API = 'calendarEvents';\nexport const CMR_MEETINGS = 'cmrmeetings';\nexport const CLAIM = 'claim';\nexport const CONTROLS = 'controls';\nexport const CONTENT = 'content';\nexport const COMPLETE = 'complete';\nexport const WHITEBOARD = 'whiteboard';\nexport const GATHERING = 'gathering';\nexport const DEVELOPMENT = 'development';\nexport const DECLINE = 'decline';\n\nexport const ERROR = 'error';\nexport const ENDED = 'ended';\n\nexport const HECATE = 'hecate';\n\nexport const HOST = 'host';\n\nexport const JOIN = 'join';\n\nexport const LEAVE = 'leave';\nexport const LIVE = 'live';\nexport const LOCAL = 'local';\nexport const LOCI = 'loci';\nexport const LOCUS_URL = 'locusUrl';\nexport const END = 'end';\n\nexport const MAX_RANDOM_DELAY_FOR_MEETING_INFO = 3 * 60 * 1000;\nexport const MEETINGINFO = 'meetingInfo';\nexport const MEET = 'meet';\nexport const MEET_M = 'm';\nexport const MEDIA = 'media';\n\nexport const OFFLINE = 'offline';\nexport const ONLINE = 'online';\n\nexport const PARTICIPANT = 'participant';\n\nexport const PROVISIONAL_TYPE_DIAL_IN = 'DIAL_IN';\nexport const PROVISIONAL_TYPE_DIAL_OUT = 'DIAL_OUT';\n\nexport const REMOTE = 'remote';\nexport const READY = 'ready';\n\nexport const SEND_DTMF_ENDPOINT = 'sendDtmf';\nexport const SENDRECV = 'sendrecv';\nexport const SIP_URI = 'sipUri';\nexport const SHARE = 'share';\n\nexport const TYPE = 'type';\n\nexport const VIDEO = 'video';\nexport const VIDEO_STATUS = 'videoStatus';\n\n// *********** UPPERCASE ONLY STRINGS ************\n// Please alphabetize\nexport const _ANSWER_ = 'ANSWER';\nexport const _ACTIVE_ = 'ACTIVE';\nexport const _CALL_ = 'CALL';\nexport const _CREATED_ = 'CREATED';\nexport const _CONFLICT_ = 'CONFLICT';\nexport const _CONVERSATION_URL_ = 'CONVERSATION_URL';\n\nexport const _ERROR_ = 'ERROR';\n\nexport const _FORCED_ = 'FORCED';\n\nexport const _IDLE_ = 'IDLE';\nexport const _IN_LOBBY_ = 'IN_LOBBY';\nexport const _IN_MEETING_ = 'IN_MEETING';\nexport const _INCOMING_ = 'INCOMING';\nexport const _IN_ = 'IN';\nexport const _ID_ = 'id';\n\nexport const _JOIN_ = 'JOIN';\nexport const _JOINED_ = 'JOINED';\n\nexport const _LOCUS_ID_ = 'LOCUS_ID';\nexport const _LEFT_ = 'LEFT';\nexport const _MOVED_ = 'MOVED';\n\nexport const _MEETING_LINK_ = 'MEETING_LINK';\nexport const _MEETING_UUID_ = 'MEETING_UUID';\nexport const _MEETING_ = 'MEETING';\nexport const _MEETING_CENTER_ = 'MEETING_CENTER';\nexport const _MEETING_ID_ = 'MEETING_ID';\n\nexport const _NOT_IN_MEETING_ = 'NOT_IN_MEETING';\nexport const _NONE_ = 'NONE';\n\nexport const _OBSERVE_ = 'OBSERVE';\n\nexport const _PERSONAL_ROOM_ = 'PERSONAL_ROOM';\nexport const _PEOPLE_ = hydraTypes.PEOPLE;\n\nexport const _REQUESTED_ = 'REQUESTED';\nexport const _RESOURCE_ROOM_ = 'RESOURCE_ROOM';\nexport const _RECEIVE_ONLY_ = 'RECVONLY';\nexport const _REMOVE_ = 'REMOVE';\nexport const _ROOM_ = hydraTypes.ROOM;\n\nexport const _SIP_BRIDGE_ = 'SIP_BRIDGE';\nexport const _SIP_URI_ = 'SIP_URI';\nexport const _SEND_RECEIVE_ = 'SENDRECV';\nexport const _SEND_ONLY_ = 'SENDONLY';\nexport const _INACTIVE_ = 'INACTIVE';\nexport const _SLIDES_ = 'SLIDES';\nexport const _S_LINE = 's=-';\n\nexport const _USER_ = 'USER';\nexport const _UNKNOWN_ = 'UNKNOWN';\n\nexport const _WEBEX_MEETING_ = 'WEBEX_MEETING';\nexport const _WAIT_ = 'WAIT';\nexport const _MOVE_MEDIA_ = 'MOVE_MEDIA';\n\n// *********** PARTICIPANT DELTAS ***********\nexport const PARTICIPANT_DELTAS = {\n TARGETS: {\n AUDIO: 'audio',\n VIDEO: 'video',\n },\n STATES: {\n DISABLED: 'disabled',\n MUTED: 'muted',\n UNKNOWN: 'unknown',\n UNMUTED: 'unmuted',\n },\n};\n\n// *********** STRING HELPERS ***********\n// Please alphabetize\nexport const ALTERNATE_REDIRECT_TRUE = 'alternateRedirect=true';\n\nexport const HTTPS_PROTOCOL = 'https://';\n\nexport const MEETINGS = 'Meetings';\n\nexport const MEDIA_PEER_CONNECTION_NAME = 'MediaPeerConnection';\n\nexport const SHARE_PEER_CONNECTION_NAME = 'SharePeerConnection';\n\nexport const USE_URI_LOOKUP_FALSE = 'useUriLookup=false';\n\nexport const WWW_DOT = 'www.';\n\nexport const WEBEX_DOT_COM = 'webex.com';\n\nexport const CONVERSATION_SERVICE = 'identityLookup';\n\nexport const WBXAPPAPI_SERVICE = 'webex-appapi-service';\n\n// ******************* ARRAYS ********************\n// Please alphabetize\nexport const DEFAULT_EXCLUDED_STATS = ['timestamp', 'ssrc', 'priority'];\n\n/**\n * @description @description Layout type for remote video participants. Allowed values are: Single, Equal, ActivePresence, Prominent, OnePlusN\n * @type {array}\n * @constant\n */\nexport const LAYOUT_TYPES = ['Single', 'Equal', 'ActivePresence', 'Prominent', 'OnePlusN'];\n\n// ******************* BOOLEANS *******************\n// Please alphabetize\nexport const MODERATOR_TRUE = true;\nexport const MODERATOR_FALSE = false;\n\n// ******************** NUMBERS ********************\n\nexport const INTENT_TO_JOIN = [2423005, 2423006, 2423016, 2423017, 2423018];\nexport const ICE_TIMEOUT = 2000;\nexport const ICE_FAIL_TIMEOUT = 3000;\n\nexport const RETRY_TIMEOUT = 3000;\n\nexport const ICE_AND_DTLS_CONNECTION_TIMEOUT = 10000;\nexport const ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT = 35000;\n\n// ******************** REGEX **********************\n// Please alphabetize\nexport const DIALER_REGEX = {\n // modified from https://github.com/kirm/sip.js base\n // and with https://tools.ietf.org/html/rfc3261\n // requires the @ symbol\n SIP_ADDRESS:\n /^(sips?)?:?(?:([^\\s>:@]+)(?::([^\\s@>]+))?@)([\\w\\-.]+)(?::(\\d+))?((?:;[^\\s=?>;]+(?:=[^\\s?;]+)?)*)(?:\\?(([^\\s&=>]+=[^\\s&=>]+)(&[^\\s&=>]+=[^\\s&=>]+)*))?$/,\n // standard telephony num regex\n PHONE_NUMBER:\n /^(?:(?:\\+?1\\s*(?:[.-]\\s*)?)?(?:\\(\\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\\s*\\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\\s*(?:[.-]\\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\\s*(?:[.-]\\s*)?([0-9]{4})(?:\\s*(?:#|x\\.?|ext\\.?|extension)\\s*(\\d+))?$/,\n E164_FORMAT: /^\\+[1-9]\\d{1,14}$/,\n};\n\n// eslint-disable-next-line max-len\nexport const IPV4_REGEX = /^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}|.local/g;\n\nexport const VALID_EMAIL_ADDRESS =\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\nexport const VALID_PMR_ADDRESS =\n /([a-z0-9][-a-z0-9, '.']{0,62})@([a-z0-9][-a-z0-9, '.']{0,62})\\.webex\\.com/i;\nexport const VALID_PMR_LINK =\n /(https:\\/\\/)?([a-z0-9][-a-z0-9, '.']{0,62})\\.webex\\.com\\/(meet|join)\\/([a-z0-9][-a-z0-9, '.']{0,62})\\/?/i;\nexport const VALID_PIN = /([0-9]{4,6})/;\nexport const UUID_REG =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n\n// ******************** OBJECTS ********************\n// Please alphabetize, and keep objects organized\n\n// TODO: move all api params to API section\nexport const API = {\n CALLIOPEDISCOVERY: 'calliopeDiscovery',\n LOCUS: 'locus',\n};\n\nexport const CALENDAR_EVENTS = {\n CREATE: 'event:calendar.meeting.create',\n UPDATE: 'event:calendar.meeting.update',\n CREATE_MINIMAL: 'event:calendar.meeting.create.minimal',\n UPDATE_MINIMAL: 'event:calendar.meeting.update.minimal',\n DELETE: 'event:calendar.meeting.delete',\n};\n\nexport const ASSIGN_ROLES_ERROR_CODES = {\n ReclaimHostNotSupportedErrorCode: 2400127,\n ReclaimHostNotAllowedErrorCode: 2403135,\n ReclaimHostEmptyWrongKeyErrorCode: 2403136,\n ReclaimHostIsHostAlreadyErrorCode: 2409150,\n};\n\nexport const DEFAULT_GET_STATS_FILTER = {\n types: [\n 'track',\n 'transport',\n 'candidate-pair',\n 'outbound-rtp',\n 'outboundrtp',\n 'inbound-rtp',\n 'inboundrtp',\n 'remote-inbound-rtp',\n 'remote-outbound-rtp',\n 'remote-candidate',\n 'local-candidate',\n 'media-source',\n ],\n};\n\nexport const RECORDING_STATE = {\n RECORDING: 'recording',\n IDLE: 'idle',\n PAUSED: 'paused',\n RESUMED: 'resumed',\n};\n\nexport const SHARE_STATUS = {\n NO_SHARE: 'no_share',\n REMOTE_SHARE_ACTIVE: 'remote_share_active',\n LOCAL_SHARE_ACTIVE: 'local_share_active',\n WHITEBOARD_SHARE_ACTIVE: 'whiteboard_share_active',\n};\n\n// TODO: do we want to scope by meeting, members when they come off those objects themselves?\nexport const EVENT_TRIGGERS = {\n MEETINGS_READY: 'meetings:ready',\n MEETINGS_REGISTERED: 'meetings:registered',\n MEETINGS_UNREGISTERED: 'meetings:unregistered',\n MEDIA_READY: 'media:ready',\n MEDIA_STOPPED: 'media:stopped',\n MEDIA_UPDATE: 'media:update',\n MEDIA_CODEC_MISSING: 'media:codec:missing',\n MEDIA_CODEC_LOADED: 'media:codec:loaded',\n MEETING_STARTED_SHARING_LOCAL: 'meeting:startedSharingLocal',\n MEETING_STOPPED_SHARING_LOCAL: 'meeting:stoppedSharingLocal',\n MEETING_STARTED_SHARING_REMOTE: 'meeting:startedSharingRemote',\n MEETING_STOPPED_SHARING_REMOTE: 'meeting:stoppedSharingRemote',\n MEETING_UPDATE_ANNOTATION_INFO: 'meeting:updateAnnotationInfo',\n MEETING_STARTED_SHARING_WHITEBOARD: 'meeting:startedSharingWhiteboard',\n MEETING_STOPPED_SHARING_WHITEBOARD: 'meeting:stoppedSharingWhiteboard',\n MEETING_MEDIA_LOCAL_STARTED: 'meeting:media:local:start',\n MEETING_MEDIA_REMOTE_STARTED: 'meeting:media:remote:start',\n MEETING_STARTED_RECORDING: 'meeting:recording:started',\n MEETING_STOPPED_RECORDING: 'meeting:recording:stopped',\n MEETING_STARTED_RECEIVING_TRANSCRIPTION: 'meeting:receiveTranscription:started',\n MEETING_STOPPED_RECEIVING_TRANSCRIPTION: 'meeting:receiveTranscription:stopped',\n MEETING_RECEIVE_REACTIONS: 'meeting:receiveReactions',\n MEETING_PAUSED_RECORDING: 'meeting:recording:paused',\n MEETING_RESUMED_RECORDING: 'meeting:recording:resumed',\n MEETING_ADDED: 'meeting:added',\n MEETING_REMOVED: 'meeting:removed',\n MEETING_RINGING: 'meeting:ringing',\n MEETING_RINGING_STOP: 'meeting:ringingStop',\n MEETING_SELF_LOBBY_WAITING: 'meeting:self:lobbyWaiting',\n MEETING_SELF_GUEST_ADMITTED: 'meeting:self:guestAdmitted',\n MEETING_SELF_VIDEO_MUTED_BY_OTHERS: 'meeting:self:videoMutedByOthers',\n MEETING_SELF_VIDEO_UNMUTED_BY_OTHERS: 'meeting:self:videoUnmutedByOthers',\n MEETING_SELF_MUTED_BY_OTHERS: 'meeting:self:mutedByOthers',\n MEETING_SELF_UNMUTED_BY_OTHERS: 'meeting:self:unmutedByOthers',\n MEETING_SELF_REQUESTED_TO_UNMUTE: 'meeting:self:requestedToUnmute',\n MEETING_SELF_PHONE_AUDIO_UPDATE: 'meeting:self:phoneAudioUpdate',\n MEETING_SELF_CANNOT_VIEW_PARTICIPANT_LIST: 'meeting:self:cannotViewParticipantList',\n MEETING_SELF_IS_SHARING_BLOCKED: 'meeting:self:isSharingBlocked',\n MEETING_SELF_ROLES_CHANGED: 'meeting:self:rolesChanged',\n MEETING_CONTROLS_LAYOUT_UPDATE: 'meeting:layout:update',\n MEETING_ENTRY_EXIT_TONE_UPDATE: 'meeting:entryExitTone:update',\n MEETING_BREAKOUTS_UPDATE: 'meeting:breakouts:update',\n MEETING_BREAKOUTS_CLOSING: 'meeting:breakouts:closing',\n MEETING_BREAKOUTS_MESSAGE: 'meeting:breakouts:message',\n MEETING_BREAKOUTS_ASK_RETURN_TO_MAIN: 'meeting:breakouts:askReturnToMain',\n MEETING_BREAKOUTS_LEAVE: 'meeting:breakouts:leave',\n MEETING_BREAKOUTS_ASK_FOR_HELP: 'meeting:breakouts:askForHelp',\n MEETING_BREAKOUTS_PRE_ASSIGNMENTS_UPDATE: 'meeting:breakouts:preAssignmentsUpdate',\n MEETING_INTERPRETATION_UPDATE: 'meeting:interpretation:update',\n MEETING_INTERPRETATION_SUPPORT_LANGUAGES_UPDATE: 'meeting:interpretation:supportLanguagesUpdate',\n MEETING_INTERPRETATION_HANDOFF_REQUESTS_ARRIVED: 'meeting:interpretation:handoffRequestsArrived',\n MEMBERS_UPDATE: 'members:update',\n MEMBERS_CLEAR: 'members:clear',\n MEMBERS_CONTENT_UPDATE: 'members:content:update',\n MEMBERS_HOST_UPDATE: 'members:host:update',\n MEMBERS_SELF_UPDATE: 'members:self:update',\n MEETING_RECONNECTION_STARTING: 'meeting:reconnectionStarting',\n MEETING_RECONNECTION_SUCCESS: 'meeting:reconnectionSuccess',\n MEETING_RECONNECTION_FAILURE: 'meeting:reconnectionFailure',\n MEETING_UNLOCKED: 'meeting:unlocked',\n MEETING_LOCKED: 'meeting:locked',\n MEETING_INFO_AVAILABLE: 'meeting:meetingInfoAvailable',\n MEETING_LOG_UPLOAD_SUCCESS: 'meeting:logUpload:success',\n MEETING_LOG_UPLOAD_FAILURE: 'meeting:logUpload:failure',\n MEETING_ACTIONS_UPDATE: 'meeting:actionsUpdate',\n MEETING_STATE_CHANGE: 'meeting:stateChange',\n MEETING_MEETING_CONTAINER_UPDATE: 'meeting:meetingContainer:update',\n MEETING_EMBEDDED_APPS_UPDATE: 'meeting:embeddedApps:update',\n MEDIA_QUALITY: 'media:quality',\n MEETINGS_NETWORK_DISCONNECTED: 'network:disconnected',\n MEETINGS_NETWORK_CONNECTED: 'network:connected',\n MEETING_SELF_LEFT: 'meeting:self:left',\n NETWORK_QUALITY: 'network:quality',\n MEDIA_NEGOTIATED: 'media:negotiated',\n // the following events apply only to multistream media connections\n ACTIVE_SPEAKER_CHANGED: 'media:activeSpeakerChanged',\n REMOTE_VIDEO_SOURCE_COUNT_CHANGED: 'media:remoteVideoSourceCountChanged',\n REMOTE_AUDIO_SOURCE_COUNT_CHANGED: 'media:remoteAudioSourceCountChanged',\n REMOTE_MEDIA_AUDIO_CREATED: 'media:remoteAudio:created',\n REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED: 'media:remoteScreenShareAudio:created',\n REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED: 'media:remoteVideo:layoutChanged',\n // Controls\n MEETING_CONTROLS_MUTE_ON_ENTRY_UPDATED: 'meeting:controls:mute-on-entry:updated',\n MEETING_CONTROLS_SHARE_CONTROL_UPDATED: 'meeting:controls:share-control:updated',\n MEETING_CONTROLS_DISALLOW_UNMUTE_UPDATED: 'meeting:controls:disallow-unmute:updated',\n MEETING_CONTROLS_REACTIONS_UPDATED: 'meeting:controls:reactions:updated',\n MEETING_CONTROLS_VIEW_THE_PARTICIPANTS_LIST_UPDATED:\n 'meeting:controls:view-the-participants-list:updated',\n MEETING_CONTROLS_RAISE_HAND_UPDATED: 'meeting:controls:raise-hand:updated',\n MEETING_CONTROLS_VIDEO_UPDATED: 'meeting:controls:video:updated',\n // Locus URL changed\n MEETING_LOCUS_URL_UPDATE: 'meeting:locus:locusUrl:update',\n MEETING_STREAM_PUBLISH_STATE_CHANGED: 'meeting:streamPublishStateChanged',\n};\n\nexport const EVENT_TYPES = {\n SELF: 'self',\n OTHER: 'other',\n REMOTE: 'remote',\n REMOTE_AUDIO: 'remoteAudio',\n REMOTE_VIDEO: 'remoteVideo',\n REMOTE_SHARE: 'remoteShare',\n REMOTE_SHARE_AUDIO: 'remoteShareAudio',\n ERROR: 'error',\n};\n\n// Handles the reason when meeting gets destroyed\n// host removed you from the meeting\n// You are the host and you left the meeting\n// Meeting actually ended\nexport const MEETING_REMOVED_REASON = {\n SELF_REMOVED: 'SELF_REMOVED', // server or host removed you from the meeting\n FULLSTATE_REMOVED: 'FULLSTATE_REMOVED', // meeting got dropped ? not sure\n MEETING_INACTIVE_TERMINATING: 'MEETING_INACTIVE_TERMINATING', // Meeting got ended or everyone left the meeting\n CLIENT_LEAVE_REQUEST: 'CLIENT_LEAVE_REQUEST', // You triggered leave meeting\n CLIENT_LEAVE_REQUEST_TAB_CLOSED: 'CLIENT_LEAVE_REQUEST_TAB_CLOSED', // You triggered leave meeting, such as closing the browser tab directly\n USER_ENDED_SHARE_STREAMS: 'USER_ENDED_SHARE_STREAMS', // user triggered stop share\n NO_MEETINGS_TO_SYNC: 'NO_MEETINGS_TO_SYNC', // After the syncMeeting no meeting exists\n MEETING_CONNECTION_FAILED: 'MEETING_CONNECTION_FAILED', // meeting failed to connect due to ice failures or firewall issue\n LOCUS_DTO_SYNC_FAILED: 'LOCUS_DTO_SYNC_FAILED', // failed to get any Locus DTO for that meeting\n MISSING_MEETING_INFO: 'MISSING_MEETING_INFO', // meeting info failed to be fetched\n};\n\n// One one one calls ends for the following reasons\n// Partner reject the call or ends the call\n// self cancel or end the ongoing call\nexport const CALL_REMOVED_REASON = {\n CALL_INACTIVE: 'CALL_INACTIVE', // partner and you leave the call\n PARTNER_LEFT: 'PARTNER_LEFT', // partner left the call\n SELF_LEFT: 'SELF_LEFT', // you left/declined the call\n};\n\nexport const SHARE_STOPPED_REASON = {\n SELF_STOPPED: 'SELF_STOPPED',\n MEETING_REJOIN: 'MEETING_REJOIN',\n MEDIA_RECONNECTION: 'MEDIA_RECONNECTION',\n TRACK_ENDED: 'TRACK_ENDED',\n};\n\nexport const EVENTS = {\n SELF_UNADMITTED_GUEST: 'SELF_UNADMITTED_GUEST',\n SELF_ADMITTED_GUEST: 'SELF_ADMITTED_GUEST',\n MEDIA_INACTIVITY: 'MEDIA_INACTIVITY',\n CONVERSATION_URL_UPDATE: 'CONVERSATION_URL_UPDATE',\n DESTROY_MEETING: 'DESTROY_MEETING',\n REQUEST_UPLOAD_LOGS: 'REQUEST_UPLOAD_LOGS',\n REMOTE_RESPONSE: 'REMOTE_RESPONSE',\n // TODO: move all of these to LOCUSINFO.EVENTS\n LOCUS_INFO_UPDATE_PARTICIPANTS: 'LOCUS_INFO_UPDATE_PARTICIPANTS',\n LOCUS_INFO_UPDATE_HOST: 'LOCUS_INFO_UPDATE_HOST',\n LOCUS_INFO_UPDATE_MEDIA_SHARES: 'LOCUS_INFO_UPDATE_MEDIA_SHARES',\n LOCUS_INFO_UPDATE_SELF: 'LOCUS_INFO_UPDATE_SELF',\n LOCUS_INFO_UPDATE_URL: 'LOCUS_INFO_UPDATE_URL',\n LOCUS_INFO_CAN_ASSIGN_HOST: 'LOCUS_INFO_CAN_ASSIGN_HOST',\n DISCONNECT_DUE_TO_INACTIVITY: 'DISCONNECT_DUE_TO_INACTIVITY',\n};\n\nexport const MEDIA_STATE = {\n active: 'active',\n inactive: 'inactive',\n};\n\nexport const ERROR_DICTIONARY = {\n PARAMETER: {\n NAME: 'ParameterError',\n MESSAGE:\n 'The parameters passed to the function, or object properties needed in the function were null, missing where required, or otherwise incorrect.',\n CODE: 0,\n },\n INTENT_TO_JOIN: {\n NAME: 'IntentToJoinError',\n MESSAGE:\n 'The meeting is locked. This is expected behavior. Call #join again with pin and/or moderator option',\n CODE: 1,\n },\n JOIN_MEETING: {\n NAME: 'JoinMeetingError',\n MESSAGE: 'There was an issue joining the meeting, meeting could be in a bad state.',\n CODE: 2,\n },\n RECONNECTION: {\n NAME: 'ReconnectionError',\n MESSAGE:\n 'There was an error in the reconnection flow, the meeting may not reconnect, disconnect and dial again.',\n CODE: 3,\n },\n MEDIA: {\n NAME: 'MediaError',\n MESSAGE: 'There was an error with media, the meeting may not have live audio, video or share.',\n CODE: 4,\n },\n PERMISSION: {\n NAME: 'PermissionError',\n MESSAGE:\n 'Not allowed to execute the function, some properties on server, or local client state do not allow you to complete this action.',\n CODE: 5,\n },\n STATS: {\n NAME: 'StatsError',\n MESSAGE: 'An error occurred with getStats, stats may not continue for this data stream.',\n CODE: 6,\n },\n PASSWORD: {\n NAME: 'PasswordError',\n MESSAGE: 'Password is required, please use verifyPassword()',\n CODE: 7,\n },\n CAPTCHA: {\n NAME: 'CaptchaError',\n MESSAGE: 'Captcha is required.',\n CODE: 8,\n },\n BREAKOUT_EDIT: {\n NAME: 'BreakoutEditLockedError',\n MESSAGE: 'Edit lock token mismatch',\n CODE: 9,\n },\n NO_MEETING_INFO: {\n NAME: 'NoMeetingInfo',\n MESSAGE: 'No meeting info found for the meeting',\n CODE: 10,\n },\n RECLAIM_HOST_ROLE_NOT_SUPPORTED: {\n NAME: 'ReclaimHostRoleNotSupported',\n MESSAGE:\n 'Non converged meetings, PSTN or SIP users in converged meetings are not supported currently.',\n CODE: 11,\n },\n RECLAIM_HOST_ROLE_NOT_ALLOWED: {\n NAME: 'ReclaimHostRoleNotAllowed',\n MESSAGE:\n 'Reclaim Host Role Not Allowed For Other Participants. Participants cannot claim host role in PMR meeting, space instant meeting or escalated instant meeting. However, the original host still can reclaim host role when it manually makes another participant to be the host.',\n CODE: 12,\n },\n RECLAIM_HOST_ROLE_EMPTY_OR_WRONG_KEY: {\n NAME: 'ReclaimHostRoleEmptyOrWrongKey',\n MESSAGE:\n 'Host Key Not Specified Or Matched. The original host can reclaim the host role without entering the host key. However, any other person who claims the host role must enter the host key to get it.',\n CODE: 13,\n },\n RECLAIM_HOST_ROLE_IS_ALREADY_HOST: {\n NAME: 'ReclaimHostRoleIsAlreadyHost',\n MESSAGE:\n 'Participant Having Host Role Already. Participant who sends request to reclaim host role has already a host role.',\n CODE: 14,\n },\n};\n\nexport const FLOOR_ACTION = {\n GRANTED: 'GRANTED',\n RELEASED: 'RELEASED',\n ACCEPTED: 'ACCEPTED',\n};\n\nexport const FULL_STATE = {\n INITIALIZING: 'INITIALIZING',\n INACTIVE: 'INACTIVE',\n ACTIVE: 'ACTIVE',\n TERMINATING: 'TERMINATING',\n UNKNOWN: 'UNKNOWN',\n};\n\nexport const HTTP_VERBS = {\n PUT: 'PUT',\n POST: 'POST',\n GET: 'GET',\n PATCH: 'PATCH',\n DELETE: 'DELETE',\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/iceGatheringState\nexport const ICE_GATHERING_STATE = {\n NEW: 'new',\n GATHERING: 'gathering',\n COMPLETE: 'complete',\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/iceConnectionState\nexport const ICE_STATE = {\n CHECKING: 'checking',\n CONNECTED: 'connected',\n CLOSED: 'closed',\n COMPLETED: 'completed',\n FAILED: 'failed',\n DISCONNECTED: 'disconnected',\n};\n\nexport const CONNECTION_STATE = {\n NEW: 'new',\n CONNECTING: 'connecting',\n CONNECTED: 'connected',\n CLOSED: 'closed',\n FAILED: 'failed',\n DISCONNECTED: 'disconnected',\n};\n\nexport const LOCUS = {\n STATE: {\n INACTIVE: 'INACTIVE',\n ENDED: 'ENDED',\n INITIALIZING: 'INITIALIZING',\n },\n SEQUENCE: {\n UN_DEF: 'undef',\n EMPTY: 'empty',\n DEF: 'def',\n NA: 'na',\n RANGE_START: 'rangeStart',\n RANGE_END: 'rangeEnd',\n },\n SYNCDEBUG: 'sync_debug',\n};\n\nexport const ANNOTATION = {\n ANNOTATION_ON_SHARE_SUPPORTED: 'ANNOTATION_ON_SHARE_SUPPORTED',\n};\nexport const BREAKOUTS = {\n STATUS: {\n CLOSING: 'CLOSING',\n CLOSED: 'CLOSED',\n PENDING: 'PENDING',\n OPEN: 'OPEN',\n },\n EVENTS: {\n BREAKOUTS_CLOSING: 'BREAKOUTS_CLOSING',\n MESSAGE: 'MESSAGE',\n MEMBERS_UPDATE: 'MEMBERS_UPDATE',\n ASK_RETURN_TO_MAIN: 'ASK_RETURN_TO_MAIN',\n LEAVE_BREAKOUT: 'LEAVE_BREAKOUT',\n ASK_FOR_HELP: 'ASK_FOR_HELP',\n PRE_ASSIGNMENTS_UPDATE: 'PRE_ASSIGNMENTS_UPDATE',\n },\n SESSION_TYPES: {\n MAIN: 'MAIN',\n BREAKOUT: 'BREAKOUT',\n },\n SESSION_STATES: {\n ACTIVE: 'active',\n ASSIGNED: 'assigned',\n ALLOWED: 'allowed',\n ASSIGNED_CURRENT: 'assignedCurrent',\n REQUESTED: 'requested',\n },\n BREAKOUTS_SUPPORTED: 'BREAKOUTS_SUPPORTED',\n ACTION: {\n START: 'START',\n CLOSE: 'CLOSE',\n DELETE: 'DELETE',\n },\n ERROR_CODE: {\n EDIT_LOCK_TOKEN_MISMATCH: 201409024,\n EDIT_NOT_AUTHORIZED: 201403007,\n },\n EDIT_LOCK_STATUS: {\n LOCKED: 'LOCKED',\n NOT_LOCKED: 'NOT_LOCKED',\n UNKNOWN: 'UNKNOWN',\n },\n DEFAULT_TTL: 30,\n};\n\nexport const INTERPRETATION = {\n EVENTS: {\n SUPPORT_LANGUAGES_UPDATE: 'SUPPORT_LANGUAGES_UPDATE',\n HANDOFF_REQUESTS_ARRIVED: 'HANDOFF_REQUESTS_ARRIVED',\n },\n ACTION_TYPE: {\n OFFERED: 'OFFERED',\n ACCEPTED: 'ACCEPTED',\n REQUESTED: 'REQUESTED',\n DECLINED: 'DECLINED',\n },\n RESOURCE_TYPE: 'SiHandover',\n};\n\nexport const LOCUSINFO = {\n EVENTS: {\n CONTROLS_MEETING_LAYOUT_UPDATED: 'CONTROLS_MEETING_LAYOUT_UPDATED',\n CONTROLS_RECORDING_UPDATED: 'CONTROLS_RECORDING_UPDATED',\n CONTROLS_MEETING_TRANSCRIBE_UPDATED: 'CONTROLS_MEETING_TRANSCRIBE_UPDATED',\n CONTROLS_MEETING_BREAKOUT_UPDATED: 'CONTROLS_MEETING_BREAKOUT_UPDATED',\n CONTROLS_MEETING_CONTAINER_UPDATED: 'CONTROLS_MEETING_CONTAINER_UPDATED',\n CONTROLS_MEETING_INTERPRETATION_UPDATED: 'CONTROLS_MEETING_INTERPRETATION_UPDATED',\n CONTROLS_ENTRY_EXIT_TONE_UPDATED: 'CONTROLS_ENTRY_EXIT_TONE_UPDATED',\n CONTROLS_JOIN_BREAKOUT_FROM_MAIN: 'CONTROLS_JOIN_BREAKOUT_FROM_MAIN',\n CONTROLS_MUTE_ON_ENTRY_CHANGED: 'CONTROLS_MUTE_ON_ENTRY_CHANGED',\n CONTROLS_SHARE_CONTROL_CHANGED: 'CONTROLS_SHARE_CONTROL_CHANGED',\n CONTROLS_DISALLOW_UNMUTE_CHANGED: 'CONTROLS_DISALLOW_UNMUTE_CHANGED',\n CONTROLS_REACTIONS_CHANGED: 'CONTROLS_REACTIONS_CHANGED',\n CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED: 'CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED',\n CONTROLS_RAISE_HAND_CHANGED: 'CONTROLS_RAISE_HAND_CHANGED',\n CONTROLS_VIDEO_CHANGED: 'CONTROLS_VIDEO_CHANGED',\n SELF_UNADMITTED_GUEST: 'SELF_UNADMITTED_GUEST',\n SELF_ADMITTED_GUEST: 'SELF_ADMITTED_GUEST',\n SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED: 'SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED',\n SELF_REMOTE_MUTE_STATUS_UPDATED: 'SELF_REMOTE_MUTE_STATUS_UPDATED',\n LOCAL_UNMUTE_REQUESTED: 'LOCAL_UNMUTE_REQUESTED',\n LOCAL_UNMUTE_REQUIRED: 'LOCAL_UNMUTE_REQUIRED',\n SELF_MODERATOR_CHANGED: 'SELF_MODERATOR_CHANGED',\n SELF_ROLES_CHANGED: 'SELF_ROLES_CHANGED',\n MEETING_UPDATE: 'MEETING_UPDATE',\n MEDIA_STATUS_CHANGE: 'MEDIA_STATUS_CHANGE',\n FULL_STATE_TYPE_UPDATE: 'FULL_STATE_TYPE_UPDATE',\n FULL_STATE_MEETING_STATE_CHANGE: 'FULL_STATE_MEETING_STATE_CHANGE',\n MEETING_STATE_CHANGE_TO_ACTIVE: 'MEETING_STATE_CHANGE_TO_ACTIVE',\n MEETING_INFO_UPDATED: 'MEETING_INFO_UPDATED',\n MEETING_LOCKED: 'MEETING_LOCKED',\n MEETING_UNLOCKED: 'MEETING_UNLOCKED',\n SELF_OBSERVING: 'SELF_OBSERVING',\n DISCONNECT_DUE_TO_INACTIVITY: 'DISCONNECT_DUE_TO_INACTIVITY',\n EMBEDDED_APPS_UPDATED: 'EMBEDDED_APPS_UPDATED',\n SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE: 'SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE',\n SELF_IS_SHARING_BLOCKED_CHANGE: 'SELF_IS_SHARING_BLOCKED_CHANGE',\n SELF_MEETING_BREAKOUTS_CHANGED: 'SELF_MEETING_BREAKOUTS_CHANGED',\n SELF_MEETING_INTERPRETATION_CHANGED: 'SELF_MEETING_INTERPRETATION_CHANGED',\n MEDIA_INACTIVITY: 'MEDIA_INACTIVITY',\n LINKS_SERVICES: 'LINKS_SERVICES',\n },\n};\n\nexport const LOCUSEVENT = {\n LOCUS_MERCURY: 'event:locus',\n\n // update the tp unit status\n CONTROLS_UPDATED: 'locus.controls_updated',\n\n // delta events\n DIFFERENCE: 'locus.difference',\n\n // Breakout sessions\n BREAKOUT_ROSTER: 'breakout.roster',\n\n // screen sharing\n FLOOR_GRANTED: 'locus.floor_granted',\n FLOOR_RELEASED: 'locus.floor_released',\n\n // Roap\n MESSAGE_ROAP: 'locus.message.roap',\n\n // Join events\n PARTICIPANT_JOIN: 'locus.participant_joined',\n PARTICIPANT_LEFT: 'locus.participant_left',\n PARTICIPANT_DECLINED: 'locus.participant_declined',\n PARTICIPANT_UPDATED: 'locus.participant_updated',\n PARTICIPANT_CONTROLS_UPDATED: 'locus.participant_controls_updated',\n PARTICIPANT_ROLES_UPDATED: 'locus.participant_roles_updated',\n PARTICIPANT_AUDIO_MUTED: 'locus.participant_audio_muted',\n PARTICIPANT_AUDIO_UNMUTED: 'locus.participant_audio_unmuted',\n PARTICIPANT_VIDEO_MUTED: 'locus.participant_video_muted',\n PARTICIPANT_VIDEO_UNMUTED: 'locus.participant_video_unmuted',\n\n RECORDING_STARTED: 'locus.recording_started',\n RECORDING_START_FAILED: 'locus.recording_start_failed',\n RECORDING_STOPPED: 'locus.recording_stopped',\n\n SELF_CHANGED: 'locus.self_changed',\n};\n\nexport const MEDIA_TRACK_CONSTRAINT = {\n CURSOR: {\n // The mouse cursor should always be captured in the generated stream.\n AWLAYS: 'always',\n // The cursor should only be visible while moving, then removed.\n MOTION: 'motion',\n // The cursor should never be visible in the generated stream.\n NEVER: 'never',\n },\n};\n\nexport const MEETING_ERRORS = {\n METRICS_NOT_SERVER_OR_CLIENT_EXCEPTION: 'METRICS_NOT_SERVER_OR_CLIENT_EXCEPTION',\n\n BIDIRECTIONAL_ROSTER_NOT_ALLOWED: 'BIDIRECTIONAL_ROSTER_NOT_ALLOWED',\n INVALID_LOCUS_URL: 'INVALID_LOCUS_URL',\n ARGUMENT_NULL_OR_EMPTY: 'ARGUMENT_NULL_OR_EMPTY',\n INVALID_USER: 'INVALID_USER',\n INVALID_PHONE_NUMBER_OR_COUNTRY_CODE: 'INVALID_PHONE_NUMBER_OR_COUNTRY_CODE',\n EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE: 'EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE',\n PHONE_NUMBER_INVALID_COUNTRY_CODE: 'PHONE_NUMBER_INVALID_COUNTRY_CODE',\n PHONE_NUMBER_NOT_A_NUMBER: 'PHONE_NUMBER_NOT_A_NUMBER',\n PHONE_NUMBER_TOO_SHORT_AFTER_IDD: 'PHONE_NUMBER_TOO_SHORT_AFTER_IDD',\n PHONE_NUMBER_TOO_SHORT_NSN: 'PHONE_NUMBER_TOO_SHORT_NSN',\n PHONE_NUMBER_TOO_LONG: 'PHONE_NUMBER_TOO_LONG',\n INVALID_DIALABLE_KEY: 'INVALID_DIALABLE_KEY',\n INVALID_MEETING_LINK: 'INVALID_MEETING_LINK',\n INVALID_SINCE_OR_SEQUENCE_HASH_IN_REQUEST: 'INVALID_SINCE_OR_SEQUENCE_HASH_IN_REQUEST',\n INVALID_LOCUS_ID: 'INVALID_LOCUS_ID',\n EMPTY_SCHEDULED_MEETING_START_TIME: 'EMPTY_SCHEDULED_MEETING_START_TIME',\n INVALID_SCHEDULED_MEETING_DURATION_MINUTES: 'INVALID_SCHEDULED_MEETING_DURATION_MINUTES',\n INVALID_SCHEDULED_MEETING_REMINDER_DURATION_MINUTES:\n 'INVALID_SCHEDULED_MEETING_REMINDER_DURATION_MINUTES',\n EMPTY_SCHEDULED_MEETING_ORGANIZER: 'EMPTY_SCHEDULED_MEETING_ORGANIZER',\n INVALID_MEETING_ID_FORMAT: 'INVALID_MEETING_ID_FORMAT',\n INVALID_SIP_URL_FORMAT: 'INVALID_SIP_URL_FORMAT',\n EMPTY_INVITEE_RECORD: 'EMPTY_INVITEE_RECORD',\n EMPTY_INVITEE_ADDRESS: 'EMPTY_INVITEE_ADDRESS',\n DESKPHONE_NOTHING_DIALABLE_FOUND: 'DESKPHONE_NOTHING_DIALABLE_FOUND',\n INVALID_INVITEE_ADDRESS: 'INVALID_INVITEE_ADDRESS',\n INVALID_ATTENDEE_ID: 'INVALID_ATTENDEE_ID',\n INVALID_IN_LOBBY: 'INVALID_IN_LOBBY',\n MISSING_REQUESTING_PARTICIPANT_ID: 'MISSING_REQUESTING_PARTICIPANT_ID',\n INVALID_REQUESTING_PARTICIPANT_ID: 'INVALID_REQUESTING_PARTICIPANT_ID',\n SUPPLEMENTARY_USER_INFO_NOT_FOUND: 'SUPPLEMENTARY_USER_INFO_NOT_FOUND',\n\n UNAUTHORIZED: 'UNAUTHORIZED',\n REMOVED_PARTICIPANT: 'REMOVED_PARTICIPANT',\n\n FREE_USER_MAX_PARTICIPANTS_EXCEEDED: 'FREE_USER_MAX_PARTICIPANTS_EXCEEDED',\n PAID_USER_MAX_PARTICIPANTS_EXCEEDED: 'PAID_USER_MAX_PARTICIPANTS_EXCEEDED',\n SERVICE_MAX_PARTICIPANTS_EXCEEDED: 'SERVICE_MAX_PARTICIPANTS_EXCEEDED',\n INACTIVE: 'INACTIVE',\n ONE_ON_ONE_TO_SELF_NOT_ALLOWED: 'ONE_ON_ONE_TO_SELF_NOT_ALLOWED',\n JOIN_RESTRICTED_USER: 'JOIN_RESTRICTED_USER',\n GET_RESTRICTED_USER: 'GET_RESTRICTED_USER',\n JOIN_RESTRICTED_USER_NOT_IN_ROOM: 'JOIN_RESTRICTED_USER_NOT_IN_ROOM',\n CREATE_MEDIA_RESTRICTED_USER: 'CREATE_MEDIA_RESTRICTED_USER',\n DUPLICATE_RESOURCE_CREATION_REQUEST: 'DUPLICATE_RESOURCE_CREATION_REQUEST',\n MEETING_NOT_FOUND: 'MEETING_NOT_FOUND',\n NOT_WEBEX_SITE: 'NOT_WEBEX_SITE',\n INVALID_SCHEDULED_MEETING_ORGANIZER: 'INVALID_SCHEDULED_MEETING_ORGANIZER',\n FREE_USER_MAX_PARTICIPANTS_JOINED_EXCEEDED: 'FREE_USER_MAX_PARTICIPANTS_JOINED_EXCEEDED',\n PAID_USER_MAX_PARTICIPANTS_JOINED_EXCEEDED: 'PAID_USER_MAX_PARTICIPANTS_JOINED_EXCEEDED',\n SERVICE_MAX_PARTICIPANTS_ROSTER_EXCEEDED: 'SERVICE_MAX_PARTICIPANTS_ROSTER_EXCEEDED',\n SERVICE_INITIAL_PARTICIPANTS_ROSTER_EXCEEDED: 'SERVICE_INITIAL_PARTICIPANTS_ROSTER_EXCEEDED',\n RESOURCE_GUEST_FORBIDDEN: 'RESOURCE_GUEST_FORBIDDEN',\n SERVICE_NO_MACHINE_OR_SERVICE_ACCOUNT: 'SERVICE_NO_MACHINE_OR_SERVICE_ACCOUNT',\n MODERATOR_ROLE_REMOVAL_NOT_ALLOWED: 'MODERATOR_ROLE_REMOVAL_NOT_ALLOWED',\n RECORDING_CONTROL_NOT_SUPPORTED: 'RECORDING_CONTROL_NOT_SUPPORTED',\n HOST_PIN_LOCKED: 'HOST_PIN_LOCKED',\n INVALID_HOST_PIN: 'INVALID_HOST_PIN',\n REQUESTING_PARTICIPANT_NOT_MODERATOR: 'REQUESTING_PARTICIPANT_NOT_MODERATOR',\n\n CONVERSATION_NOT_FOUND: 'CONVERSATION_NOT_FOUND',\n MEETING_LINK_NOT_FOUND: 'MEETING_LINK_NOT_FOUND',\n MEETING_INFO_NOT_FOUND: 'MEETING_INFO_NOT_FOUND',\n SCHEDULED_MEETING_NOT_FOUND: 'SCHEDULED_MEETING_NOT_FOUND',\n\n RECORDING_NOT_STARTED: 'RECORDING_NOT_STARTED',\n RECORDING_NOT_ENABLED: 'RECORDING_NOT_ENABLED',\n RECORDING_USER_STORAGE_FULL: 'RECORDING_USER_STORAGE_FULL',\n RECORDING_SITE_STORAGE_FULL: 'RECORDING_SITE_STORAGE_FULL',\n\n NO_SCHEDULED_MEETING: 'NO_SCHEDULED_MEETING',\n MEETING_FULL_UPDATE_NOT_ALLOWED: 'MEETING_FULL_UPDATE_NOT_ALLOWED',\n MODERATOR_ROLE_REMOVAL_NOT_VALID: 'MODERATOR_ROLE_REMOVAL_NOT_VALID',\n MODERATOR_ROLE_ADDITION_NOT_VALID: 'MODERATOR_ROLE_ADDITION_NOT_VALID',\n INVALID_CALL_START_TIME: 'INVALID_CALL_START_TIME',\n MEETING_STARTED_UPDATE_NOT_ALLOWED: 'MEETING_STARTED_UPDATE_NOT_ALLOWED',\n\n EXCEEDED_MAX_JOINED_PARTICIPANTS: 'EXCEEDED_MAX_JOINED_PARTICIPANTS',\n EXCEEDED_SERVICE_MAX_PARTICIPANTS: 'EXCEEDED_SERVICE_MAX_PARTICIPANTS',\n MEETING_IS_LOCKED: 'MEETING_IS_LOCKED',\n MEETING_IS_TERMINATING: 'MEETING_IS_TERMINATING',\n MEETING_REQUIRE_MODERATOR_PIN_INTENT: 'MEETING_REQUIRE_MODERATOR_PIN_INTENT',\n MEETING_REQUIRE_MODERATOR_PIN: 'MEETING_REQUIRE_MODERATOR_PIN',\n MEETING_REQUIRE_MODERATOR_ROLE: 'MEETING_REQUIRE_MODERATOR_ROLE',\n PMR_ACCOUNT_SUSPENDED: 'PMR_ACCOUNT_SUSPENDED',\n PMR_ACCOUNT_LOCKED: 'PMR_ACCOUNT_LOCKED',\n INVALID_JOIN_TIME: 'INVALID_JOIN_TIME',\n REQUIRES_WEBEX_LOGIN: 'REQUIRES_WEBEX_LOGIN',\n\n TOO_MANY_REQUESTS: 'TOO_MANY_REQUESTS',\n\n UNABLE_TO_LOOK_UP_DEVICE_INFORMATION: 'UNABLE_TO_LOOK_UP_DEVICE_INFORMATION',\n UNABLE_TO_LOOK_UP_CONVERSATION: 'UNABLE_TO_LOOK_UP_CONVERSATION',\n UNABLE_TO_LOOK_UP_CI_USER: 'UNABLE_TO_LOOK_UP_CI_USER',\n UNABLE_TO_CREATE_CONFLUENCE: 'UNABLE_TO_CREATE_CONFLUENCE',\n\n SERVICE_UNAVAILABLE: 'SERVICE_UNAVAILABLE',\n\n SOCKET_TIMEOUT: 'SOCKET_TIMEOUT',\n NO_HTTP_RESPONSE: 'NO_HTTP_RESPONSE',\n};\n\nexport const MEETING_END_REASON = {\n INACTIVE: 'INACTIVE',\n MEDIA_RELEASED: 'MEDIA_RELEASED',\n};\n\nexport enum SELF_POLICY {\n ENFORCE_VIRTUAL_BACKGROUND = 'enforceVirtualBackground',\n SUPPORT_LOCAL_RECORD = 'supportLocalRecord',\n SUPPORT_NETWORK_BASED_RECORD = 'supportNetworkBasedRecord',\n SUPPORT_REALTIME_CLOSE_CAPTION = 'supportRealtimeCloseCaption',\n SUPPORT_CHAT = 'supportChat',\n SUPPORT_DESKTOP_SHARE_REMOTE = 'supportDesktopShareRemote',\n SUPPORT_DESKTOP_SHARE = 'supportDesktopShare',\n SUPPORT_WHITEBOARD = 'supportWhiteboard',\n SUPPORT_FILE_TRANSFER = 'supportFileTransfer',\n SUPPORT_APP_SHARE = 'supportAppShare',\n SUPPORT_CAMERA_SHARE = 'supportCameraShare',\n SUPPORT_FILE_SHARE = 'supportFileShare',\n SUPPORT_ANNOTATION = 'supportAnnotation',\n SUPPORT_BROADCAST_MESSAGE = 'supportBroadcastMessage',\n SUPPORT_VIDEO = 'supportVideo',\n SUPPORT_HQV = 'supportHQV',\n SUPPORT_HDV = 'supportHDV',\n SUPPORT_PARTICIPANT_LIST = 'supportParticipantList',\n SUPPORT_VOIP = 'supportVoIP',\n}\n\nexport const DISPLAY_HINTS = {\n ADD_GUEST: 'ADD_GUEST',\n ROSTER_WAITING_TO_JOIN: 'ROSTER_WAITING_TO_JOIN',\n RECORDING_CONTROL_START: 'RECORDING_CONTROL_START',\n RECORDING_CONTROL_PAUSE: 'RECORDING_CONTROL_PAUSE',\n RECORDING_CONTROL_STOP: 'RECORDING_CONTROL_STOP',\n RECORDING_CONTROL_RESUME: 'RECORDING_CONTROL_RESUME',\n LOCK_CONTROL_UNLOCK: 'LOCK_CONTROL_UNLOCK',\n LOCK_CONTROL_LOCK: 'LOCK_CONTROL_LOCK',\n LOCK_STATUS_LOCKED: 'LOCK_STATUS_LOCKED',\n LOCK_STATUS_UNLOCKED: 'LOCK_STATUS_UNLOCKED',\n RAISE_HAND: 'RAISE_HAND',\n LOWER_ALL_HANDS: 'LOWER_ALL_HANDS',\n LOWER_SOMEONE_ELSES_HAND: 'LOWER_SOMEONE_ELSES_HAND',\n LEAVE_TRANSFER_HOST_END_MEETING: 'LEAVE_TRANSFER_HOST_END_MEETING',\n LEAVE_END_MEETING: 'LEAVE_END_MEETING',\n CAPTION_START: 'CAPTION_START',\n CAPTION_STATUS_ACTIVE: 'CAPTION_STATUS_ACTIVE',\n DISPLAY_REAL_TIME_TRANSLATION: 'DISPLAY_REAL_TIME_TRANSLATION',\n ENABLE_CAPTION_PANEL: 'ENABLE_CAPTION_PANEL',\n DISPLAY_NON_ENGLISH_ASR: 'DISPLAY_NON_ENGLISH_ASR',\n TRANSCRIPTION_CONTROL_START: 'TRANSCRIPTION_CONTROL_START',\n TRANSCRIPTION_CONTROL_STOP: 'TRANSCRIPTION_CONTROL_STOP',\n SAVE_TRANSCRIPTS_ENABLED: 'SAVE_TRANSCRIPTS_ENABLED',\n WEBEX_ASSISTANT_STATUS_ACTIVE: 'WEBEX_ASSISTANT_STATUS_ACTIVE',\n WAITING_FOR_OTHERS: 'WAITING_FOR_OTHERS',\n ENABLE_REACTIONS: 'ENABLE_REACTIONS',\n DISABLE_REACTIONS: 'DISABLE_REACTIONS',\n REACTIONS_ACTIVE: 'REACTIONS_ACTIVE',\n REACTIONS_INACTIVE: 'REACTIONS_INACTIVE',\n SHARE_CONTROL: 'SHARE_CONTROL',\n ENABLE_MUTE_ON_ENTRY: 'ENABLE_MUTE_ON_ENTRY',\n ENABLE_SHOW_DISPLAY_NAME: 'ENABLE_SHOW_DISPLAY_NAME',\n DISABLE_SHOW_DISPLAY_NAME: 'DISABLE_SHOW_DISPLAY_NAME',\n DISABLE_MUTE_ON_ENTRY: 'DISABLE_MUTE_ON_ENTRY',\n ENABLE_HARD_MUTE: 'ENABLE_HARD_MUTE',\n DISABLE_HARD_MUTE: 'DISABLE_HARD_MUTE',\n MUTE_ALL: 'MUTE_ALL',\n UNMUTE_ALL: 'UNMUTE_ALL',\n PRESENTER_CONTROL: 'PRESENTER_CONTROL',\n CAN_RENAME_SELF_AND_OBSERVED: 'CAN_RENAME_SELF_AND_OBSERVED',\n CAN_RENAME_OTHERS: 'CAN_RENAME_OTHERS',\n\n // breakout session\n BREAKOUT_MANAGEMENT: 'BREAKOUT_MANAGEMENT',\n BROADCAST_MESSAGE_TO_BREAKOUT: 'BROADCAST_MESSAGE_TO_BREAKOUT',\n UCF_SUPPRESS_BREAKOUTS_SUPPORT: 'UCF_SUPPRESS_BREAKOUTS_SUPPORT',\n DISABLE_ASK_FOR_HELP: 'DISABLE_ASK_FOR_HELP',\n DISABLE_BREAKOUT_PREASSIGNMENTS: 'DISABLE_BREAKOUT_PREASSIGNMENTS',\n DISABLE_LOBBY_TO_BREAKOUT: 'DISABLE_LOBBY_TO_BREAKOUT',\n\n // participants list\n DISABLE_VIEW_THE_PARTICIPANT_LIST: 'DISABLE_VIEW_THE_PARTICIPANT_LIST',\n ENABLE_VIEW_THE_PARTICIPANT_LIST: 'ENABLE_VIEW_THE_PARTICIPANT_LIST',\n\n // raise hand\n DISABLE_RAISE_HAND: 'DISABLE_RAISE_HAND',\n ENABLE_RAISE_HAND: 'ENABLE_RAISE_HAND',\n\n // video\n DISABLE_VIDEO: 'DISABLE_VIDEO',\n ENABLE_VIDEO: 'ENABLE_VIDEO',\n\n // Sharing\n SHARE_FILE: 'SHARE_FILE',\n SHARE_APPLICATION: 'SHARE_APPLICATION',\n SHARE_CAMERA: 'SHARE_CAMERA',\n SHARE_DESKTOP: 'SHARE_DESKTOP',\n SHARE_CONTENT: 'SHARE_CONTENT',\n SHARE_WHITEBOARD: 'SHARE_WHITEBOARD',\n\n // Voip (audio/video)\n VOIP_IS_ENABLED: 'VOIP_IS_ENABLED',\n};\n\nexport const INTERSTITIAL_DISPLAY_HINTS = [DISPLAY_HINTS.VOIP_IS_ENABLED];\n\nexport const SELF_ROLES = {\n COHOST: 'COHOST',\n MODERATOR: 'MODERATOR',\n ATTENDEE: 'ATTENDEE',\n};\n\nexport const MEETING_STATE = {\n STATES: {\n IDLE: 'IDLE',\n INCOMING: 'INCOMING',\n DIALING: 'DIALING',\n NOTIFIED: 'NOTIFIED',\n DECLINED: 'DECLINED',\n ON_GOING: 'ON_GOING',\n JOINED: 'JOINED',\n TERMINATING: 'TERMINATING',\n LEFT: 'LEFT',\n ENDED: 'ENDED',\n ERROR: 'ERROR',\n },\n};\n\nexport const MEETING_STATE_MACHINE = {\n TRANSITIONS: {\n FAIL: 'fail',\n RING: 'ring',\n REMOTE: 'remote',\n JOIN: 'join',\n DECLINE: 'decline',\n LEAVE: 'leave',\n END: 'end',\n RESET: 'reset',\n },\n STATES: {\n ERROR: 'ERROR',\n IDLE: 'IDLE',\n ENDED: 'ENDED',\n DECLINED: 'DECLINED',\n RINGING: 'RINGING',\n JOINED: 'JOINED',\n ANSWERED: 'ANSWERED',\n },\n};\n\nexport const MEETING_AUDIO_STATE_MACHINE = {\n TRANSITIONS: {\n TOGGLE: 'toggle',\n INIT: 'init',\n },\n STATES: {\n MUTE_SELF: 'SELF_AUDIO_OFF',\n UNMUTE_SELF: 'SELF_AUDIO_ON',\n },\n};\n\nexport const MEETING_VIDEO_STATE_MACHINE = {\n TRANSITIONS: {\n TOGGLE: 'toggle',\n INIT: 'init',\n },\n STATES: {\n MUTE_SELF: 'SELF_VIDEO_OFF',\n UNMUTE_SELF: 'SELF_VIDEO_ON',\n },\n};\n\nexport const PEER_CONNECTION_STATE = {\n CLOSED: 'closed',\n FAILED: 'failed',\n};\n\nexport const RECONNECTION = {\n STATE: {\n IN_PROGRESS: 'IN_PROGRESS',\n COMPLETE: 'COMPLETE',\n FAILURE: 'FAILURE',\n DEFAULT_TRY_COUNT: 0,\n DEFAULT_STATUS: '',\n },\n};\n\nexport const RESOURCE = {\n CLUSTERS: 'clusters',\n REACHABILITY: 'reachability',\n LOCI: 'loci',\n};\n\nexport const REACHABILITY = {\n localStorageResult: 'reachability.result',\n localStorageJoinCookie: 'reachability.joinCookie',\n namespace: 'Reachability',\n};\n\nexport const ROAP = {\n ROAP_TYPES: {\n OFFER: 'OFFER',\n ANSWER: 'ANSWER',\n OK: 'OK',\n ERROR: 'ERROR',\n TURN_DISCOVERY_REQUEST: 'TURN_DISCOVERY_REQUEST',\n TURN_DISCOVERY_RESPONSE: 'TURN_DISCOVERY_RESPONSE',\n },\n ROAP_MERCURY: 'event:locus.message.roap',\n ROAP_VERSION: '2',\n};\n\nexport const MediaContent = {\n main: 'main',\n slides: 'slides',\n};\n\nexport const NETWORK_STATUS = {\n DISCONNECTED: 'DISCONNECTED',\n RECONNECTING: 'RECONNECTING',\n CONNECTED: 'CONNECTED',\n};\n\nexport const NETWORK_TYPE = {\n VPN: 'vpn',\n UNKNOWN: 'unknown',\n WIFI: 'wifi',\n ETHERNET: 'ethernet',\n};\n\nexport const STATS = {\n SEND_DIRECTION: 'send',\n RECEIVE_DIRECTION: 'recv',\n REMOTE: 'remote',\n LOCAL: 'local',\n};\n\nexport const MQA_STATS = {\n MQA_SIZE: 120, // MQA is done on 60 second intervals by server def, add a buffer for missed events\n CA_TYPE: 'MQA',\n DEFAULT_IP: '0.0.0.0',\n DEFAULT_SHARE_SENDER_STATS: {\n common: {\n common: {\n direction: 'sendrecv', // TODO: parse from SDP and save globally\n isMain: false, // always true for share sender\n mariFecEnabled: false, // unavailable\n mariQosEnabled: false, // unavailable\n multistreamEnabled: false, // unavailable\n },\n availableBitrate: 0,\n dtlsBitrate: 0, // unavailable\n dtlsPackets: 0, // unavailable\n fecBitrate: 0, // unavailable\n fecPackets: 0, // unavailable\n maxBitrate: 0, // unavailable\n queueDelay: 0, // unavailable\n remoteJitter: 0, // unavailable\n remoteLossRate: 0,\n remoteReceiveRate: 0, // unavailable\n roundTripTime: 0,\n rtcpBitrate: 0, // unavailable\n rtcpPackets: 0, // unavailable\n rtpBitrate: 0, // unavailable\n rtpPackets: 0,\n stunBitrate: 0, // unavailable\n stunPackets: 0, // unavailable\n transportType: 'UDP', // TODO: parse the transport type from the SDP and save globally\n },\n streams: [\n {\n common: {\n codec: 'H264', // TODO: parse the codec from the SDP and save globally\n duplicateSsci: 0, // unavailable\n requestedBitrate: 0, // unavailable\n requestedFrames: 0, // unavailable\n rtpPackets: 0,\n ssci: 0, // unavailable\n transmittedBitrate: 0,\n transmittedFrameRate: 0,\n },\n h264CodecProfile: 'BP', // TODO: parse the profile level from h264 in the SDP and save globally\n localConfigurationChanges: 0, // unavailable\n remoteConfigurationChanges: 0, // unavailable\n requestedFrameSize: 0, // unavailable\n requestedKeyFrames: 0, // unavailable\n transmittedFrameSize: 0, // unavailable\n transmittedHeight: 0,\n transmittedKeyFrames: 0,\n transmittedWidth: 0,\n },\n ],\n },\n intervalMetadata: {\n memoryUsage: {\n cpuBitWidth: 0,\n mainProcessMaximumMemoryBytes: 0,\n osBitWidth: 0,\n processAverageMemoryUsage: 0,\n processMaximumMemoryBytes: 0,\n processMaximumMemoryUsage: 0,\n systemAverageMemoryUsage: 0,\n systemMaximumMemoryUsage: 0,\n },\n peerReflexiveIP: 'NULL', // TODO: save after ice trickling completes and use as a global variable\n processAverageCPU: 0,\n processMaximumCPU: 0,\n systemAverageCPU: 0,\n systemMaximumCPU: 0,\n },\n};\n\n// ****** MEDIA QUALITY CONSTANTS ****** //\n\n// these values must match allowed values of RemoteQualityLevel from the @webex/internal-media-core lib\nexport const QUALITY_LEVELS = {\n LOW: 'LOW',\n MEDIUM: 'MEDIUM',\n HIGH: 'HIGH',\n '360p': '360p',\n '480p': '480p',\n '720p': '720p',\n '1080p': '1080p',\n};\n\nexport const AVAILABLE_RESOLUTIONS = {\n '360p': {\n video: {\n width: {\n max: 640,\n ideal: 640,\n },\n height: {\n max: 360,\n ideal: 360,\n },\n },\n },\n '480p': {\n video: {\n width: {\n max: 640,\n ideal: 640,\n },\n height: {\n max: 480,\n ideal: 480,\n },\n },\n },\n '720p': {\n video: {\n width: {\n max: 1280,\n ideal: 1280,\n },\n height: {\n max: 720,\n ideal: 720,\n },\n },\n },\n '1080p': {\n video: {\n width: {\n max: 1920,\n ideal: 1920,\n },\n height: {\n max: 1080,\n ideal: 1080,\n },\n },\n },\n};\n\n/*\n * mqa Interval for sending stats metrics\n */\n\nexport const MQA_INTEVAL = 60000; // mqa analyzer interval its fixed to 60000\n\nexport const MEDIA_DEVICES = {\n MICROPHONE: 'microphone',\n SPEAKER: 'speaker',\n CAMERA: 'camera',\n};\n\nexport const PSTN_STATUS = {\n JOINED: 'JOINED', // we have provisioned a pstn device, which can be used to connect\n CONNECTED: 'CONNECTED', // user is connected to audio with pstn device\n LEFT: 'LEFT', // user has disconnected from the pstn device\n TRANSFERRING: 'TRANSFERRING', // usually happens in dial-out after the CONNECTED state\n SUCCESS: 'SUCCESS', // happens after the transfer (TRANSFERRING) is successful\n UNKNOWN: '', // placeholder if we haven't been told what the status is\n};\n\nexport const PASSWORD_STATUS = {\n NOT_REQUIRED: 'NOT_REQUIRED', // password is not required to join the meeting\n REQUIRED: 'REQUIRED', // client needs to provide the password by calling verifyPassword() before calling join()\n UNKNOWN: 'UNKNOWN', // we are waiting for information from the backend if password is required or not\n VERIFIED: 'VERIFIED', // client has already provided the password and it has been verified, client can proceed to call join()\n};\n\nexport const MEETING_INFO_FAILURE_REASON = {\n NONE: 'NONE', // meeting info was retrieved succesfully\n WRONG_PASSWORD: 'WRONG_PASSWORD', // meeting requires password and no password or wrong one was provided\n WRONG_CAPTCHA: 'WRONG_CAPTCHA', // wbxappapi requires a captcha code or a wrong captcha code was provided\n POLICY: 'POLICY', // meeting info request violates some meeting policy\n OTHER: 'OTHER', // any other error (network, etc)\n};\n\nexport const BNR_STATUS = {\n SHOULD_ENABLE: 'SHOULD_ENABLE',\n ENABLED: 'ENABLED',\n SHOULD_DISABLE: 'SHOULD_DISABLE',\n NOT_ENABLED: 'NOT_ENABLED',\n};\n\nexport const EMBEDDED_APP_TYPES = {\n SLIDO: 'SLIDO',\n OTHER: 'OTHER',\n};\n\nexport const DEFAULT_MEETING_INFO_REQUEST_BODY = {\n supportHostKey: true,\n supportCountryList: true,\n};\n\n/** the values for IP_VERSION are fixed and defined in Orpheus API */\nexport const IP_VERSION = {\n unknown: 0,\n only_ipv4: 4, // we know we have ipv4, we don't know or we don't have ipv6\n only_ipv6: 6, // we know we have ipv6, we don't know or we don't have ipv4\n ipv4_and_ipv6: 1,\n} as const;\n\nexport type IP_VERSION = (typeof IP_VERSION)[keyof typeof IP_VERSION];\n\n// constant for if the permissionToken is about to expire in the next 30 seconds, refresh it\nexport const MEETING_PERMISSION_TOKEN_REFRESH_THRESHOLD_IN_SEC = 30;\nexport const MEETING_PERMISSION_TOKEN_REFRESH_REASON = 'ttl-join';\n"],"mappings":"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"}
|
|
@@ -265,22 +265,19 @@ var StatsAnalyzer = /*#__PURE__*/function (_EventsScope) {
|
|
|
265
265
|
newMqa.intervalMetadata.peerReflexiveIP = this.statsResults.connectionType.local.ipAddress;
|
|
266
266
|
|
|
267
267
|
// Adding peripheral information
|
|
268
|
-
newMqa.intervalMetadata.peripherals = [];
|
|
269
268
|
newMqa.intervalMetadata.peripherals.push({
|
|
270
269
|
information: _constants._UNKNOWN_,
|
|
271
270
|
name: _constants.MEDIA_DEVICES.SPEAKER
|
|
272
271
|
});
|
|
273
272
|
if (this.statsResults['audio-send']) {
|
|
274
|
-
var _this$statsResults$au;
|
|
275
273
|
newMqa.intervalMetadata.peripherals.push({
|
|
276
|
-
information:
|
|
274
|
+
information: this.statsResults['audio-send'].trackLabel || _constants._UNKNOWN_,
|
|
277
275
|
name: _constants.MEDIA_DEVICES.MICROPHONE
|
|
278
276
|
});
|
|
279
277
|
}
|
|
280
278
|
if (this.statsResults['video-send']) {
|
|
281
|
-
var _this$statsResults$vi;
|
|
282
279
|
newMqa.intervalMetadata.peripherals.push({
|
|
283
|
-
information:
|
|
280
|
+
information: this.statsResults['video-send'].trackLabel || _constants._UNKNOWN_,
|
|
284
281
|
name: _constants.MEDIA_DEVICES.CAMERA
|
|
285
282
|
});
|
|
286
283
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["EVENTS","MEDIA_QUALITY","LOCAL_MEDIA_STARTED","LOCAL_MEDIA_STOPPED","REMOTE_MEDIA_STARTED","REMOTE_MEDIA_STOPPED","emptySender","trackLabel","maxPacketLossRatio","availableBandwidth","bytesSent","meanRemoteJitter","meanRoundTripTime","emptyReceiver","bytesReceived","meanRtpJitter","StatsAnalyzer","config","receiveSlotCallback","undefined","networkQualityMonitor","statsResults","defaultStats","mediaType","previousValue","currentValue","isLocal","Error","lastEmittedStartStopEvent","lastEmittedEvent","local","remote","newEvent","emit","file","function","type","result","isSender","isRemote","id","successfulCandidatePair","localCandidateId","transport","relayProtocol","toUpperCase","protocol","sendRecvType","STATS","SEND_DIRECTION","RECEIVE_DIRECTION","ipType","REMOTE","LOCAL","internal","candidates","candidateType","ipAddress","ip","portNumber","port","networkType","priority","timestamp","time","connectionType","NETWORK_TYPE","VPN","UNKNOWN","totalRoundTripTime","statsStarted","lastStatsResults","correlationId","mqaSentCount","lastMqaDataSent","forEach","includes","recv","send","status","meetingMediaStatus","newMqa","emptyMqaInterval","audioSender","emptyAudioTransmit","getAudioSenderMqa","audioTransmit","push","audioReceiver","emptyAudioReceive","getAudioReceiverMqa","audioReceive","videoSender","emptyVideoTransmit","getVideoSenderMqa","videoTransmit","videoReceiver","emptyVideoReceive","getVideoReceiverMqa","videoReceive","intervalMetadata","peerReflexiveIP","peripherals","information","_UNKNOWN_","name","MEDIA_DEVICES","SPEAKER","MICROPHONE","CAMERA","intervalNumber","resetStatsResults","data","mediaConnection","getStatsAndParse","then","statsInterval","setInterval","analyzerInterval","sendMqaData","mqaInterval","MQA_INTEVAL","resolve","sendOneLastMqa","clearInterval","getStatsResult","resolutions","processOutboundRTPResult","processInboundRTPResult","processTrackResult","compareSentAndReceived","parseCandidate","parseAudioSource","statsItem","types","DEFAULT_GET_STATS_FILTER","report","state","parseGetStatsResult","direction","currentDirection","localTrackLabel","csi","audioLevel","totalAudioEnergy","getCurrentStatsTotals","keyPrefix","value","filter","key","startsWith","reduce","prev","cur","getPreviousStatsTotals","getCurrentResolutionsStatsTotals","getPreviousResolutionsStatsTotals","expected","sendAudio","currentStats","previousStats","totalPacketsSent","LoggerProxy","logger","info","emitStartStopEvents","receiveAudio","currentPacketsReceived","previousPacketsReceived","currentSamplesReceived","previousSamplesReceived","sendVideo","framesEncoded","framesSent","receiveVideo","currentFramesReceived","previousFramesReceived","currentFramesDecoded","previousFramesDecoded","currentFramesDropped","previousFramesDropped","sendShare","getConnectionState","ConnectionState","Failed","trace","getTransceiverStats","transceiverStats","video","receivers","receiver","i","filterAndParseGetStatsResults","audio","screenShareVideo","screenShareAudio","senders","sender","compareLastStatsResult","JSON","parse","sendrecvType","kilobytes","frameWidth","frameHeight","width","height","hugeFramesSent","prevBytesSent","keyFramesEncoded","bytes","toFixed","outboundRtpId","packetsSent","totalKeyFramesEncoded","totalNackCount","nackCount","totalPliCount","pliCount","totalFirCount","firCount","encoderImplementation","qualityLimitationReason","qualityLimitationResolutionChanges","retransmittedPacketsSent","totalBytesSent","headerBytesSent","retransmittedBytesSent","receiveSlot","ssrc","idAndCsi","framesReceived","prevBytesReceived","packetsLost","totalPacketsReceived","packetsReceived","lastPacketReceivedTimestamp","currentPacketsLost","currentPacketLossRatio","totalPacketsLost","framesDecoded","keyFramesDecoded","decoderImplementation","fecPacketsDiscarded","fecPacketsReceived","totalBytesReceived","headerBytesReceived","jitter","totalSamplesReceived","totalSamplesDecoded","concealedSamples","remoteSource","framesDropped","trackIdentifier","jitterBufferDelay","jitterBufferEmittedCount","avgJitterDelay","totalPacketsLostOnReceiver","currentPacketLoss","packetsLostOnReceiver","roundTripTime","reportsReceived","overAllPacketLossRatio","determineUplinkNetworkQuality","remoteRtpResults","statsAnalyzerCurrentStats","EventsScope"],"sources":["index.ts"],"sourcesContent":["/* eslint-disable prefer-destructuring */\n\nimport {cloneDeep} from 'lodash';\nimport {ConnectionState} from '@webex/internal-media-core';\n\nimport EventsScope from '../common/events/events-scope';\nimport {\n DEFAULT_GET_STATS_FILTER,\n STATS,\n MQA_INTEVAL,\n NETWORK_TYPE,\n MEDIA_DEVICES,\n _UNKNOWN_,\n} from '../constants';\nimport {\n emptyAudioReceive,\n emptyAudioTransmit,\n emptyMqaInterval,\n emptyVideoReceive,\n emptyVideoTransmit,\n} from '../mediaQualityMetrics/config';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport defaultStats from './global';\nimport {\n getAudioSenderMqa,\n getAudioReceiverMqa,\n getVideoSenderMqa,\n getVideoReceiverMqa,\n} from './mqaUtil';\nimport {ReceiveSlot} from '../multistream/receiveSlot';\n\nexport const EVENTS = {\n MEDIA_QUALITY: 'MEDIA_QUALITY',\n LOCAL_MEDIA_STARTED: 'LOCAL_MEDIA_STARTED',\n LOCAL_MEDIA_STOPPED: 'LOCAL_MEDIA_STOPPED',\n REMOTE_MEDIA_STARTED: 'REMOTE_MEDIA_STARTED',\n REMOTE_MEDIA_STOPPED: 'REMOTE_MEDIA_STOPPED',\n};\n\nconst emptySender = {\n trackLabel: '',\n maxPacketLossRatio: 0,\n availableBandwidth: 0,\n bytesSent: 0,\n meanRemoteJitter: [],\n meanRoundTripTime: [],\n};\n\nconst emptyReceiver = {\n availableBandwidth: 0,\n bytesReceived: 0,\n meanRtpJitter: [],\n meanRoundTripTime: [],\n};\n\ntype ReceiveSlotCallback = (csi: number) => ReceiveSlot | undefined;\n\n/**\n * Stats Analyzer class that will emit events based on detected quality\n *\n * @export\n * @class StatsAnalyzer\n * @extends {EventsScope}\n */\nexport class StatsAnalyzer extends EventsScope {\n config: any;\n correlationId: any;\n lastEmittedStartStopEvent: any;\n lastMqaDataSent: any;\n lastStatsResults: any;\n meetingMediaStatus: any;\n mqaInterval: NodeJS.Timeout;\n mqaSentCount: any;\n networkQualityMonitor: any;\n mediaConnection: any;\n statsInterval: NodeJS.Timeout;\n statsResults: any;\n statsStarted: any;\n successfulCandidatePair: any;\n receiveSlotCallback: ReceiveSlotCallback;\n\n /**\n * Creates a new instance of StatsAnalyzer\n * @constructor\n * @public\n * @param {Object} config SDK Configuration Object\n * @param {Function} receiveSlotCallback Callback used to access receive slots.\n * @param {Object} networkQualityMonitor class for assessing network characteristics (jitter, packetLoss, latency)\n * @param {Object} statsResults Default properties for stats\n */\n constructor(\n config: any,\n receiveSlotCallback: ReceiveSlotCallback = () => undefined,\n networkQualityMonitor: object = {},\n statsResults: object = defaultStats\n ) {\n super();\n this.statsStarted = false;\n this.statsResults = statsResults;\n this.lastStatsResults = null;\n this.config = config;\n this.networkQualityMonitor = networkQualityMonitor;\n this.correlationId = config.correlationId;\n this.mqaSentCount = -1;\n this.lastMqaDataSent = {};\n this.lastEmittedStartStopEvent = {};\n this.receiveSlotCallback = receiveSlotCallback;\n this.successfulCandidatePair = {};\n }\n\n /**\n * Resets cumulative stats arrays.\n *\n * @public\n * @memberof StatsAnalyzer\n * @returns {void}\n */\n resetStatsResults() {\n Object.keys(this.statsResults).forEach((mediaType) => {\n if (mediaType.includes('recv')) {\n this.statsResults[mediaType].recv.meanRtpJitter = [];\n }\n\n if (mediaType.includes('send')) {\n this.statsResults[mediaType].send.meanRemoteJitter = [];\n this.statsResults[mediaType].send.meanRoundTripTime = [];\n }\n });\n }\n\n /**\n * sets mediaStatus status for analyzing metrics\n *\n * @public\n * @param {Object} status for the audio and video\n * @memberof StatsAnalyzer\n * @returns {void}\n */\n public updateMediaStatus(status: object) {\n this.meetingMediaStatus = status;\n }\n\n /**\n * captures MQA data from media connection\n *\n * @public\n * @memberof StatsAnalyzer\n * @returns {void}\n */\n sendMqaData() {\n const newMqa = cloneDeep(emptyMqaInterval);\n\n Object.keys(this.statsResults).forEach((mediaType) => {\n if (mediaType.includes('audio-send') || mediaType.includes('audio-share-send')) {\n const audioSender = cloneDeep(emptyAudioTransmit);\n\n getAudioSenderMqa({\n audioSender,\n statsResults: this.statsResults,\n lastMqaDataSent: this.lastMqaDataSent,\n mediaType,\n });\n newMqa.audioTransmit.push(audioSender);\n } else if (mediaType.includes('audio-recv') || mediaType.includes('audio-share-recv')) {\n const audioReceiver = cloneDeep(emptyAudioReceive);\n\n getAudioReceiverMqa({\n audioReceiver,\n statsResults: this.statsResults,\n lastMqaDataSent: this.lastMqaDataSent,\n mediaType,\n });\n newMqa.audioReceive.push(audioReceiver);\n } else if (mediaType.includes('video-send') || mediaType.includes('video-share-send')) {\n const videoSender = cloneDeep(emptyVideoTransmit);\n\n getVideoSenderMqa({\n videoSender,\n statsResults: this.statsResults,\n lastMqaDataSent: this.lastMqaDataSent,\n mediaType,\n });\n newMqa.videoTransmit.push(videoSender);\n } else if (mediaType.includes('video-recv') || mediaType.includes('video-share-recv')) {\n const videoReceiver = cloneDeep(emptyVideoReceive);\n\n getVideoReceiverMqa({\n videoReceiver,\n statsResults: this.statsResults,\n lastMqaDataSent: this.lastMqaDataSent,\n mediaType,\n });\n newMqa.videoReceive.push(videoReceiver);\n }\n });\n\n newMqa.intervalMetadata.peerReflexiveIP = this.statsResults.connectionType.local.ipAddress;\n\n // Adding peripheral information\n newMqa.intervalMetadata.peripherals = [];\n\n newMqa.intervalMetadata.peripherals.push({information: _UNKNOWN_, name: MEDIA_DEVICES.SPEAKER});\n if (this.statsResults['audio-send']) {\n newMqa.intervalMetadata.peripherals.push({\n information: this.statsResults['audio-send']?.trackLabel,\n name: MEDIA_DEVICES.MICROPHONE,\n });\n }\n if (this.statsResults['video-send']) {\n newMqa.intervalMetadata.peripherals.push({\n information: this.statsResults['video-send']?.trackLabel,\n name: MEDIA_DEVICES.CAMERA,\n });\n }\n\n newMqa.networkType = this.statsResults.connectionType.local.networkType;\n\n this.mqaSentCount += 1;\n\n newMqa.intervalNumber = this.mqaSentCount;\n\n this.resetStatsResults();\n\n this.emit(\n {\n file: 'statsAnalyzer',\n function: 'sendMqaData',\n },\n EVENTS.MEDIA_QUALITY,\n {\n data: newMqa,\n // @ts-ignore\n networkType: newMqa.networkType,\n }\n );\n }\n\n /**\n * updated the media connection when changed\n *\n * @private\n * @memberof StatsAnalyzer\n * @param {RoapMediaConnection} mediaConnection\n * @returns {void}\n */\n updateMediaConnection(mediaConnection: any) {\n this.mediaConnection = mediaConnection;\n }\n\n /**\n * Starts the stats analyzer on interval\n *\n * @public\n * @memberof StatsAnalyzer\n * @param {RoapMediaConnection} mediaConnection\n * @returns {Promise}\n */\n public startAnalyzer(mediaConnection: any) {\n if (!this.statsStarted) {\n this.statsStarted = true;\n this.mediaConnection = mediaConnection;\n\n return this.getStatsAndParse().then(() => {\n this.statsInterval = setInterval(() => {\n this.getStatsAndParse();\n }, this.config.analyzerInterval);\n // Trigger initial fetch\n this.sendMqaData();\n this.mqaInterval = setInterval(() => {\n this.sendMqaData();\n }, MQA_INTEVAL);\n });\n }\n\n return Promise.resolve();\n }\n\n /**\n * Cleans up the analyzer when done\n *\n * @public\n * @memberof StatsAnalyzer\n * @returns {void}\n */\n public stopAnalyzer() {\n const sendOneLastMqa = this.mqaInterval && this.statsInterval;\n\n if (this.statsInterval) {\n clearInterval(this.statsInterval);\n this.statsInterval = undefined;\n }\n\n if (this.mqaInterval) {\n clearInterval(this.mqaInterval);\n this.mqaInterval = undefined;\n }\n\n if (sendOneLastMqa) {\n return this.getStatsAndParse().then(() => {\n this.sendMqaData();\n this.mediaConnection = null;\n });\n }\n\n return Promise.resolve();\n }\n\n /**\n * Parse a single result of get stats\n *\n * @private\n * @param {*} getStatsResult\n * @param {String} type\n * @param {boolean} isSender\n * @returns {void}\n * @memberof StatsAnalyzer\n */\n private parseGetStatsResult(getStatsResult: any, type: string, isSender: boolean) {\n if (!getStatsResult) {\n return;\n }\n\n // Generate empty stats results\n if (!this.statsResults[type]) {\n this.statsResults[type] = {};\n }\n\n if (isSender && !this.statsResults[type].send) {\n this.statsResults[type].send = cloneDeep(emptySender);\n } else if (!isSender && !this.statsResults[type].recv) {\n this.statsResults[type].recv = cloneDeep(emptyReceiver);\n }\n\n if (!this.statsResults.resolutions[type]) {\n this.statsResults.resolutions[type] = {};\n }\n\n if (isSender && !this.statsResults.resolutions[type].send) {\n this.statsResults.resolutions[type].send = cloneDeep(emptySender);\n } else if (!isSender && !this.statsResults.resolutions[type].recv) {\n this.statsResults.resolutions[type].recv = cloneDeep(emptyReceiver);\n }\n\n if (!this.statsResults.internal[type]) {\n this.statsResults.internal[type] = {};\n }\n\n if (isSender && !this.statsResults.internal[type].send) {\n this.statsResults.internal[type].send = cloneDeep(emptySender);\n } else if (!isSender && !this.statsResults.internal[type].recv) {\n this.statsResults.internal[type].recv = cloneDeep(emptyReceiver);\n }\n\n switch (getStatsResult.type) {\n case 'outbound-rtp':\n this.processOutboundRTPResult(getStatsResult, type);\n break;\n case 'inbound-rtp':\n this.processInboundRTPResult(getStatsResult, type);\n break;\n case 'track':\n this.processTrackResult(getStatsResult, type);\n break;\n case 'remote-inbound-rtp':\n case 'remote-outbound-rtp':\n // @ts-ignore\n this.compareSentAndReceived(getStatsResult, type, isSender);\n break;\n case 'remotecandidate':\n case 'remote-candidate':\n this.parseCandidate(getStatsResult, type, isSender, true);\n break;\n case 'local-candidate':\n this.parseCandidate(getStatsResult, type, isSender, false);\n break;\n case 'media-source':\n // @ts-ignore\n this.parseAudioSource(getStatsResult, type);\n break;\n default:\n break;\n }\n }\n\n /**\n * Filters the get stats results for types\n * @private\n * @param {Array} statsItem\n * @param {String} type\n * @param {boolean} isSender\n * @returns {void}\n */\n filterAndParseGetStatsResults(statsItem: any, type: string, isSender: boolean) {\n const {types} = DEFAULT_GET_STATS_FILTER;\n\n // get the successful candidate pair before parsing stats.\n statsItem.report.forEach((report) => {\n if (report.type === 'candidate-pair' && report.state === 'succeeded') {\n this.successfulCandidatePair = report;\n }\n });\n\n statsItem.report.forEach((result) => {\n if (types.includes(result.type)) {\n this.parseGetStatsResult(result, type, isSender);\n }\n });\n\n if (this.statsResults[type]) {\n this.statsResults[type].direction = statsItem.currentDirection;\n this.statsResults[type].trackLabel = statsItem.localTrackLabel;\n this.statsResults[type].csi = statsItem.csi;\n // reset the successful candidate pair.\n this.successfulCandidatePair = {};\n }\n }\n\n /**\n * parse the audio\n * @param {String} result\n * @param {boolean} type\n * @returns {void}\n */\n parseAudioSource(result: any, type: any) {\n if (!result) {\n return;\n }\n\n if (type.includes('audio-send')) {\n this.statsResults[type].send.audioLevel = result.audioLevel;\n this.statsResults[type].send.totalAudioEnergy = result.totalAudioEnergy;\n }\n }\n\n /**\n * emits started/stopped events for local/remote media by checking\n * if given values are increasing or not. The previousValue, currentValue\n * params can be any numerical value like number of receive packets or\n * decoded frames, etc.\n *\n * @private\n * @param {string} mediaType\n * @param {number} previousValue - value to compare\n * @param {number} currentValue - value to compare (must be same type of value as previousValue)\n * @param {boolean} isLocal - true if stats are for local media being sent out, false for remote media being received\n * @memberof StatsAnalyzer\n * @returns {void}\n */\n emitStartStopEvents = (\n mediaType: string,\n previousValue: number,\n currentValue: number,\n isLocal: boolean\n ) => {\n if (mediaType !== 'audio' && mediaType !== 'video' && mediaType !== 'share') {\n throw new Error(`Unsupported mediaType: ${mediaType}`);\n }\n\n // eslint-disable-next-line no-param-reassign\n if (previousValue === undefined) previousValue = 0;\n // eslint-disable-next-line no-param-reassign\n if (currentValue === undefined) currentValue = 0;\n\n if (!this.lastEmittedStartStopEvent[mediaType]) {\n this.lastEmittedStartStopEvent[mediaType] = {};\n }\n\n const lastEmittedEvent = isLocal\n ? this.lastEmittedStartStopEvent[mediaType].local\n : this.lastEmittedStartStopEvent[mediaType].remote;\n\n let newEvent;\n\n if (currentValue - previousValue > 0) {\n newEvent = isLocal ? EVENTS.LOCAL_MEDIA_STARTED : EVENTS.REMOTE_MEDIA_STARTED;\n } else if (currentValue === previousValue && currentValue > 0) {\n newEvent = isLocal ? EVENTS.LOCAL_MEDIA_STOPPED : EVENTS.REMOTE_MEDIA_STOPPED;\n }\n\n if (newEvent && lastEmittedEvent !== newEvent) {\n if (isLocal) {\n this.lastEmittedStartStopEvent[mediaType].local = newEvent;\n } else {\n this.lastEmittedStartStopEvent[mediaType].remote = newEvent;\n }\n this.emit(\n {\n file: 'statsAnalyzer/index',\n function: 'compareLastStatsResult',\n },\n newEvent,\n {\n type: mediaType,\n }\n );\n }\n };\n\n /**\n * compares current and previous stats to check if packets are not sent\n *\n * @private\n * @memberof StatsAnalyzer\n * @returns {void}\n */\n private compareLastStatsResult() {\n if (this.lastStatsResults !== null && this.meetingMediaStatus) {\n const getCurrentStatsTotals = (keyPrefix: string, value: string): number =>\n Object.keys(this.statsResults)\n .filter((key) => key.startsWith(keyPrefix))\n .reduce((prev, cur) => prev + (this.statsResults[cur]?.recv[value] || 0), 0);\n\n const getPreviousStatsTotals = (keyPrefix: string, value: string): number =>\n Object.keys(this.statsResults)\n .filter((key) => key.startsWith(keyPrefix))\n .reduce((prev, cur) => prev + (this.lastStatsResults[cur]?.recv[value] || 0), 0);\n\n const getCurrentResolutionsStatsTotals = (keyPrefix: string, value: string): number =>\n Object.keys(this.statsResults)\n .filter((key) => key.startsWith(keyPrefix))\n .reduce((prev, cur) => prev + (this.statsResults.resolutions[cur]?.recv[value] || 0), 0);\n\n const getPreviousResolutionsStatsTotals = (keyPrefix: string, value: string): number =>\n Object.keys(this.statsResults)\n .filter((key) => key.startsWith(keyPrefix))\n .reduce(\n (prev, cur) => prev + (this.lastStatsResults.resolutions[cur]?.recv[value] || 0),\n 0\n );\n\n if (this.meetingMediaStatus.expected.sendAudio && this.lastStatsResults['audio-send']) {\n // compare audio stats sent\n // NOTE: relies on there being only one sender.\n const currentStats = this.statsResults['audio-send'].send;\n const previousStats = this.lastStatsResults['audio-send'].send;\n\n if (\n currentStats.totalPacketsSent === previousStats.totalPacketsSent ||\n currentStats.totalPacketsSent === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No audio RTP packets sent`,\n currentStats.totalPacketsSent\n );\n } else {\n if (\n currentStats.totalAudioEnergy === previousStats.totalAudioEnergy ||\n currentStats.totalAudioEnergy === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No audio Energy present`,\n currentStats.totalAudioEnergy\n );\n }\n\n if (currentStats.audioLevel === 0) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> audio level is 0 for the user`\n );\n }\n }\n\n this.emitStartStopEvents(\n 'audio',\n previousStats.totalPacketsSent,\n currentStats.totalPacketsSent,\n true\n );\n }\n\n if (this.meetingMediaStatus.expected.receiveAudio) {\n // compare audio stats received\n const currentPacketsReceived = getCurrentStatsTotals('audio-recv', 'totalPacketsReceived');\n const previousPacketsReceived = getPreviousStatsTotals(\n 'audio-recv',\n 'totalPacketsReceived'\n );\n const currentSamplesReceived = getCurrentStatsTotals('audio-recv', 'totalSamplesReceived');\n const previousSamplesReceived = getPreviousStatsTotals(\n 'audio-recv',\n 'totalSamplesReceived'\n );\n\n if (currentPacketsReceived === previousPacketsReceived || currentPacketsReceived === 0) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No audio RTP packets received`,\n currentPacketsReceived\n );\n } else if (\n currentSamplesReceived === previousSamplesReceived ||\n currentSamplesReceived === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No audio samples received`,\n currentSamplesReceived\n );\n }\n\n this.emitStartStopEvents('audio', previousPacketsReceived, currentPacketsReceived, false);\n }\n\n if (this.meetingMediaStatus.expected.sendVideo && this.lastStatsResults['video-send']) {\n // compare video stats sent\n const currentStats = this.statsResults['video-send'].send;\n const previousStats = this.lastStatsResults['video-send'].send;\n\n if (\n currentStats.totalPacketsSent === previousStats.totalPacketsSent ||\n currentStats.totalPacketsSent === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No video RTP packets sent`,\n currentStats.totalPacketsSent\n );\n } else {\n if (\n currentStats.framesEncoded === previousStats.framesEncoded ||\n currentStats.framesEncoded === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No video Frames Encoded`,\n currentStats.framesEncoded\n );\n }\n\n if (\n this.statsResults.resolutions['video-send'].send.framesSent ===\n this.lastStatsResults.resolutions['video-send'].send.framesSent ||\n this.statsResults.resolutions['video-send'].send.framesSent === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No video Frames sent`,\n this.statsResults.resolutions['video-send'].send.framesSent\n );\n }\n }\n\n this.emitStartStopEvents('video', previousStats.framesSent, currentStats.framesSent, true);\n }\n\n if (this.meetingMediaStatus.expected.receiveVideo) {\n // compare video stats received\n const currentPacketsReceived = getCurrentStatsTotals('video-recv', 'totalPacketsReceived');\n const previousPacketsReceived = getPreviousStatsTotals(\n 'video-recv',\n 'totalPacketsReceived'\n );\n const currentFramesReceived = getCurrentResolutionsStatsTotals(\n 'video-recv',\n 'framesReceived'\n );\n const previousFramesReceived = getPreviousResolutionsStatsTotals(\n 'video-recv',\n 'framesReceived'\n );\n const currentFramesDecoded = getCurrentStatsTotals('video-recv', 'framesDecoded');\n const previousFramesDecoded = getPreviousStatsTotals('video-recv', 'framesDecoded');\n const currentFramesDropped = getCurrentResolutionsStatsTotals(\n 'video-recv',\n 'framesDropped'\n );\n const previousFramesDropped = getPreviousResolutionsStatsTotals(\n 'video-recv',\n 'framesDropped'\n );\n\n if (currentPacketsReceived === previousPacketsReceived || currentPacketsReceived === 0) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No video RTP packets received`,\n currentPacketsReceived\n );\n } else {\n if (currentFramesReceived === previousFramesReceived || currentFramesReceived === 0) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No video frames received`,\n currentFramesReceived\n );\n }\n\n if (currentFramesDecoded === previousFramesDecoded || currentFramesDecoded === 0) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No video frames decoded`,\n currentFramesDecoded\n );\n }\n\n if (currentFramesDropped - previousFramesDropped > 10) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> video frames are getting dropped`,\n currentFramesDropped - previousFramesDropped\n );\n }\n }\n\n this.emitStartStopEvents('video', previousFramesDecoded, currentFramesDecoded, false);\n }\n\n if (this.meetingMediaStatus.expected.sendShare && this.lastStatsResults['video-share-send']) {\n // compare share stats sent\n\n const currentStats = this.statsResults['video-share-send'].send;\n const previousStats = this.lastStatsResults['video-share-send'].send;\n\n if (\n currentStats.totalPacketsSent === previousStats.totalPacketsSent ||\n currentStats.totalPacketsSent === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No share RTP packets sent`,\n currentStats.totalPacketsSent\n );\n } else {\n if (\n currentStats.framesEncoded === previousStats.framesEncoded ||\n currentStats.framesEncoded === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No share frames getting encoded`,\n currentStats.framesEncoded\n );\n }\n\n if (\n this.statsResults.resolutions['video-share-send'].send.framesSent ===\n this.lastStatsResults.resolutions['video-share-send'].send.framesSent ||\n this.statsResults.resolutions['video-share-send'].send.framesSent === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No share frames sent`,\n this.statsResults.resolutions['video-share-send'].send.framesSent\n );\n }\n }\n }\n\n if (this.meetingMediaStatus.expected.sendShare) {\n // TODO:need to check receive share value\n // compare share stats received\n const currentPacketsReceived = getCurrentStatsTotals(\n 'video-share-recv',\n 'totalPacketsReceived'\n );\n const previousPacketsReceived = getPreviousStatsTotals(\n 'video-share-recv',\n 'totalPacketsReceived'\n );\n const currentFramesReceived = getCurrentResolutionsStatsTotals(\n 'video-share-recv',\n 'framesReceived'\n );\n const previousFramesReceived = getPreviousResolutionsStatsTotals(\n 'video-share-recv',\n 'framesReceived'\n );\n const currentFramesDecoded = getCurrentStatsTotals('video-share-recv', 'framesDecoded');\n const previousFramesDecoded = getPreviousStatsTotals('video-share-recv', 'framesDecoded');\n const currentFramesDropped = getCurrentResolutionsStatsTotals(\n 'video-share-recv',\n 'framesDropped'\n );\n const previousFramesDropped = getPreviousResolutionsStatsTotals(\n 'video-share-recv',\n 'framesDropped'\n );\n\n if (currentPacketsReceived === previousPacketsReceived || currentPacketsReceived === 0) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No share RTP packets received`,\n currentPacketsReceived\n );\n } else {\n if (currentFramesReceived === previousFramesReceived || currentFramesReceived === 0) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No share frames received`,\n currentFramesReceived\n );\n }\n\n if (currentFramesDecoded === previousFramesDecoded || currentFramesDecoded === 0) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No share frames decoded`,\n currentFramesDecoded\n );\n }\n\n if (currentFramesDropped - previousFramesDropped > 10) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> share frames are getting dropped`,\n currentFramesDropped - previousFramesDropped\n );\n }\n }\n\n // we are not calling emitStartStopEvents() for sending or receiving share because sharing is often started and stopped\n // in meetings and this.meetingMediaStatus.expected values can be out of sync with the actual packet flow\n // so we would send \"sharing stopped\" events incorrectly\n }\n }\n }\n\n /**\n * Does a `getStats` on all the transceivers and parses the results\n *\n * @private\n * @memberof StatsAnalyzer\n * @returns {Promise}\n */\n private getStatsAndParse() {\n if (!this.mediaConnection) {\n return Promise.resolve();\n }\n\n if (\n this.mediaConnection &&\n this.mediaConnection.getConnectionState() === ConnectionState.Failed\n ) {\n LoggerProxy.logger.trace(\n 'StatsAnalyzer:index#getStatsAndParse --> media connection is in failed state'\n );\n\n return Promise.resolve();\n }\n\n LoggerProxy.logger.trace('StatsAnalyzer:index#getStatsAndParse --> Collecting Stats');\n\n return this.mediaConnection.getTransceiverStats().then((transceiverStats) => {\n transceiverStats.video.receivers.forEach((receiver, i) =>\n this.filterAndParseGetStatsResults(receiver, `video-recv-${i}`, false)\n );\n transceiverStats.audio.receivers.forEach((receiver, i) =>\n this.filterAndParseGetStatsResults(receiver, `audio-recv-${i}`, false)\n );\n transceiverStats.screenShareVideo.receivers.forEach((receiver, i) =>\n this.filterAndParseGetStatsResults(receiver, `video-share-recv-${i}`, false)\n );\n transceiverStats.screenShareAudio.receivers.forEach((receiver, i) =>\n this.filterAndParseGetStatsResults(receiver, `audio-share-recv-${i}`, false)\n );\n\n transceiverStats.video.senders.forEach((sender, i) => {\n if (i > 0) {\n throw new Error('Stats Analyzer does not support multiple senders.');\n }\n this.filterAndParseGetStatsResults(sender, 'video-send', true);\n });\n transceiverStats.audio.senders.forEach((sender, i) => {\n if (i > 0) {\n throw new Error('Stats Analyzer does not support multiple senders.');\n }\n this.filterAndParseGetStatsResults(sender, 'audio-send', true);\n });\n transceiverStats.screenShareVideo.senders.forEach((sender, i) => {\n if (i > 0) {\n throw new Error('Stats Analyzer does not support multiple senders.');\n }\n this.filterAndParseGetStatsResults(sender, 'video-share-send', true);\n });\n transceiverStats.screenShareAudio.senders.forEach((sender, i) => {\n if (i > 0) {\n throw new Error('Stats Analyzer does not support multiple senders.');\n }\n this.filterAndParseGetStatsResults(sender, 'audio-share-send', true);\n });\n\n this.compareLastStatsResult();\n\n // Save the last results to compare with the current\n // DO Deep copy, for some reason it takes the reference all the time rather then old value set\n this.lastStatsResults = JSON.parse(JSON.stringify(this.statsResults));\n\n LoggerProxy.logger.trace(\n 'StatsAnalyzer:index#getStatsAndParse --> Finished Collecting Stats'\n );\n });\n }\n\n /**\n * Processes OutboundRTP stats result and stores\n * @private\n * @param {*} result\n * @param {*} mediaType\n * @returns {void}\n */\n private processOutboundRTPResult(result: any, mediaType: any) {\n const sendrecvType = STATS.SEND_DIRECTION;\n\n if (result.bytesSent) {\n let kilobytes = 0;\n\n if (result.frameWidth && result.frameHeight) {\n this.statsResults.resolutions[mediaType][sendrecvType].width = result.frameWidth;\n this.statsResults.resolutions[mediaType][sendrecvType].height = result.frameHeight;\n this.statsResults.resolutions[mediaType][sendrecvType].framesSent = result.framesSent;\n this.statsResults.resolutions[mediaType][sendrecvType].hugeFramesSent =\n result.hugeFramesSent;\n }\n\n if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesSent) {\n this.statsResults.internal[mediaType][sendrecvType].prevBytesSent = result.bytesSent;\n }\n if (!this.statsResults.internal[mediaType][sendrecvType].framesEncoded) {\n this.statsResults.internal[mediaType][sendrecvType].framesEncoded = result.framesEncoded;\n }\n if (!this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded) {\n this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded =\n result.keyFramesEncoded;\n }\n\n const bytes =\n result.bytesSent - this.statsResults.internal[mediaType][sendrecvType].prevBytesSent;\n\n this.statsResults.internal[mediaType][sendrecvType].prevBytesSent = result.bytesSent;\n\n kilobytes = bytes / 1024;\n\n this.statsResults[mediaType][sendrecvType].availableBandwidth = kilobytes.toFixed(1);\n this.statsResults[mediaType].bytesSent = kilobytes;\n\n this.statsResults[mediaType][sendrecvType].framesEncoded =\n result.framesEncoded - this.statsResults.internal[mediaType][sendrecvType].framesEncoded;\n this.statsResults[mediaType][sendrecvType].keyFramesEncoded =\n result.keyFramesEncoded -\n this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded;\n this.statsResults.internal[mediaType].outboundRtpId = result.id;\n\n if (!this.statsResults.internal[mediaType][sendrecvType].packetsSent) {\n this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent;\n }\n\n this.statsResults[mediaType][sendrecvType].packetsSent =\n result.packetsSent - this.statsResults.internal[mediaType][sendrecvType].packetsSent;\n this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent;\n\n // Data saved to send MQA metrics\n\n this.statsResults[mediaType][sendrecvType].totalKeyFramesEncoded = result.keyFramesEncoded;\n this.statsResults[mediaType][sendrecvType].totalNackCount = result.nackCount;\n this.statsResults[mediaType][sendrecvType].totalPliCount = result.pliCount;\n this.statsResults[mediaType][sendrecvType].totalPacketsSent = result.packetsSent;\n this.statsResults[mediaType][sendrecvType].totalFirCount = result.firCount;\n this.statsResults[mediaType][sendrecvType].framesSent = result.framesSent;\n this.statsResults[mediaType][sendrecvType].framesEncoded = result.framesEncoded;\n this.statsResults[mediaType][sendrecvType].encoderImplementation =\n result.encoderImplementation;\n this.statsResults[mediaType][sendrecvType].qualityLimitationReason =\n result.qualityLimitationReason;\n this.statsResults[mediaType][sendrecvType].qualityLimitationResolutionChanges =\n result.qualityLimitationResolutionChanges;\n this.statsResults[mediaType][sendrecvType].retransmittedPacketsSent =\n result.retransmittedPacketsSent;\n this.statsResults[mediaType][sendrecvType].totalBytesSent = result.bytesSent;\n this.statsResults[mediaType][sendrecvType].headerBytesSent = result.headerBytesSent;\n this.statsResults[mediaType][sendrecvType].retransmittedBytesSent =\n result.retransmittedBytesSent;\n }\n }\n\n /**\n * Processes InboundRTP stats result and stores\n * @private\n * @param {*} result\n * @param {*} mediaType\n * @returns {void}\n */\n private processInboundRTPResult(result: any, mediaType: any) {\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n if (result.bytesReceived) {\n let kilobytes = 0;\n const receiveSlot = this.receiveSlotCallback(result.ssrc);\n const idAndCsi = receiveSlot\n ? `id: \"${receiveSlot.id || ''}\"${receiveSlot.csi ? ` and csi: ${receiveSlot.csi}` : ''}`\n : '';\n\n if (result.frameWidth && result.frameHeight) {\n this.statsResults.resolutions[mediaType][sendrecvType].width = result.frameWidth;\n this.statsResults.resolutions[mediaType][sendrecvType].height = result.frameHeight;\n this.statsResults.resolutions[mediaType][sendrecvType].framesReceived =\n result.framesReceived;\n }\n\n if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived) {\n this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived =\n result.bytesReceived;\n }\n\n if (!this.statsResults.internal[mediaType][sendrecvType].pliCount) {\n this.statsResults.internal[mediaType][sendrecvType].pliCount = result.pliCount;\n }\n\n if (!this.statsResults.internal[mediaType][sendrecvType].packetsLost) {\n this.statsResults.internal[mediaType][sendrecvType].packetsLost = result.packetsLost;\n }\n\n if (!this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived) {\n this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived =\n result.packetsReceived;\n }\n\n if (!this.statsResults.internal[mediaType][sendrecvType].lastPacketReceivedTimestamp) {\n this.statsResults.internal[mediaType][sendrecvType].lastPacketReceivedTimestamp =\n result.lastPacketReceivedTimestamp;\n }\n\n const bytes =\n result.bytesReceived -\n this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived;\n\n this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived = result.bytesReceived;\n\n kilobytes = bytes / 1024;\n this.statsResults[mediaType][sendrecvType].availableBandwidth = kilobytes.toFixed(1);\n this.statsResults[mediaType].bytesReceived = kilobytes.toFixed(1);\n\n this.statsResults[mediaType][sendrecvType].pliCount =\n result.pliCount - this.statsResults.internal[mediaType][sendrecvType].pliCount;\n this.statsResults[mediaType][sendrecvType].currentPacketsLost =\n result.packetsLost - this.statsResults.internal[mediaType][sendrecvType].packetsLost;\n if (this.statsResults[mediaType][sendrecvType].currentPacketsLost < 0) {\n this.statsResults[mediaType][sendrecvType].currentPacketsLost = 0;\n }\n\n this.statsResults[mediaType][sendrecvType].packetsReceived =\n result.packetsReceived -\n this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived;\n this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived =\n result.packetsReceived;\n\n if (this.statsResults[mediaType][sendrecvType].packetsReceived === 0) {\n if (receiveSlot) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#processInboundRTPResult --> No packets received for receive slot ${idAndCsi}`,\n this.statsResults[mediaType][sendrecvType].packetsReceived\n );\n }\n }\n\n // Check the over all packet Lost ratio\n this.statsResults[mediaType][sendrecvType].currentPacketLossRatio =\n this.statsResults[mediaType][sendrecvType].currentPacketsLost > 0\n ? this.statsResults[mediaType][sendrecvType].currentPacketsLost /\n (this.statsResults[mediaType][sendrecvType].packetsReceived +\n this.statsResults[mediaType][sendrecvType].currentPacketsLost)\n : 0;\n if (this.statsResults[mediaType][sendrecvType].currentPacketLossRatio > 3) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#processInboundRTPResult --> Packets getting lost from the receiver with slot ${idAndCsi}`,\n this.statsResults[mediaType][sendrecvType].currentPacketLossRatio\n );\n }\n\n // TODO: check the packet loss value is negative values here\n\n if (result.packetsLost) {\n this.statsResults[mediaType][sendrecvType].totalPacketsLost =\n result.packetsLost > 0 ? result.packetsLost : -result.packetsLost;\n } else {\n this.statsResults[mediaType][sendrecvType].totalPacketsLost = 0;\n }\n\n this.statsResults[mediaType][sendrecvType].lastPacketReceivedTimestamp =\n result.lastPacketReceivedTimestamp;\n\n // From Thin\n this.statsResults[mediaType][sendrecvType].totalNackCount = result.nackCount;\n this.statsResults[mediaType][sendrecvType].totalPliCount = result.pliCount;\n this.statsResults[mediaType][sendrecvType].framesDecoded = result.framesDecoded;\n this.statsResults[mediaType][sendrecvType].keyFramesDecoded = result.keyFramesDecoded;\n\n this.statsResults[mediaType][sendrecvType].decoderImplementation =\n result.decoderImplementation;\n this.statsResults[mediaType][sendrecvType].totalPacketsReceived = result.packetsReceived;\n\n this.statsResults[mediaType][sendrecvType].fecPacketsDiscarded = result.fecPacketsDiscarded;\n this.statsResults[mediaType][sendrecvType].fecPacketsReceived = result.fecPacketsReceived;\n this.statsResults[mediaType][sendrecvType].totalBytesReceived = result.bytesReceived;\n this.statsResults[mediaType][sendrecvType].headerBytesReceived = result.headerBytesReceived;\n\n this.statsResults[mediaType][sendrecvType].meanRtpJitter.push(result.jitter);\n\n // Audio stats\n\n this.statsResults[mediaType][sendrecvType].audioLevel = result.audioLevel;\n this.statsResults[mediaType][sendrecvType].totalAudioEnergy = result.totalAudioEnergy;\n this.statsResults[mediaType][sendrecvType].totalSamplesReceived =\n result.totalSamplesReceived || 0;\n this.statsResults[mediaType][sendrecvType].totalSamplesDecoded =\n result.totalSamplesDecoded || 0;\n this.statsResults[mediaType][sendrecvType].concealedSamples = result.concealedSamples || 0;\n }\n }\n\n /**\n * Processes remote and local candidate result and stores\n * @private\n * @param {*} result\n * @param {*} type\n * @param {boolean} isSender\n * @param {boolean} isRemote\n *\n * @returns {void}\n */\n parseCandidate = (result: any, type: any, isSender: boolean, isRemote: boolean) => {\n if (!result || !result.id) {\n return;\n }\n\n // We only care about the successful local candidate\n if (this.successfulCandidatePair?.localCandidateId !== result.id) {\n return;\n }\n\n let transport;\n if (result.relayProtocol) {\n transport = result.relayProtocol.toUpperCase();\n } else if (result.protocol) {\n transport = result.protocol.toUpperCase();\n }\n\n const sendRecvType = isSender ? STATS.SEND_DIRECTION : STATS.RECEIVE_DIRECTION;\n const ipType = isRemote ? STATS.REMOTE : STATS.LOCAL;\n\n this.statsResults.internal.candidates[result.id] = {\n candidateType: result.candidateType,\n ipAddress: result.ip, // TODO: add ports\n portNumber: result.port,\n networkType: result.networkType,\n priority: result.priority,\n transport,\n timestamp: result.time,\n id: result.id,\n type: result.type,\n };\n\n this.statsResults.connectionType[ipType].candidateType = result.candidateType;\n this.statsResults.connectionType[ipType].ipAddress = result.ipAddress;\n\n this.statsResults.connectionType[ipType].networkType =\n result.networkType === NETWORK_TYPE.VPN ? NETWORK_TYPE.UNKNOWN : result.networkType;\n this.statsResults.connectionType[ipType].transport = transport;\n\n this.statsResults[type][sendRecvType].totalRoundTripTime = result.totalRoundTripTime;\n };\n\n /**\n * Process Track results\n *\n * @private\n * @param {*} result\n * @param {*} mediaType\n * @returns {void}\n * @memberof StatsAnalyzer\n */\n private processTrackResult(result: any, mediaType: any) {\n if (!result || result.type !== 'track') {\n return;\n }\n\n const sendrecvType =\n result.remoteSource === true ? STATS.RECEIVE_DIRECTION : STATS.SEND_DIRECTION;\n\n if (sendrecvType === STATS.RECEIVE_DIRECTION) {\n this.statsResults.resolutions[mediaType][sendrecvType].framesReceived = result.framesReceived;\n this.statsResults.resolutions[mediaType][sendrecvType].framesDecoded = result.framesDecoded;\n this.statsResults.resolutions[mediaType][sendrecvType].framesDropped = result.framesDropped;\n }\n\n if (result.trackIdentifier && !mediaType.includes('audio')) {\n this.statsResults.resolutions[mediaType][sendrecvType].trackIdentifier =\n result.trackIdentifier;\n\n const jitterBufferDelay = result && result.jitterBufferDelay;\n const jitterBufferEmittedCount = result && result.jitterBufferEmittedCount;\n\n this.statsResults.resolutions[mediaType][sendrecvType].avgJitterDelay =\n jitterBufferEmittedCount && +jitterBufferDelay / +jitterBufferEmittedCount;\n\n // Used to calculate the jitter\n this.statsResults.resolutions[mediaType][sendrecvType].jitterBufferDelay =\n result.jitterBufferDelay;\n this.statsResults.resolutions[mediaType][sendrecvType].jitterBufferEmittedCount =\n result.jitterBufferEmittedCount;\n }\n }\n\n /**\n *\n * @private\n * @param {*} result\n * @param {*} type\n * @returns {void}\n * @memberof StatsAnalyzer\n */\n compareSentAndReceived(result, type) {\n // Don't compare on transceivers without a sender.\n if (!type || !this.statsResults.internal[type].send) {\n return;\n }\n\n const mediaType = type;\n\n if (!this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver) {\n this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;\n }\n\n const currentPacketLoss =\n result.packetsLost - this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver;\n\n this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;\n this.statsResults[mediaType].send.packetsLostOnReceiver = currentPacketLoss;\n this.statsResults[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;\n\n this.statsResults[mediaType].send.meanRemoteJitter.push(result.jitter);\n this.statsResults[mediaType].send.meanRoundTripTime.push(result.roundTripTime);\n\n this.statsResults[mediaType].send.timestamp = result.timestamp;\n this.statsResults[mediaType].send.ssrc = result.ssrc;\n this.statsResults[mediaType].send.reportsReceived = result.reportsReceived;\n\n // Total packloss ratio on this video section of the call\n this.statsResults[mediaType].send.overAllPacketLossRatio =\n this.statsResults[mediaType].send.totalPacketsLostOnReceiver > 0\n ? this.statsResults[mediaType].send.totalPacketsLostOnReceiver /\n this.statsResults[mediaType].send.totalPacketsSent\n : 0;\n this.statsResults[mediaType].send.currentPacketLossRatio =\n this.statsResults[mediaType].send.packetsLostOnReceiver > 0\n ? (this.statsResults[mediaType].send.packetsLostOnReceiver * 100) /\n (this.statsResults[mediaType].send.packetsSent +\n this.statsResults[mediaType].send.packetsLostOnReceiver)\n : 0;\n\n if (\n this.statsResults[mediaType].send.maxPacketLossRatio <\n this.statsResults[mediaType].send.currentPacketLossRatio\n ) {\n this.statsResults[mediaType].send.maxPacketLossRatio =\n this.statsResults[mediaType].send.currentPacketLossRatio;\n }\n\n if (result.type === 'remote-inbound-rtp') {\n this.networkQualityMonitor.determineUplinkNetworkQuality({\n mediaType,\n remoteRtpResults: result,\n statsAnalyzerCurrentStats: this.statsResults,\n });\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["EVENTS","MEDIA_QUALITY","LOCAL_MEDIA_STARTED","LOCAL_MEDIA_STOPPED","REMOTE_MEDIA_STARTED","REMOTE_MEDIA_STOPPED","emptySender","trackLabel","maxPacketLossRatio","availableBandwidth","bytesSent","meanRemoteJitter","meanRoundTripTime","emptyReceiver","bytesReceived","meanRtpJitter","StatsAnalyzer","config","receiveSlotCallback","undefined","networkQualityMonitor","statsResults","defaultStats","mediaType","previousValue","currentValue","isLocal","Error","lastEmittedStartStopEvent","lastEmittedEvent","local","remote","newEvent","emit","file","function","type","result","isSender","isRemote","id","successfulCandidatePair","localCandidateId","transport","relayProtocol","toUpperCase","protocol","sendRecvType","STATS","SEND_DIRECTION","RECEIVE_DIRECTION","ipType","REMOTE","LOCAL","internal","candidates","candidateType","ipAddress","ip","portNumber","port","networkType","priority","timestamp","time","connectionType","NETWORK_TYPE","VPN","UNKNOWN","totalRoundTripTime","statsStarted","lastStatsResults","correlationId","mqaSentCount","lastMqaDataSent","forEach","includes","recv","send","status","meetingMediaStatus","newMqa","emptyMqaInterval","audioSender","emptyAudioTransmit","getAudioSenderMqa","audioTransmit","push","audioReceiver","emptyAudioReceive","getAudioReceiverMqa","audioReceive","videoSender","emptyVideoTransmit","getVideoSenderMqa","videoTransmit","videoReceiver","emptyVideoReceive","getVideoReceiverMqa","videoReceive","intervalMetadata","peerReflexiveIP","peripherals","information","_UNKNOWN_","name","MEDIA_DEVICES","SPEAKER","MICROPHONE","CAMERA","intervalNumber","resetStatsResults","data","mediaConnection","getStatsAndParse","then","statsInterval","setInterval","analyzerInterval","sendMqaData","mqaInterval","MQA_INTEVAL","resolve","sendOneLastMqa","clearInterval","getStatsResult","resolutions","processOutboundRTPResult","processInboundRTPResult","processTrackResult","compareSentAndReceived","parseCandidate","parseAudioSource","statsItem","types","DEFAULT_GET_STATS_FILTER","report","state","parseGetStatsResult","direction","currentDirection","localTrackLabel","csi","audioLevel","totalAudioEnergy","getCurrentStatsTotals","keyPrefix","value","filter","key","startsWith","reduce","prev","cur","getPreviousStatsTotals","getCurrentResolutionsStatsTotals","getPreviousResolutionsStatsTotals","expected","sendAudio","currentStats","previousStats","totalPacketsSent","LoggerProxy","logger","info","emitStartStopEvents","receiveAudio","currentPacketsReceived","previousPacketsReceived","currentSamplesReceived","previousSamplesReceived","sendVideo","framesEncoded","framesSent","receiveVideo","currentFramesReceived","previousFramesReceived","currentFramesDecoded","previousFramesDecoded","currentFramesDropped","previousFramesDropped","sendShare","getConnectionState","ConnectionState","Failed","trace","getTransceiverStats","transceiverStats","video","receivers","receiver","i","filterAndParseGetStatsResults","audio","screenShareVideo","screenShareAudio","senders","sender","compareLastStatsResult","JSON","parse","sendrecvType","kilobytes","frameWidth","frameHeight","width","height","hugeFramesSent","prevBytesSent","keyFramesEncoded","bytes","toFixed","outboundRtpId","packetsSent","totalKeyFramesEncoded","totalNackCount","nackCount","totalPliCount","pliCount","totalFirCount","firCount","encoderImplementation","qualityLimitationReason","qualityLimitationResolutionChanges","retransmittedPacketsSent","totalBytesSent","headerBytesSent","retransmittedBytesSent","receiveSlot","ssrc","idAndCsi","framesReceived","prevBytesReceived","packetsLost","totalPacketsReceived","packetsReceived","lastPacketReceivedTimestamp","currentPacketsLost","currentPacketLossRatio","totalPacketsLost","framesDecoded","keyFramesDecoded","decoderImplementation","fecPacketsDiscarded","fecPacketsReceived","totalBytesReceived","headerBytesReceived","jitter","totalSamplesReceived","totalSamplesDecoded","concealedSamples","remoteSource","framesDropped","trackIdentifier","jitterBufferDelay","jitterBufferEmittedCount","avgJitterDelay","totalPacketsLostOnReceiver","currentPacketLoss","packetsLostOnReceiver","roundTripTime","reportsReceived","overAllPacketLossRatio","determineUplinkNetworkQuality","remoteRtpResults","statsAnalyzerCurrentStats","EventsScope"],"sources":["index.ts"],"sourcesContent":["/* eslint-disable prefer-destructuring */\n\nimport {cloneDeep} from 'lodash';\nimport {ConnectionState} from '@webex/internal-media-core';\n\nimport EventsScope from '../common/events/events-scope';\nimport {\n DEFAULT_GET_STATS_FILTER,\n STATS,\n MQA_INTEVAL,\n NETWORK_TYPE,\n MEDIA_DEVICES,\n _UNKNOWN_,\n} from '../constants';\nimport {\n emptyAudioReceive,\n emptyAudioTransmit,\n emptyMqaInterval,\n emptyVideoReceive,\n emptyVideoTransmit,\n} from '../mediaQualityMetrics/config';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport defaultStats from './global';\nimport {\n getAudioSenderMqa,\n getAudioReceiverMqa,\n getVideoSenderMqa,\n getVideoReceiverMqa,\n} from './mqaUtil';\nimport {ReceiveSlot} from '../multistream/receiveSlot';\n\nexport const EVENTS = {\n MEDIA_QUALITY: 'MEDIA_QUALITY',\n LOCAL_MEDIA_STARTED: 'LOCAL_MEDIA_STARTED',\n LOCAL_MEDIA_STOPPED: 'LOCAL_MEDIA_STOPPED',\n REMOTE_MEDIA_STARTED: 'REMOTE_MEDIA_STARTED',\n REMOTE_MEDIA_STOPPED: 'REMOTE_MEDIA_STOPPED',\n};\n\nconst emptySender = {\n trackLabel: '',\n maxPacketLossRatio: 0,\n availableBandwidth: 0,\n bytesSent: 0,\n meanRemoteJitter: [],\n meanRoundTripTime: [],\n};\n\nconst emptyReceiver = {\n availableBandwidth: 0,\n bytesReceived: 0,\n meanRtpJitter: [],\n meanRoundTripTime: [],\n};\n\ntype ReceiveSlotCallback = (csi: number) => ReceiveSlot | undefined;\n\n/**\n * Stats Analyzer class that will emit events based on detected quality\n *\n * @export\n * @class StatsAnalyzer\n * @extends {EventsScope}\n */\nexport class StatsAnalyzer extends EventsScope {\n config: any;\n correlationId: any;\n lastEmittedStartStopEvent: any;\n lastMqaDataSent: any;\n lastStatsResults: any;\n meetingMediaStatus: any;\n mqaInterval: NodeJS.Timeout;\n mqaSentCount: any;\n networkQualityMonitor: any;\n mediaConnection: any;\n statsInterval: NodeJS.Timeout;\n statsResults: any;\n statsStarted: any;\n successfulCandidatePair: any;\n receiveSlotCallback: ReceiveSlotCallback;\n\n /**\n * Creates a new instance of StatsAnalyzer\n * @constructor\n * @public\n * @param {Object} config SDK Configuration Object\n * @param {Function} receiveSlotCallback Callback used to access receive slots.\n * @param {Object} networkQualityMonitor class for assessing network characteristics (jitter, packetLoss, latency)\n * @param {Object} statsResults Default properties for stats\n */\n constructor(\n config: any,\n receiveSlotCallback: ReceiveSlotCallback = () => undefined,\n networkQualityMonitor: object = {},\n statsResults: object = defaultStats\n ) {\n super();\n this.statsStarted = false;\n this.statsResults = statsResults;\n this.lastStatsResults = null;\n this.config = config;\n this.networkQualityMonitor = networkQualityMonitor;\n this.correlationId = config.correlationId;\n this.mqaSentCount = -1;\n this.lastMqaDataSent = {};\n this.lastEmittedStartStopEvent = {};\n this.receiveSlotCallback = receiveSlotCallback;\n this.successfulCandidatePair = {};\n }\n\n /**\n * Resets cumulative stats arrays.\n *\n * @public\n * @memberof StatsAnalyzer\n * @returns {void}\n */\n resetStatsResults() {\n Object.keys(this.statsResults).forEach((mediaType) => {\n if (mediaType.includes('recv')) {\n this.statsResults[mediaType].recv.meanRtpJitter = [];\n }\n\n if (mediaType.includes('send')) {\n this.statsResults[mediaType].send.meanRemoteJitter = [];\n this.statsResults[mediaType].send.meanRoundTripTime = [];\n }\n });\n }\n\n /**\n * sets mediaStatus status for analyzing metrics\n *\n * @public\n * @param {Object} status for the audio and video\n * @memberof StatsAnalyzer\n * @returns {void}\n */\n public updateMediaStatus(status: object) {\n this.meetingMediaStatus = status;\n }\n\n /**\n * captures MQA data from media connection\n *\n * @public\n * @memberof StatsAnalyzer\n * @returns {void}\n */\n sendMqaData() {\n const newMqa = cloneDeep(emptyMqaInterval);\n\n Object.keys(this.statsResults).forEach((mediaType) => {\n if (mediaType.includes('audio-send') || mediaType.includes('audio-share-send')) {\n const audioSender = cloneDeep(emptyAudioTransmit);\n\n getAudioSenderMqa({\n audioSender,\n statsResults: this.statsResults,\n lastMqaDataSent: this.lastMqaDataSent,\n mediaType,\n });\n newMqa.audioTransmit.push(audioSender);\n } else if (mediaType.includes('audio-recv') || mediaType.includes('audio-share-recv')) {\n const audioReceiver = cloneDeep(emptyAudioReceive);\n\n getAudioReceiverMqa({\n audioReceiver,\n statsResults: this.statsResults,\n lastMqaDataSent: this.lastMqaDataSent,\n mediaType,\n });\n newMqa.audioReceive.push(audioReceiver);\n } else if (mediaType.includes('video-send') || mediaType.includes('video-share-send')) {\n const videoSender = cloneDeep(emptyVideoTransmit);\n\n getVideoSenderMqa({\n videoSender,\n statsResults: this.statsResults,\n lastMqaDataSent: this.lastMqaDataSent,\n mediaType,\n });\n newMqa.videoTransmit.push(videoSender);\n } else if (mediaType.includes('video-recv') || mediaType.includes('video-share-recv')) {\n const videoReceiver = cloneDeep(emptyVideoReceive);\n\n getVideoReceiverMqa({\n videoReceiver,\n statsResults: this.statsResults,\n lastMqaDataSent: this.lastMqaDataSent,\n mediaType,\n });\n newMqa.videoReceive.push(videoReceiver);\n }\n });\n\n newMqa.intervalMetadata.peerReflexiveIP = this.statsResults.connectionType.local.ipAddress;\n\n // Adding peripheral information\n newMqa.intervalMetadata.peripherals.push({information: _UNKNOWN_, name: MEDIA_DEVICES.SPEAKER});\n if (this.statsResults['audio-send']) {\n newMqa.intervalMetadata.peripherals.push({\n information: this.statsResults['audio-send'].trackLabel || _UNKNOWN_,\n name: MEDIA_DEVICES.MICROPHONE,\n });\n }\n if (this.statsResults['video-send']) {\n newMqa.intervalMetadata.peripherals.push({\n information: this.statsResults['video-send'].trackLabel || _UNKNOWN_,\n name: MEDIA_DEVICES.CAMERA,\n });\n }\n\n newMqa.networkType = this.statsResults.connectionType.local.networkType;\n\n this.mqaSentCount += 1;\n\n newMqa.intervalNumber = this.mqaSentCount;\n\n this.resetStatsResults();\n\n this.emit(\n {\n file: 'statsAnalyzer',\n function: 'sendMqaData',\n },\n EVENTS.MEDIA_QUALITY,\n {\n data: newMqa,\n // @ts-ignore\n networkType: newMqa.networkType,\n }\n );\n }\n\n /**\n * updated the media connection when changed\n *\n * @private\n * @memberof StatsAnalyzer\n * @param {RoapMediaConnection} mediaConnection\n * @returns {void}\n */\n updateMediaConnection(mediaConnection: any) {\n this.mediaConnection = mediaConnection;\n }\n\n /**\n * Starts the stats analyzer on interval\n *\n * @public\n * @memberof StatsAnalyzer\n * @param {RoapMediaConnection} mediaConnection\n * @returns {Promise}\n */\n public startAnalyzer(mediaConnection: any) {\n if (!this.statsStarted) {\n this.statsStarted = true;\n this.mediaConnection = mediaConnection;\n\n return this.getStatsAndParse().then(() => {\n this.statsInterval = setInterval(() => {\n this.getStatsAndParse();\n }, this.config.analyzerInterval);\n // Trigger initial fetch\n this.sendMqaData();\n this.mqaInterval = setInterval(() => {\n this.sendMqaData();\n }, MQA_INTEVAL);\n });\n }\n\n return Promise.resolve();\n }\n\n /**\n * Cleans up the analyzer when done\n *\n * @public\n * @memberof StatsAnalyzer\n * @returns {void}\n */\n public stopAnalyzer() {\n const sendOneLastMqa = this.mqaInterval && this.statsInterval;\n\n if (this.statsInterval) {\n clearInterval(this.statsInterval);\n this.statsInterval = undefined;\n }\n\n if (this.mqaInterval) {\n clearInterval(this.mqaInterval);\n this.mqaInterval = undefined;\n }\n\n if (sendOneLastMqa) {\n return this.getStatsAndParse().then(() => {\n this.sendMqaData();\n this.mediaConnection = null;\n });\n }\n\n return Promise.resolve();\n }\n\n /**\n * Parse a single result of get stats\n *\n * @private\n * @param {*} getStatsResult\n * @param {String} type\n * @param {boolean} isSender\n * @returns {void}\n * @memberof StatsAnalyzer\n */\n private parseGetStatsResult(getStatsResult: any, type: string, isSender: boolean) {\n if (!getStatsResult) {\n return;\n }\n\n // Generate empty stats results\n if (!this.statsResults[type]) {\n this.statsResults[type] = {};\n }\n\n if (isSender && !this.statsResults[type].send) {\n this.statsResults[type].send = cloneDeep(emptySender);\n } else if (!isSender && !this.statsResults[type].recv) {\n this.statsResults[type].recv = cloneDeep(emptyReceiver);\n }\n\n if (!this.statsResults.resolutions[type]) {\n this.statsResults.resolutions[type] = {};\n }\n\n if (isSender && !this.statsResults.resolutions[type].send) {\n this.statsResults.resolutions[type].send = cloneDeep(emptySender);\n } else if (!isSender && !this.statsResults.resolutions[type].recv) {\n this.statsResults.resolutions[type].recv = cloneDeep(emptyReceiver);\n }\n\n if (!this.statsResults.internal[type]) {\n this.statsResults.internal[type] = {};\n }\n\n if (isSender && !this.statsResults.internal[type].send) {\n this.statsResults.internal[type].send = cloneDeep(emptySender);\n } else if (!isSender && !this.statsResults.internal[type].recv) {\n this.statsResults.internal[type].recv = cloneDeep(emptyReceiver);\n }\n\n switch (getStatsResult.type) {\n case 'outbound-rtp':\n this.processOutboundRTPResult(getStatsResult, type);\n break;\n case 'inbound-rtp':\n this.processInboundRTPResult(getStatsResult, type);\n break;\n case 'track':\n this.processTrackResult(getStatsResult, type);\n break;\n case 'remote-inbound-rtp':\n case 'remote-outbound-rtp':\n // @ts-ignore\n this.compareSentAndReceived(getStatsResult, type, isSender);\n break;\n case 'remotecandidate':\n case 'remote-candidate':\n this.parseCandidate(getStatsResult, type, isSender, true);\n break;\n case 'local-candidate':\n this.parseCandidate(getStatsResult, type, isSender, false);\n break;\n case 'media-source':\n // @ts-ignore\n this.parseAudioSource(getStatsResult, type);\n break;\n default:\n break;\n }\n }\n\n /**\n * Filters the get stats results for types\n * @private\n * @param {Array} statsItem\n * @param {String} type\n * @param {boolean} isSender\n * @returns {void}\n */\n filterAndParseGetStatsResults(statsItem: any, type: string, isSender: boolean) {\n const {types} = DEFAULT_GET_STATS_FILTER;\n\n // get the successful candidate pair before parsing stats.\n statsItem.report.forEach((report) => {\n if (report.type === 'candidate-pair' && report.state === 'succeeded') {\n this.successfulCandidatePair = report;\n }\n });\n\n statsItem.report.forEach((result) => {\n if (types.includes(result.type)) {\n this.parseGetStatsResult(result, type, isSender);\n }\n });\n\n if (this.statsResults[type]) {\n this.statsResults[type].direction = statsItem.currentDirection;\n this.statsResults[type].trackLabel = statsItem.localTrackLabel;\n this.statsResults[type].csi = statsItem.csi;\n // reset the successful candidate pair.\n this.successfulCandidatePair = {};\n }\n }\n\n /**\n * parse the audio\n * @param {String} result\n * @param {boolean} type\n * @returns {void}\n */\n parseAudioSource(result: any, type: any) {\n if (!result) {\n return;\n }\n\n if (type.includes('audio-send')) {\n this.statsResults[type].send.audioLevel = result.audioLevel;\n this.statsResults[type].send.totalAudioEnergy = result.totalAudioEnergy;\n }\n }\n\n /**\n * emits started/stopped events for local/remote media by checking\n * if given values are increasing or not. The previousValue, currentValue\n * params can be any numerical value like number of receive packets or\n * decoded frames, etc.\n *\n * @private\n * @param {string} mediaType\n * @param {number} previousValue - value to compare\n * @param {number} currentValue - value to compare (must be same type of value as previousValue)\n * @param {boolean} isLocal - true if stats are for local media being sent out, false for remote media being received\n * @memberof StatsAnalyzer\n * @returns {void}\n */\n emitStartStopEvents = (\n mediaType: string,\n previousValue: number,\n currentValue: number,\n isLocal: boolean\n ) => {\n if (mediaType !== 'audio' && mediaType !== 'video' && mediaType !== 'share') {\n throw new Error(`Unsupported mediaType: ${mediaType}`);\n }\n\n // eslint-disable-next-line no-param-reassign\n if (previousValue === undefined) previousValue = 0;\n // eslint-disable-next-line no-param-reassign\n if (currentValue === undefined) currentValue = 0;\n\n if (!this.lastEmittedStartStopEvent[mediaType]) {\n this.lastEmittedStartStopEvent[mediaType] = {};\n }\n\n const lastEmittedEvent = isLocal\n ? this.lastEmittedStartStopEvent[mediaType].local\n : this.lastEmittedStartStopEvent[mediaType].remote;\n\n let newEvent;\n\n if (currentValue - previousValue > 0) {\n newEvent = isLocal ? EVENTS.LOCAL_MEDIA_STARTED : EVENTS.REMOTE_MEDIA_STARTED;\n } else if (currentValue === previousValue && currentValue > 0) {\n newEvent = isLocal ? EVENTS.LOCAL_MEDIA_STOPPED : EVENTS.REMOTE_MEDIA_STOPPED;\n }\n\n if (newEvent && lastEmittedEvent !== newEvent) {\n if (isLocal) {\n this.lastEmittedStartStopEvent[mediaType].local = newEvent;\n } else {\n this.lastEmittedStartStopEvent[mediaType].remote = newEvent;\n }\n this.emit(\n {\n file: 'statsAnalyzer/index',\n function: 'compareLastStatsResult',\n },\n newEvent,\n {\n type: mediaType,\n }\n );\n }\n };\n\n /**\n * compares current and previous stats to check if packets are not sent\n *\n * @private\n * @memberof StatsAnalyzer\n * @returns {void}\n */\n private compareLastStatsResult() {\n if (this.lastStatsResults !== null && this.meetingMediaStatus) {\n const getCurrentStatsTotals = (keyPrefix: string, value: string): number =>\n Object.keys(this.statsResults)\n .filter((key) => key.startsWith(keyPrefix))\n .reduce((prev, cur) => prev + (this.statsResults[cur]?.recv[value] || 0), 0);\n\n const getPreviousStatsTotals = (keyPrefix: string, value: string): number =>\n Object.keys(this.statsResults)\n .filter((key) => key.startsWith(keyPrefix))\n .reduce((prev, cur) => prev + (this.lastStatsResults[cur]?.recv[value] || 0), 0);\n\n const getCurrentResolutionsStatsTotals = (keyPrefix: string, value: string): number =>\n Object.keys(this.statsResults)\n .filter((key) => key.startsWith(keyPrefix))\n .reduce((prev, cur) => prev + (this.statsResults.resolutions[cur]?.recv[value] || 0), 0);\n\n const getPreviousResolutionsStatsTotals = (keyPrefix: string, value: string): number =>\n Object.keys(this.statsResults)\n .filter((key) => key.startsWith(keyPrefix))\n .reduce(\n (prev, cur) => prev + (this.lastStatsResults.resolutions[cur]?.recv[value] || 0),\n 0\n );\n\n if (this.meetingMediaStatus.expected.sendAudio && this.lastStatsResults['audio-send']) {\n // compare audio stats sent\n // NOTE: relies on there being only one sender.\n const currentStats = this.statsResults['audio-send'].send;\n const previousStats = this.lastStatsResults['audio-send'].send;\n\n if (\n currentStats.totalPacketsSent === previousStats.totalPacketsSent ||\n currentStats.totalPacketsSent === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No audio RTP packets sent`,\n currentStats.totalPacketsSent\n );\n } else {\n if (\n currentStats.totalAudioEnergy === previousStats.totalAudioEnergy ||\n currentStats.totalAudioEnergy === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No audio Energy present`,\n currentStats.totalAudioEnergy\n );\n }\n\n if (currentStats.audioLevel === 0) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> audio level is 0 for the user`\n );\n }\n }\n\n this.emitStartStopEvents(\n 'audio',\n previousStats.totalPacketsSent,\n currentStats.totalPacketsSent,\n true\n );\n }\n\n if (this.meetingMediaStatus.expected.receiveAudio) {\n // compare audio stats received\n const currentPacketsReceived = getCurrentStatsTotals('audio-recv', 'totalPacketsReceived');\n const previousPacketsReceived = getPreviousStatsTotals(\n 'audio-recv',\n 'totalPacketsReceived'\n );\n const currentSamplesReceived = getCurrentStatsTotals('audio-recv', 'totalSamplesReceived');\n const previousSamplesReceived = getPreviousStatsTotals(\n 'audio-recv',\n 'totalSamplesReceived'\n );\n\n if (currentPacketsReceived === previousPacketsReceived || currentPacketsReceived === 0) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No audio RTP packets received`,\n currentPacketsReceived\n );\n } else if (\n currentSamplesReceived === previousSamplesReceived ||\n currentSamplesReceived === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No audio samples received`,\n currentSamplesReceived\n );\n }\n\n this.emitStartStopEvents('audio', previousPacketsReceived, currentPacketsReceived, false);\n }\n\n if (this.meetingMediaStatus.expected.sendVideo && this.lastStatsResults['video-send']) {\n // compare video stats sent\n const currentStats = this.statsResults['video-send'].send;\n const previousStats = this.lastStatsResults['video-send'].send;\n\n if (\n currentStats.totalPacketsSent === previousStats.totalPacketsSent ||\n currentStats.totalPacketsSent === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No video RTP packets sent`,\n currentStats.totalPacketsSent\n );\n } else {\n if (\n currentStats.framesEncoded === previousStats.framesEncoded ||\n currentStats.framesEncoded === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No video Frames Encoded`,\n currentStats.framesEncoded\n );\n }\n\n if (\n this.statsResults.resolutions['video-send'].send.framesSent ===\n this.lastStatsResults.resolutions['video-send'].send.framesSent ||\n this.statsResults.resolutions['video-send'].send.framesSent === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No video Frames sent`,\n this.statsResults.resolutions['video-send'].send.framesSent\n );\n }\n }\n\n this.emitStartStopEvents('video', previousStats.framesSent, currentStats.framesSent, true);\n }\n\n if (this.meetingMediaStatus.expected.receiveVideo) {\n // compare video stats received\n const currentPacketsReceived = getCurrentStatsTotals('video-recv', 'totalPacketsReceived');\n const previousPacketsReceived = getPreviousStatsTotals(\n 'video-recv',\n 'totalPacketsReceived'\n );\n const currentFramesReceived = getCurrentResolutionsStatsTotals(\n 'video-recv',\n 'framesReceived'\n );\n const previousFramesReceived = getPreviousResolutionsStatsTotals(\n 'video-recv',\n 'framesReceived'\n );\n const currentFramesDecoded = getCurrentStatsTotals('video-recv', 'framesDecoded');\n const previousFramesDecoded = getPreviousStatsTotals('video-recv', 'framesDecoded');\n const currentFramesDropped = getCurrentResolutionsStatsTotals(\n 'video-recv',\n 'framesDropped'\n );\n const previousFramesDropped = getPreviousResolutionsStatsTotals(\n 'video-recv',\n 'framesDropped'\n );\n\n if (currentPacketsReceived === previousPacketsReceived || currentPacketsReceived === 0) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No video RTP packets received`,\n currentPacketsReceived\n );\n } else {\n if (currentFramesReceived === previousFramesReceived || currentFramesReceived === 0) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No video frames received`,\n currentFramesReceived\n );\n }\n\n if (currentFramesDecoded === previousFramesDecoded || currentFramesDecoded === 0) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No video frames decoded`,\n currentFramesDecoded\n );\n }\n\n if (currentFramesDropped - previousFramesDropped > 10) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> video frames are getting dropped`,\n currentFramesDropped - previousFramesDropped\n );\n }\n }\n\n this.emitStartStopEvents('video', previousFramesDecoded, currentFramesDecoded, false);\n }\n\n if (this.meetingMediaStatus.expected.sendShare && this.lastStatsResults['video-share-send']) {\n // compare share stats sent\n\n const currentStats = this.statsResults['video-share-send'].send;\n const previousStats = this.lastStatsResults['video-share-send'].send;\n\n if (\n currentStats.totalPacketsSent === previousStats.totalPacketsSent ||\n currentStats.totalPacketsSent === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No share RTP packets sent`,\n currentStats.totalPacketsSent\n );\n } else {\n if (\n currentStats.framesEncoded === previousStats.framesEncoded ||\n currentStats.framesEncoded === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No share frames getting encoded`,\n currentStats.framesEncoded\n );\n }\n\n if (\n this.statsResults.resolutions['video-share-send'].send.framesSent ===\n this.lastStatsResults.resolutions['video-share-send'].send.framesSent ||\n this.statsResults.resolutions['video-share-send'].send.framesSent === 0\n ) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No share frames sent`,\n this.statsResults.resolutions['video-share-send'].send.framesSent\n );\n }\n }\n }\n\n if (this.meetingMediaStatus.expected.sendShare) {\n // TODO:need to check receive share value\n // compare share stats received\n const currentPacketsReceived = getCurrentStatsTotals(\n 'video-share-recv',\n 'totalPacketsReceived'\n );\n const previousPacketsReceived = getPreviousStatsTotals(\n 'video-share-recv',\n 'totalPacketsReceived'\n );\n const currentFramesReceived = getCurrentResolutionsStatsTotals(\n 'video-share-recv',\n 'framesReceived'\n );\n const previousFramesReceived = getPreviousResolutionsStatsTotals(\n 'video-share-recv',\n 'framesReceived'\n );\n const currentFramesDecoded = getCurrentStatsTotals('video-share-recv', 'framesDecoded');\n const previousFramesDecoded = getPreviousStatsTotals('video-share-recv', 'framesDecoded');\n const currentFramesDropped = getCurrentResolutionsStatsTotals(\n 'video-share-recv',\n 'framesDropped'\n );\n const previousFramesDropped = getPreviousResolutionsStatsTotals(\n 'video-share-recv',\n 'framesDropped'\n );\n\n if (currentPacketsReceived === previousPacketsReceived || currentPacketsReceived === 0) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No share RTP packets received`,\n currentPacketsReceived\n );\n } else {\n if (currentFramesReceived === previousFramesReceived || currentFramesReceived === 0) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No share frames received`,\n currentFramesReceived\n );\n }\n\n if (currentFramesDecoded === previousFramesDecoded || currentFramesDecoded === 0) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> No share frames decoded`,\n currentFramesDecoded\n );\n }\n\n if (currentFramesDropped - previousFramesDropped > 10) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#compareLastStatsResult --> share frames are getting dropped`,\n currentFramesDropped - previousFramesDropped\n );\n }\n }\n\n // we are not calling emitStartStopEvents() for sending or receiving share because sharing is often started and stopped\n // in meetings and this.meetingMediaStatus.expected values can be out of sync with the actual packet flow\n // so we would send \"sharing stopped\" events incorrectly\n }\n }\n }\n\n /**\n * Does a `getStats` on all the transceivers and parses the results\n *\n * @private\n * @memberof StatsAnalyzer\n * @returns {Promise}\n */\n private getStatsAndParse() {\n if (!this.mediaConnection) {\n return Promise.resolve();\n }\n\n if (\n this.mediaConnection &&\n this.mediaConnection.getConnectionState() === ConnectionState.Failed\n ) {\n LoggerProxy.logger.trace(\n 'StatsAnalyzer:index#getStatsAndParse --> media connection is in failed state'\n );\n\n return Promise.resolve();\n }\n\n LoggerProxy.logger.trace('StatsAnalyzer:index#getStatsAndParse --> Collecting Stats');\n\n return this.mediaConnection.getTransceiverStats().then((transceiverStats) => {\n transceiverStats.video.receivers.forEach((receiver, i) =>\n this.filterAndParseGetStatsResults(receiver, `video-recv-${i}`, false)\n );\n transceiverStats.audio.receivers.forEach((receiver, i) =>\n this.filterAndParseGetStatsResults(receiver, `audio-recv-${i}`, false)\n );\n transceiverStats.screenShareVideo.receivers.forEach((receiver, i) =>\n this.filterAndParseGetStatsResults(receiver, `video-share-recv-${i}`, false)\n );\n transceiverStats.screenShareAudio.receivers.forEach((receiver, i) =>\n this.filterAndParseGetStatsResults(receiver, `audio-share-recv-${i}`, false)\n );\n\n transceiverStats.video.senders.forEach((sender, i) => {\n if (i > 0) {\n throw new Error('Stats Analyzer does not support multiple senders.');\n }\n this.filterAndParseGetStatsResults(sender, 'video-send', true);\n });\n transceiverStats.audio.senders.forEach((sender, i) => {\n if (i > 0) {\n throw new Error('Stats Analyzer does not support multiple senders.');\n }\n this.filterAndParseGetStatsResults(sender, 'audio-send', true);\n });\n transceiverStats.screenShareVideo.senders.forEach((sender, i) => {\n if (i > 0) {\n throw new Error('Stats Analyzer does not support multiple senders.');\n }\n this.filterAndParseGetStatsResults(sender, 'video-share-send', true);\n });\n transceiverStats.screenShareAudio.senders.forEach((sender, i) => {\n if (i > 0) {\n throw new Error('Stats Analyzer does not support multiple senders.');\n }\n this.filterAndParseGetStatsResults(sender, 'audio-share-send', true);\n });\n\n this.compareLastStatsResult();\n\n // Save the last results to compare with the current\n // DO Deep copy, for some reason it takes the reference all the time rather then old value set\n this.lastStatsResults = JSON.parse(JSON.stringify(this.statsResults));\n\n LoggerProxy.logger.trace(\n 'StatsAnalyzer:index#getStatsAndParse --> Finished Collecting Stats'\n );\n });\n }\n\n /**\n * Processes OutboundRTP stats result and stores\n * @private\n * @param {*} result\n * @param {*} mediaType\n * @returns {void}\n */\n private processOutboundRTPResult(result: any, mediaType: any) {\n const sendrecvType = STATS.SEND_DIRECTION;\n\n if (result.bytesSent) {\n let kilobytes = 0;\n\n if (result.frameWidth && result.frameHeight) {\n this.statsResults.resolutions[mediaType][sendrecvType].width = result.frameWidth;\n this.statsResults.resolutions[mediaType][sendrecvType].height = result.frameHeight;\n this.statsResults.resolutions[mediaType][sendrecvType].framesSent = result.framesSent;\n this.statsResults.resolutions[mediaType][sendrecvType].hugeFramesSent =\n result.hugeFramesSent;\n }\n\n if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesSent) {\n this.statsResults.internal[mediaType][sendrecvType].prevBytesSent = result.bytesSent;\n }\n if (!this.statsResults.internal[mediaType][sendrecvType].framesEncoded) {\n this.statsResults.internal[mediaType][sendrecvType].framesEncoded = result.framesEncoded;\n }\n if (!this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded) {\n this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded =\n result.keyFramesEncoded;\n }\n\n const bytes =\n result.bytesSent - this.statsResults.internal[mediaType][sendrecvType].prevBytesSent;\n\n this.statsResults.internal[mediaType][sendrecvType].prevBytesSent = result.bytesSent;\n\n kilobytes = bytes / 1024;\n\n this.statsResults[mediaType][sendrecvType].availableBandwidth = kilobytes.toFixed(1);\n this.statsResults[mediaType].bytesSent = kilobytes;\n\n this.statsResults[mediaType][sendrecvType].framesEncoded =\n result.framesEncoded - this.statsResults.internal[mediaType][sendrecvType].framesEncoded;\n this.statsResults[mediaType][sendrecvType].keyFramesEncoded =\n result.keyFramesEncoded -\n this.statsResults.internal[mediaType][sendrecvType].keyFramesEncoded;\n this.statsResults.internal[mediaType].outboundRtpId = result.id;\n\n if (!this.statsResults.internal[mediaType][sendrecvType].packetsSent) {\n this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent;\n }\n\n this.statsResults[mediaType][sendrecvType].packetsSent =\n result.packetsSent - this.statsResults.internal[mediaType][sendrecvType].packetsSent;\n this.statsResults.internal[mediaType][sendrecvType].packetsSent = result.packetsSent;\n\n // Data saved to send MQA metrics\n\n this.statsResults[mediaType][sendrecvType].totalKeyFramesEncoded = result.keyFramesEncoded;\n this.statsResults[mediaType][sendrecvType].totalNackCount = result.nackCount;\n this.statsResults[mediaType][sendrecvType].totalPliCount = result.pliCount;\n this.statsResults[mediaType][sendrecvType].totalPacketsSent = result.packetsSent;\n this.statsResults[mediaType][sendrecvType].totalFirCount = result.firCount;\n this.statsResults[mediaType][sendrecvType].framesSent = result.framesSent;\n this.statsResults[mediaType][sendrecvType].framesEncoded = result.framesEncoded;\n this.statsResults[mediaType][sendrecvType].encoderImplementation =\n result.encoderImplementation;\n this.statsResults[mediaType][sendrecvType].qualityLimitationReason =\n result.qualityLimitationReason;\n this.statsResults[mediaType][sendrecvType].qualityLimitationResolutionChanges =\n result.qualityLimitationResolutionChanges;\n this.statsResults[mediaType][sendrecvType].retransmittedPacketsSent =\n result.retransmittedPacketsSent;\n this.statsResults[mediaType][sendrecvType].totalBytesSent = result.bytesSent;\n this.statsResults[mediaType][sendrecvType].headerBytesSent = result.headerBytesSent;\n this.statsResults[mediaType][sendrecvType].retransmittedBytesSent =\n result.retransmittedBytesSent;\n }\n }\n\n /**\n * Processes InboundRTP stats result and stores\n * @private\n * @param {*} result\n * @param {*} mediaType\n * @returns {void}\n */\n private processInboundRTPResult(result: any, mediaType: any) {\n const sendrecvType = STATS.RECEIVE_DIRECTION;\n\n if (result.bytesReceived) {\n let kilobytes = 0;\n const receiveSlot = this.receiveSlotCallback(result.ssrc);\n const idAndCsi = receiveSlot\n ? `id: \"${receiveSlot.id || ''}\"${receiveSlot.csi ? ` and csi: ${receiveSlot.csi}` : ''}`\n : '';\n\n if (result.frameWidth && result.frameHeight) {\n this.statsResults.resolutions[mediaType][sendrecvType].width = result.frameWidth;\n this.statsResults.resolutions[mediaType][sendrecvType].height = result.frameHeight;\n this.statsResults.resolutions[mediaType][sendrecvType].framesReceived =\n result.framesReceived;\n }\n\n if (!this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived) {\n this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived =\n result.bytesReceived;\n }\n\n if (!this.statsResults.internal[mediaType][sendrecvType].pliCount) {\n this.statsResults.internal[mediaType][sendrecvType].pliCount = result.pliCount;\n }\n\n if (!this.statsResults.internal[mediaType][sendrecvType].packetsLost) {\n this.statsResults.internal[mediaType][sendrecvType].packetsLost = result.packetsLost;\n }\n\n if (!this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived) {\n this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived =\n result.packetsReceived;\n }\n\n if (!this.statsResults.internal[mediaType][sendrecvType].lastPacketReceivedTimestamp) {\n this.statsResults.internal[mediaType][sendrecvType].lastPacketReceivedTimestamp =\n result.lastPacketReceivedTimestamp;\n }\n\n const bytes =\n result.bytesReceived -\n this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived;\n\n this.statsResults.internal[mediaType][sendrecvType].prevBytesReceived = result.bytesReceived;\n\n kilobytes = bytes / 1024;\n this.statsResults[mediaType][sendrecvType].availableBandwidth = kilobytes.toFixed(1);\n this.statsResults[mediaType].bytesReceived = kilobytes.toFixed(1);\n\n this.statsResults[mediaType][sendrecvType].pliCount =\n result.pliCount - this.statsResults.internal[mediaType][sendrecvType].pliCount;\n this.statsResults[mediaType][sendrecvType].currentPacketsLost =\n result.packetsLost - this.statsResults.internal[mediaType][sendrecvType].packetsLost;\n if (this.statsResults[mediaType][sendrecvType].currentPacketsLost < 0) {\n this.statsResults[mediaType][sendrecvType].currentPacketsLost = 0;\n }\n\n this.statsResults[mediaType][sendrecvType].packetsReceived =\n result.packetsReceived -\n this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived;\n this.statsResults.internal[mediaType][sendrecvType].totalPacketsReceived =\n result.packetsReceived;\n\n if (this.statsResults[mediaType][sendrecvType].packetsReceived === 0) {\n if (receiveSlot) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#processInboundRTPResult --> No packets received for receive slot ${idAndCsi}`,\n this.statsResults[mediaType][sendrecvType].packetsReceived\n );\n }\n }\n\n // Check the over all packet Lost ratio\n this.statsResults[mediaType][sendrecvType].currentPacketLossRatio =\n this.statsResults[mediaType][sendrecvType].currentPacketsLost > 0\n ? this.statsResults[mediaType][sendrecvType].currentPacketsLost /\n (this.statsResults[mediaType][sendrecvType].packetsReceived +\n this.statsResults[mediaType][sendrecvType].currentPacketsLost)\n : 0;\n if (this.statsResults[mediaType][sendrecvType].currentPacketLossRatio > 3) {\n LoggerProxy.logger.info(\n `StatsAnalyzer:index#processInboundRTPResult --> Packets getting lost from the receiver with slot ${idAndCsi}`,\n this.statsResults[mediaType][sendrecvType].currentPacketLossRatio\n );\n }\n\n // TODO: check the packet loss value is negative values here\n\n if (result.packetsLost) {\n this.statsResults[mediaType][sendrecvType].totalPacketsLost =\n result.packetsLost > 0 ? result.packetsLost : -result.packetsLost;\n } else {\n this.statsResults[mediaType][sendrecvType].totalPacketsLost = 0;\n }\n\n this.statsResults[mediaType][sendrecvType].lastPacketReceivedTimestamp =\n result.lastPacketReceivedTimestamp;\n\n // From Thin\n this.statsResults[mediaType][sendrecvType].totalNackCount = result.nackCount;\n this.statsResults[mediaType][sendrecvType].totalPliCount = result.pliCount;\n this.statsResults[mediaType][sendrecvType].framesDecoded = result.framesDecoded;\n this.statsResults[mediaType][sendrecvType].keyFramesDecoded = result.keyFramesDecoded;\n\n this.statsResults[mediaType][sendrecvType].decoderImplementation =\n result.decoderImplementation;\n this.statsResults[mediaType][sendrecvType].totalPacketsReceived = result.packetsReceived;\n\n this.statsResults[mediaType][sendrecvType].fecPacketsDiscarded = result.fecPacketsDiscarded;\n this.statsResults[mediaType][sendrecvType].fecPacketsReceived = result.fecPacketsReceived;\n this.statsResults[mediaType][sendrecvType].totalBytesReceived = result.bytesReceived;\n this.statsResults[mediaType][sendrecvType].headerBytesReceived = result.headerBytesReceived;\n\n this.statsResults[mediaType][sendrecvType].meanRtpJitter.push(result.jitter);\n\n // Audio stats\n\n this.statsResults[mediaType][sendrecvType].audioLevel = result.audioLevel;\n this.statsResults[mediaType][sendrecvType].totalAudioEnergy = result.totalAudioEnergy;\n this.statsResults[mediaType][sendrecvType].totalSamplesReceived =\n result.totalSamplesReceived || 0;\n this.statsResults[mediaType][sendrecvType].totalSamplesDecoded =\n result.totalSamplesDecoded || 0;\n this.statsResults[mediaType][sendrecvType].concealedSamples = result.concealedSamples || 0;\n }\n }\n\n /**\n * Processes remote and local candidate result and stores\n * @private\n * @param {*} result\n * @param {*} type\n * @param {boolean} isSender\n * @param {boolean} isRemote\n *\n * @returns {void}\n */\n parseCandidate = (result: any, type: any, isSender: boolean, isRemote: boolean) => {\n if (!result || !result.id) {\n return;\n }\n\n // We only care about the successful local candidate\n if (this.successfulCandidatePair?.localCandidateId !== result.id) {\n return;\n }\n\n let transport;\n if (result.relayProtocol) {\n transport = result.relayProtocol.toUpperCase();\n } else if (result.protocol) {\n transport = result.protocol.toUpperCase();\n }\n\n const sendRecvType = isSender ? STATS.SEND_DIRECTION : STATS.RECEIVE_DIRECTION;\n const ipType = isRemote ? STATS.REMOTE : STATS.LOCAL;\n\n this.statsResults.internal.candidates[result.id] = {\n candidateType: result.candidateType,\n ipAddress: result.ip, // TODO: add ports\n portNumber: result.port,\n networkType: result.networkType,\n priority: result.priority,\n transport,\n timestamp: result.time,\n id: result.id,\n type: result.type,\n };\n\n this.statsResults.connectionType[ipType].candidateType = result.candidateType;\n this.statsResults.connectionType[ipType].ipAddress = result.ipAddress;\n\n this.statsResults.connectionType[ipType].networkType =\n result.networkType === NETWORK_TYPE.VPN ? NETWORK_TYPE.UNKNOWN : result.networkType;\n this.statsResults.connectionType[ipType].transport = transport;\n\n this.statsResults[type][sendRecvType].totalRoundTripTime = result.totalRoundTripTime;\n };\n\n /**\n * Process Track results\n *\n * @private\n * @param {*} result\n * @param {*} mediaType\n * @returns {void}\n * @memberof StatsAnalyzer\n */\n private processTrackResult(result: any, mediaType: any) {\n if (!result || result.type !== 'track') {\n return;\n }\n\n const sendrecvType =\n result.remoteSource === true ? STATS.RECEIVE_DIRECTION : STATS.SEND_DIRECTION;\n\n if (sendrecvType === STATS.RECEIVE_DIRECTION) {\n this.statsResults.resolutions[mediaType][sendrecvType].framesReceived = result.framesReceived;\n this.statsResults.resolutions[mediaType][sendrecvType].framesDecoded = result.framesDecoded;\n this.statsResults.resolutions[mediaType][sendrecvType].framesDropped = result.framesDropped;\n }\n\n if (result.trackIdentifier && !mediaType.includes('audio')) {\n this.statsResults.resolutions[mediaType][sendrecvType].trackIdentifier =\n result.trackIdentifier;\n\n const jitterBufferDelay = result && result.jitterBufferDelay;\n const jitterBufferEmittedCount = result && result.jitterBufferEmittedCount;\n\n this.statsResults.resolutions[mediaType][sendrecvType].avgJitterDelay =\n jitterBufferEmittedCount && +jitterBufferDelay / +jitterBufferEmittedCount;\n\n // Used to calculate the jitter\n this.statsResults.resolutions[mediaType][sendrecvType].jitterBufferDelay =\n result.jitterBufferDelay;\n this.statsResults.resolutions[mediaType][sendrecvType].jitterBufferEmittedCount =\n result.jitterBufferEmittedCount;\n }\n }\n\n /**\n *\n * @private\n * @param {*} result\n * @param {*} type\n * @returns {void}\n * @memberof StatsAnalyzer\n */\n compareSentAndReceived(result, type) {\n // Don't compare on transceivers without a sender.\n if (!type || !this.statsResults.internal[type].send) {\n return;\n }\n\n const mediaType = type;\n\n if (!this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver) {\n this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;\n }\n\n const currentPacketLoss =\n result.packetsLost - this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver;\n\n this.statsResults.internal[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;\n this.statsResults[mediaType].send.packetsLostOnReceiver = currentPacketLoss;\n this.statsResults[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;\n\n this.statsResults[mediaType].send.meanRemoteJitter.push(result.jitter);\n this.statsResults[mediaType].send.meanRoundTripTime.push(result.roundTripTime);\n\n this.statsResults[mediaType].send.timestamp = result.timestamp;\n this.statsResults[mediaType].send.ssrc = result.ssrc;\n this.statsResults[mediaType].send.reportsReceived = result.reportsReceived;\n\n // Total packloss ratio on this video section of the call\n this.statsResults[mediaType].send.overAllPacketLossRatio =\n this.statsResults[mediaType].send.totalPacketsLostOnReceiver > 0\n ? this.statsResults[mediaType].send.totalPacketsLostOnReceiver /\n this.statsResults[mediaType].send.totalPacketsSent\n : 0;\n this.statsResults[mediaType].send.currentPacketLossRatio =\n this.statsResults[mediaType].send.packetsLostOnReceiver > 0\n ? (this.statsResults[mediaType].send.packetsLostOnReceiver * 100) /\n (this.statsResults[mediaType].send.packetsSent +\n this.statsResults[mediaType].send.packetsLostOnReceiver)\n : 0;\n\n if (\n this.statsResults[mediaType].send.maxPacketLossRatio <\n this.statsResults[mediaType].send.currentPacketLossRatio\n ) {\n this.statsResults[mediaType].send.maxPacketLossRatio =\n this.statsResults[mediaType].send.currentPacketLossRatio;\n }\n\n if (result.type === 'remote-inbound-rtp') {\n this.networkQualityMonitor.determineUplinkNetworkQuality({\n mediaType,\n remoteRtpResults: result,\n statsAnalyzerCurrentStats: this.statsResults,\n });\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -130,7 +130,7 @@ export declare const ICE_TIMEOUT = 2000;
|
|
|
130
130
|
export declare const ICE_FAIL_TIMEOUT = 3000;
|
|
131
131
|
export declare const RETRY_TIMEOUT = 3000;
|
|
132
132
|
export declare const ICE_AND_DTLS_CONNECTION_TIMEOUT = 10000;
|
|
133
|
-
export declare const ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT =
|
|
133
|
+
export declare const ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT = 35000;
|
|
134
134
|
export declare const DIALER_REGEX: {
|
|
135
135
|
SIP_ADDRESS: RegExp;
|
|
136
136
|
PHONE_NUMBER: RegExp;
|
package/dist/webinar/index.js
CHANGED
|
@@ -62,7 +62,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
62
62
|
updateCanManageWebcast: function updateCanManageWebcast(canManageWebcast) {
|
|
63
63
|
this.set('canManageWebcast', canManageWebcast);
|
|
64
64
|
},
|
|
65
|
-
version: "3.0.0-beta.
|
|
65
|
+
version: "3.0.0-beta.305"
|
|
66
66
|
});
|
|
67
67
|
var _default = Webinar;
|
|
68
68
|
exports.default = _default;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/plugin-meetings",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.305",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
|
|
6
6
|
"contributors": [
|
|
@@ -32,12 +32,12 @@
|
|
|
32
32
|
"build": "yarn run -T tsc --declaration true --declarationDir ./dist/types"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@webex/plugin-meetings": "3.0.0-beta.
|
|
36
|
-
"@webex/test-helper-chai": "3.0.0-beta.
|
|
37
|
-
"@webex/test-helper-mocha": "3.0.0-beta.
|
|
38
|
-
"@webex/test-helper-mock-webex": "3.0.0-beta.
|
|
39
|
-
"@webex/test-helper-retry": "3.0.0-beta.
|
|
40
|
-
"@webex/test-helper-test-users": "3.0.0-beta.
|
|
35
|
+
"@webex/plugin-meetings": "3.0.0-beta.305",
|
|
36
|
+
"@webex/test-helper-chai": "3.0.0-beta.305",
|
|
37
|
+
"@webex/test-helper-mocha": "3.0.0-beta.305",
|
|
38
|
+
"@webex/test-helper-mock-webex": "3.0.0-beta.305",
|
|
39
|
+
"@webex/test-helper-retry": "3.0.0-beta.305",
|
|
40
|
+
"@webex/test-helper-test-users": "3.0.0-beta.305",
|
|
41
41
|
"chai": "^4.3.4",
|
|
42
42
|
"chai-as-promised": "^7.1.1",
|
|
43
43
|
"jsdom-global": "3.0.2",
|
|
@@ -46,19 +46,19 @@
|
|
|
46
46
|
"typescript": "^4.7.4"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@webex/common": "3.0.0-beta.
|
|
49
|
+
"@webex/common": "3.0.0-beta.305",
|
|
50
50
|
"@webex/internal-media-core": "2.2.1",
|
|
51
|
-
"@webex/internal-plugin-conversation": "3.0.0-beta.
|
|
52
|
-
"@webex/internal-plugin-device": "3.0.0-beta.
|
|
53
|
-
"@webex/internal-plugin-llm": "3.0.0-beta.
|
|
54
|
-
"@webex/internal-plugin-mercury": "3.0.0-beta.
|
|
55
|
-
"@webex/internal-plugin-metrics": "3.0.0-beta.
|
|
56
|
-
"@webex/internal-plugin-support": "3.0.0-beta.
|
|
57
|
-
"@webex/internal-plugin-user": "3.0.0-beta.
|
|
58
|
-
"@webex/media-helpers": "3.0.0-beta.
|
|
59
|
-
"@webex/plugin-people": "3.0.0-beta.
|
|
60
|
-
"@webex/plugin-rooms": "3.0.0-beta.
|
|
61
|
-
"@webex/webex-core": "3.0.0-beta.
|
|
51
|
+
"@webex/internal-plugin-conversation": "3.0.0-beta.305",
|
|
52
|
+
"@webex/internal-plugin-device": "3.0.0-beta.305",
|
|
53
|
+
"@webex/internal-plugin-llm": "3.0.0-beta.305",
|
|
54
|
+
"@webex/internal-plugin-mercury": "3.0.0-beta.305",
|
|
55
|
+
"@webex/internal-plugin-metrics": "3.0.0-beta.305",
|
|
56
|
+
"@webex/internal-plugin-support": "3.0.0-beta.305",
|
|
57
|
+
"@webex/internal-plugin-user": "3.0.0-beta.305",
|
|
58
|
+
"@webex/media-helpers": "3.0.0-beta.305",
|
|
59
|
+
"@webex/plugin-people": "3.0.0-beta.305",
|
|
60
|
+
"@webex/plugin-rooms": "3.0.0-beta.305",
|
|
61
|
+
"@webex/webex-core": "3.0.0-beta.305",
|
|
62
62
|
"ampersand-collection": "^2.0.2",
|
|
63
63
|
"bowser": "^2.11.0",
|
|
64
64
|
"btoa": "^1.2.1",
|
package/src/constants.ts
CHANGED
|
@@ -191,7 +191,7 @@ export const ICE_FAIL_TIMEOUT = 3000;
|
|
|
191
191
|
export const RETRY_TIMEOUT = 3000;
|
|
192
192
|
|
|
193
193
|
export const ICE_AND_DTLS_CONNECTION_TIMEOUT = 10000;
|
|
194
|
-
export const ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT =
|
|
194
|
+
export const ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT = 35000;
|
|
195
195
|
|
|
196
196
|
// ******************** REGEX **********************
|
|
197
197
|
// Please alphabetize
|
|
@@ -198,18 +198,16 @@ export class StatsAnalyzer extends EventsScope {
|
|
|
198
198
|
newMqa.intervalMetadata.peerReflexiveIP = this.statsResults.connectionType.local.ipAddress;
|
|
199
199
|
|
|
200
200
|
// Adding peripheral information
|
|
201
|
-
newMqa.intervalMetadata.peripherals = [];
|
|
202
|
-
|
|
203
201
|
newMqa.intervalMetadata.peripherals.push({information: _UNKNOWN_, name: MEDIA_DEVICES.SPEAKER});
|
|
204
202
|
if (this.statsResults['audio-send']) {
|
|
205
203
|
newMqa.intervalMetadata.peripherals.push({
|
|
206
|
-
information: this.statsResults['audio-send']
|
|
204
|
+
information: this.statsResults['audio-send'].trackLabel || _UNKNOWN_,
|
|
207
205
|
name: MEDIA_DEVICES.MICROPHONE,
|
|
208
206
|
});
|
|
209
207
|
}
|
|
210
208
|
if (this.statsResults['video-send']) {
|
|
211
209
|
newMqa.intervalMetadata.peripherals.push({
|
|
212
|
-
information: this.statsResults['video-send']
|
|
210
|
+
information: this.statsResults['video-send'].trackLabel || _UNKNOWN_,
|
|
213
211
|
name: MEDIA_DEVICES.CAMERA,
|
|
214
212
|
});
|
|
215
213
|
}
|
|
@@ -7,6 +7,7 @@ import {ConnectionState} from '@webex/internal-media-core';
|
|
|
7
7
|
import {StatsAnalyzer, EVENTS} from '../../../../src/statsAnalyzer';
|
|
8
8
|
import NetworkQualityMonitor from '../../../../src/networkQualityMonitor';
|
|
9
9
|
import testUtils from '../../../utils/testUtils';
|
|
10
|
+
import {MEDIA_DEVICES, _UNKNOWN_} from '@webex/plugin-meetings/src/constants';
|
|
10
11
|
|
|
11
12
|
const {assert} = chai;
|
|
12
13
|
|
|
@@ -119,6 +120,7 @@ describe('plugin-meetings', () => {
|
|
|
119
120
|
audio: {
|
|
120
121
|
senders: [
|
|
121
122
|
{
|
|
123
|
+
localTrackLabel: 'fake-microphone',
|
|
122
124
|
report: [
|
|
123
125
|
{
|
|
124
126
|
type: 'outbound-rtp',
|
|
@@ -173,6 +175,7 @@ describe('plugin-meetings', () => {
|
|
|
173
175
|
video: {
|
|
174
176
|
senders: [
|
|
175
177
|
{
|
|
178
|
+
localTrackLabel: 'fake-camera',
|
|
176
179
|
report: [
|
|
177
180
|
{
|
|
178
181
|
type: 'outbound-rtp',
|
|
@@ -413,6 +416,27 @@ describe('plugin-meetings', () => {
|
|
|
413
416
|
assert.strictEqual(mqeData.audioTransmit[0].common.transportType, 'TLS');
|
|
414
417
|
assert.strictEqual(mqeData.videoReceive[0].common.transportType, 'TLS');
|
|
415
418
|
});
|
|
419
|
+
|
|
420
|
+
it('emits the correct peripherals in MEDIA_QUALITY events', async () => {
|
|
421
|
+
await startStatsAnalyzer({expected: {receiveVideo: true}});
|
|
422
|
+
|
|
423
|
+
await progressTime();
|
|
424
|
+
|
|
425
|
+
assert.strictEqual(mqeData.intervalMetadata.peripherals.find((val) => val.name === MEDIA_DEVICES.MICROPHONE).information, 'fake-microphone');
|
|
426
|
+
assert.strictEqual(mqeData.intervalMetadata.peripherals.find((val) => val.name === MEDIA_DEVICES.CAMERA).information, 'fake-camera');
|
|
427
|
+
});
|
|
428
|
+
|
|
429
|
+
it('emits the correct peripherals in MEDIA_QUALITY events when localTrackLabel is undefined', async () => {
|
|
430
|
+
fakeStats.audio.senders[0].localTrackLabel = undefined;
|
|
431
|
+
fakeStats.video.senders[0].localTrackLabel = undefined;
|
|
432
|
+
|
|
433
|
+
await startStatsAnalyzer({expected: {receiveVideo: true}});
|
|
434
|
+
|
|
435
|
+
await progressTime();
|
|
436
|
+
|
|
437
|
+
assert.strictEqual(mqeData.intervalMetadata.peripherals.find((val) => val.name === MEDIA_DEVICES.MICROPHONE).information, _UNKNOWN_);
|
|
438
|
+
assert.strictEqual(mqeData.intervalMetadata.peripherals.find((val) => val.name === MEDIA_DEVICES.CAMERA).information, _UNKNOWN_);
|
|
439
|
+
});
|
|
416
440
|
});
|
|
417
441
|
});
|
|
418
442
|
});
|