@webex/plugin-meetings 3.0.0-beta.33 → 3.0.0-beta.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +1 -1
  3. package/dist/constants.js +2 -1
  4. package/dist/constants.js.map +1 -1
  5. package/dist/meeting/muteState.js +13 -0
  6. package/dist/meeting/muteState.js.map +1 -1
  7. package/dist/meeting/request.js +135 -85
  8. package/dist/meeting/request.js.map +1 -1
  9. package/dist/metrics/config.js +1 -11
  10. package/dist/metrics/config.js.map +1 -1
  11. package/dist/metrics/index.js +3 -25
  12. package/dist/metrics/index.js.map +1 -1
  13. package/dist/reachability/index.js +25 -17
  14. package/dist/reachability/index.js.map +1 -1
  15. package/dist/reachability/request.js +12 -5
  16. package/dist/reachability/request.js.map +1 -1
  17. package/dist/roap/index.js +9 -6
  18. package/dist/roap/index.js.map +1 -1
  19. package/dist/roap/request.js +114 -83
  20. package/dist/roap/request.js.map +1 -1
  21. package/dist/roap/turnDiscovery.js +6 -4
  22. package/dist/roap/turnDiscovery.js.map +1 -1
  23. package/dist/types/constants.d.ts +2 -1
  24. package/dist/types/meeting/muteState.d.ts +8 -0
  25. package/dist/types/meeting/request.d.ts +10 -0
  26. package/dist/types/metrics/config.d.ts +0 -9
  27. package/dist/types/metrics/index.d.ts +0 -8
  28. package/dist/types/reachability/request.d.ts +5 -3
  29. package/dist/types/roap/request.d.ts +6 -3
  30. package/package.json +20 -19
  31. package/src/constants.ts +2 -1
  32. package/src/meeting/muteState.ts +11 -0
  33. package/src/meeting/request.ts +35 -1
  34. package/src/metrics/config.ts +0 -10
  35. package/src/metrics/index.ts +3 -24
  36. package/src/reachability/index.ts +12 -4
  37. package/src/reachability/request.ts +10 -5
  38. package/src/roap/index.ts +6 -6
  39. package/src/roap/request.ts +93 -78
  40. package/src/roap/turnDiscovery.ts +4 -4
  41. package/test/unit/spec/meeting/index.js +1 -0
  42. package/test/unit/spec/meeting/muteState.js +11 -0
  43. package/test/unit/spec/meeting/request.js +27 -0
  44. package/test/unit/spec/reachability/index.ts +18 -7
  45. package/test/unit/spec/reachability/request.js +66 -0
  46. package/test/unit/spec/roap/index.ts +10 -7
  47. package/test/unit/spec/roap/request.ts +187 -84
  48. package/test/unit/spec/roap/turnDiscovery.ts +8 -4
@@ -1 +1 @@
1
- {"version":3,"names":["errorDescription","UNKNOWN_CALL_FAILURE","LOCUS_RATE_LIMITED_INCOMING","LOCUS_RATE_LIMITED_OUTGOING","LOCUS_UNAVAILABLE","LOCUS_CONFLICT","TIMEOUT","LOCUS_INVALID_SEQUENCE_HASH","UPDATE_MEDIA_FAILED","FAILED_TO_CONNECT_MEDIA","MEDIA_ENGINE_LOST","MEDIA_CONNECTION_LOST","ICE_FAILURE","MEDIA_ENGINE_HANG","ICE_SERVER_REJECTED","CALL_FULL","ROOM_TOO_LARGE","GUEST_ALREADY_ADDED","LOCUS_USER_NOT_AUTHORISED","CLOUDBERRY_UNAVAILABLE","ROOM_TOO_LARGE_FREE_ACCOUNT","MEETING_INACTIVE","MEETING_LOCKED","MEETING_TERMINATING","MODERATOR_PIN_OR_GUEST_REQUIRED","MODERATOR_PIN_OR_GUEST_PIN_REQUIRED","MODERATOR_REQUIRED","USER_NOT_MEMBER_OF_ROOM","NEW_LOCUS_ERROR","NET_WORK_UNAVAILABLE","MEETING_UNAVAILABLE","MEETING_ID_INVALID","MEETING_SITE_INVALID","LOCUS_INVALID_JOINTIME","LOBBY_EXPIRED","MEDIA_CONNECTION_LOST_PAIRED","PHONE_NUMBER_NOT_A_NUMBER","PHONE_NUMBER_TOO_LONG","INVALID_DIALABLE_KEY","ONE_ON_ONE_TO_SELF_NOT_ALLOWED","REMOVED_PARTICIPANT","MEETING_LINK_NOT_FOUND","PHONE_NUMBER_TOO_SHORT_AFTER_IDD","INVALID_INVITEE_ADDRESS","PMR_USER_ACCOUNT_LOCKED_OUT","GUEST_FORBIDDEN","PMR_ACCOUNT_SUSPENDED","EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE","CONVERSATION_NOT_FOUND","SIP_CALLEE_BUSY","SIP_CALLEE_NOT_FOUND","START_RECORDING_FAILED","RECORDING_IN_PROGRESS_FAILED","errorCategory","SIGNALING","MEDIA","OTHER","EXPECTED","errorFailureType","CALL_INITIATION_FAILURE","MEDIA_CONNECTION_FAILURE","EXPECTED_FAILURE","ACCESS_RIGHTS","eventType","MEDIA_QUALITY","CALL_INITIATED","MERCURY_CONNECTION_LOST","MERCURY_CONNECTION_RESTORED","MOVE_MEDIA","LOCAL_SDP_GENERATED","REMOTE_SDP_RECEIVED","LOCUS_JOIN_REQUEST","LOCUS_JOIN_RESPONSE","ALERT_DISPLAYED","ICE_START","ICE_END","ICE_DISCONNECT","RECEIVING_MEDIA_START","RECEIVING_MEDIA_STOP","SENDING_MEDIA_START","SENDING_MEDIA_STOP","MEDIA_RENDER_START","MEDIA_RENDER_STOP","MEDIA_CAPABILITIES","MEDIA_RECONNECTING","MEDIA_RECOVERED","CALL_ABORTED","PIN_PROMPT","PIN_COLLECTED","LOBBY_ENTERED","LOBBY_EXITED","SHARE_INITIATED","SHARE_STOPPED","LOCAL_SHARE_FLOOR_GRANTED","SHARE_LAYOUT_DISPLAYED","WHITEBOARD_SHARE_INITIATED","WHITEBOARD_SHARE_STOPPED","WHITEBOARD_SHARE_FLOOR_GRANTED","MUTED","UNMUTED","LEAVE","REMOTE_ENDED","REMOTE_STARTED","MEDIA_REQUEST","MEDIA_RESPONSE","PSTN_AUDIO_ATTEMPT_START","PSTN_AUDIO_ATTEMPT_FINISH","PSTN_AUDIO_ATTEMPT_SKIP","error","name","MEDIA_ENGINE","ICE_FAILED","LOCUS_RESPONSE","LOCUS_LEAVE","notFatalErrorList","errors","trigger","USER_INTERACTION","MERCURY_EVENT","LOCI_UPDATE","MEDIA_ENGINE_EVENT","pstnAudioType","DIAL_IN","DIAL_OUT","displayLocation","TOAST","ROOM_LIST","CALL_PANE","CALL_VIEW","mediaType","AUDIO","VIDEO","SHARE","WHITEBOARD","reconnection","RECOVERED_BY_NEW","RECOVERED_BY_RETRY","errorCodes","USER_CREATE_FAILED","USER_ALREADY_PARTICIPANT","CONVO_ALREADY_EXISTS","ALREADY_ANNOUNCEMENT_SPACE","NOT_ANNOUNCEMENT_SPACE","USER_NOT_MODERATOR_IN_ANNOUNCEMENT_SPACE","TEMP_ID_ALREADY_EXISTS","PARENT_ACTIVITY_ID_NOT_FOUND_OR_INVALID","statusCodes","NETWORK_OR_CORS","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","errorObjects","category","media","expected","mediaEngine","UNKNOWN","OS_NAME","WINDOWS","MAC","IOS","ANDROID","CHROME","LINUX","OTHERS","CLIENT_NAME","PLATFORM"],"sources":["config.ts"],"sourcesContent":["const errorDescription = {\n UNKNOWN_CALL_FAILURE: 'UnknownCallFailure',\n LOCUS_RATE_LIMITED_INCOMING: 'LocusRateLimitedIncoming',\n LOCUS_RATE_LIMITED_OUTGOING: 'LocusRateLimitedOutgoing',\n LOCUS_UNAVAILABLE: 'LocusUnavailable',\n LOCUS_CONFLICT: 'LocusConflict',\n TIMEOUT: 'Timeout',\n LOCUS_INVALID_SEQUENCE_HASH: 'LocusInvalidSequenceHash',\n UPDATE_MEDIA_FAILED: 'UpdateMediaFailed',\n FAILED_TO_CONNECT_MEDIA: 'FailedToConnectMedia',\n MEDIA_ENGINE_LOST: 'MediaEngineLost',\n MEDIA_CONNECTION_LOST: 'MediaConnectionLost',\n ICE_FAILURE: 'IceFailure',\n MEDIA_ENGINE_HANG: 'MediaEngineHang',\n ICE_SERVER_REJECTED: 'IceServerRejected',\n CALL_FULL: 'CallFull',\n ROOM_TOO_LARGE: 'RoomTooLarge',\n GUEST_ALREADY_ADDED: 'GuestAlreadyAdded',\n LOCUS_USER_NOT_AUTHORISED: 'LocusUserNotAuthorised',\n CLOUDBERRY_UNAVAILABLE: 'CloudberryUnavailable',\n ROOM_TOO_LARGE_FREE_ACCOUNT: 'RoomTooLarge_FreeAccount',\n MEETING_INACTIVE: 'MeetingInactive',\n MEETING_LOCKED: 'MeetingLocked',\n MEETING_TERMINATING: 'MeetingTerminating',\n MODERATOR_PIN_OR_GUEST_REQUIRED: 'Moderator_Pin_Or_Guest_Required',\n MODERATOR_PIN_OR_GUEST_PIN_REQUIRED: 'Moderator_Pin_Or_Guest_PIN_Required',\n MODERATOR_REQUIRED: 'Moderator_Required',\n USER_NOT_MEMBER_OF_ROOM: 'UserNotMemberOfRoom',\n NEW_LOCUS_ERROR: 'NewLocusError',\n NET_WORK_UNAVAILABLE: 'NetworkUnavailable',\n MEETING_UNAVAILABLE: 'MeetingUnavailable',\n MEETING_ID_INVALID: 'MeetingIDInvalid',\n MEETING_SITE_INVALID: 'MeetingSiteInvalid',\n LOCUS_INVALID_JOINTIME: 'LocusInvalidJoinTime',\n LOBBY_EXPIRED: 'LobbyExpired',\n MEDIA_CONNECTION_LOST_PAIRED: 'MediaConnectionLostPaired',\n PHONE_NUMBER_NOT_A_NUMBER: 'PhoneNumberNotANumber',\n PHONE_NUMBER_TOO_LONG: 'PhoneNumberTooLong',\n INVALID_DIALABLE_KEY: 'InvalidDialableKey',\n ONE_ON_ONE_TO_SELF_NOT_ALLOWED: 'OneOnOneToSelfNotAllowed',\n REMOVED_PARTICIPANT: 'RemovedParticipant',\n MEETING_LINK_NOT_FOUND: 'MeetingLinkNotFound',\n PHONE_NUMBER_TOO_SHORT_AFTER_IDD: 'PhoneNumberTooShortAfterIdd',\n INVALID_INVITEE_ADDRESS: 'InvalidInviteeAddress',\n PMR_USER_ACCOUNT_LOCKED_OUT: 'PMRUserAccountLockedOut',\n GUEST_FORBIDDEN: 'GuestForbidden',\n PMR_ACCOUNT_SUSPENDED: 'PMRAccountSuspended',\n EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE: 'EmptyPhoneNumberOrCountryCode',\n CONVERSATION_NOT_FOUND: 'ConversationNotFound',\n SIP_CALLEE_BUSY: 'SIPCalleeBusy',\n SIP_CALLEE_NOT_FOUND: 'SIPCalleeNotFound',\n START_RECORDING_FAILED: 'StartRecordingFailed',\n RECORDING_IN_PROGRESS_FAILED: 'RecordingInProgressFailed',\n};\n\nconst errorCategory = {\n SIGNALING: 'signaling',\n MEDIA: 'media',\n OTHER: 'other',\n EXPECTED: 'expected',\n};\n\nconst errorFailureType = {\n CALL_INITIATION_FAILURE: 'CallInitiationFailure',\n MEDIA_CONNECTION_FAILURE: 'MediaConnectionFailure',\n EXPECTED_FAILURE: 'ExpectedFailure',\n ACCESS_RIGHTS: 'AccessRights',\n};\n\nexport const eventType = {\n // media quality events every 60 seconds\n MEDIA_QUALITY: 'client.mediaquality.event',\n CALL_INITIATED: 'client.call.initiated',\n MERCURY_CONNECTION_LOST: 'client.mercury.connection.lost',\n MERCURY_CONNECTION_RESTORED: 'client.mercury.connection.restored',\n MOVE_MEDIA: 'client.call.move-media',\n LOCAL_SDP_GENERATED: 'client.media-engine.local-sdp-generated',\n REMOTE_SDP_RECEIVED: 'client.media-engine.remote-sdp-received',\n LOCUS_JOIN_REQUEST: 'client.locus.join.request',\n LOCUS_JOIN_RESPONSE: 'client.locus.join.response',\n ALERT_DISPLAYED: 'client.alert.displayed',\n // when ICE negotiation starts\n ICE_START: 'client.ice.start',\n ICE_END: 'client.ice.end',\n ICE_DISCONNECT: 'client.ice.disconnect',\n // Fired when the media engine reports receiving a new media stream. Media events MUST have the mediaType property.\n RECEIVING_MEDIA_START: 'client.media.rx.start',\n // Fired when the media engine reports the end of receiving a media stream.\n // Media events MUST have the mediaType property.\n RECEIVING_MEDIA_STOP: 'client.media.rx.stop',\n // Fired when the media engine reports sending a new media stream. Media events MUST have the mediaType property.\n SENDING_MEDIA_START: 'client.media.tx.start',\n // Fired when the media engine reports it stopped sending a media stream.\n // Media events MUST have the mediaType property.\n SENDING_MEDIA_STOP: 'client.media.tx.stop',\n MEDIA_RENDER_START: 'client.media.render.start',\n MEDIA_RENDER_STOP: 'client.media.render.stop',\n // static media event when outside of the normal scenario\n // call-analyzer assumes that a client is capable of receiving audio, video, and share\n // fired on change, or at beginning of a call\n // every media type is required, so must be indicated with boolean\n MEDIA_CAPABILITIES: 'client.media.capabilities',\n // Sent when the client notices that a media session has been lost\n MEDIA_RECONNECTING: 'client.media.reconnecting',\n // Sent when the client recovers a media session that was lost\n MEDIA_RECOVERED: 'client.media.recovered',\n CALL_ABORTED: 'client.call.aborted',\n // Fired when the \"please enter your PIN\" or similar prompt is displayed\n // to the user, to authenticate them into the meeting\n PIN_PROMPT: 'client.pin.prompt',\n // Fired when PIN entry has been completed\n PIN_COLLECTED: 'client.pin.collected',\n // Fired when the client displays the native lobby\n LOBBY_ENTERED: 'client.lobby.entered',\n // Fired when the client leaves the native lobby\n LOBBY_EXITED: 'client.lobby.exited',\n // Fired when the user of the client starts a share (e.g. click 'Share' button).\n // This should be sent from all clients that support sending a share.\n SHARE_INITIATED: 'client.share.initiated',\n // Fired when the user stops sharing (usually when they click the 'Stop' button for share)\n SHARE_STOPPED: 'client.share.stopped',\n // When the client receives a successful response from locus indicating that it has the floor for content sharing.\n LOCAL_SHARE_FLOOR_GRANTED: 'client.share.floor-granted.local',\n // Fired when the client changes its local UI/layout to a content sharing view,\n // because it is expecting to display share media.\n SHARE_LAYOUT_DISPLAYED: 'client.share.layout.displayed',\n // Fired when the user of the client starts a whiteboard share (e.g. click 'Share Live' button).\n WHITEBOARD_SHARE_INITIATED: 'client.whiteboard.share.initiated',\n // Fired when the meeting floor is released for whiteboard share\n WHITEBOARD_SHARE_STOPPED: 'client.whiteboard.share.stopped',\n // When the client receives a successful response from locus indicating that it has the floor for whiteboard sharing.\n WHITEBOARD_SHARE_FLOOR_GRANTED: 'client.whiteboard.share.floor-granted',\n MUTED: 'client.muted',\n UNMUTED: 'client.unmuted',\n LEAVE: 'client.call.leave',\n REMOTE_ENDED: 'client.call.remote-ended',\n REMOTE_STARTED: 'client.call.remote-started',\n MEDIA_REQUEST: 'client.locus.media.request',\n MEDIA_RESPONSE: 'client.locus.media.response',\n PSTN_AUDIO_ATTEMPT_START: 'client.pstnaudio.attempt.start',\n PSTN_AUDIO_ATTEMPT_FINISH: 'client.pstnaudio.attempt.finish',\n PSTN_AUDIO_ATTEMPT_SKIP: 'client.pstnaudio.attempt.skip',\n};\n\nexport const error = {\n name: {\n MEDIA_ENGINE: 'media-engine',\n ICE_FAILED: 'ice.failed',\n LOCUS_RESPONSE: 'locus.response',\n LOCUS_LEAVE: 'locus.leave',\n OTHER: 'other',\n },\n\n notFatalErrorList: [3003, 3004, 4004, 4005, 4006, 4015],\n errors: {\n // https://sqbu-github.cisco.com/WebExSquared/event-dictionary/wiki/Error-codes-for-metric-events\n // [errorDescription, errorFailureType, errorCategory]\n 1000: [\n errorDescription.UNKNOWN_CALL_FAILURE,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 1001: [\n errorDescription.LOCUS_RATE_LIMITED_INCOMING,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 1002: [\n errorDescription.LOCUS_RATE_LIMITED_OUTGOING,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 1003: [\n errorDescription.LOCUS_UNAVAILABLE,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 1004: [\n errorDescription.LOCUS_CONFLICT,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 1005: [\n errorDescription.TIMEOUT,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 1006: [\n errorDescription.LOCUS_INVALID_SEQUENCE_HASH,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 1007: [\n errorDescription.UPDATE_MEDIA_FAILED,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 2001: [\n errorDescription.FAILED_TO_CONNECT_MEDIA,\n errorFailureType.MEDIA_CONNECTION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 2002: [\n errorDescription.MEDIA_ENGINE_LOST,\n errorFailureType.MEDIA_CONNECTION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 2003: [\n errorDescription.MEDIA_CONNECTION_LOST,\n errorFailureType.MEDIA_CONNECTION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 2004: [\n errorDescription.ICE_FAILURE,\n errorFailureType.MEDIA_CONNECTION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 2005: [\n errorDescription.MEDIA_ENGINE_HANG,\n errorFailureType.MEDIA_CONNECTION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 2006: [\n errorDescription.ICE_SERVER_REJECTED,\n errorFailureType.MEDIA_CONNECTION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 3001: [errorDescription.CALL_FULL, errorFailureType.EXPECTED_FAILURE, errorCategory.EXPECTED],\n 3002: [\n errorDescription.ROOM_TOO_LARGE,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 3004: [\n errorDescription.GUEST_ALREADY_ADDED,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 3005: [\n errorDescription.LOCUS_USER_NOT_AUTHORISED,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 3006: [\n errorDescription.CLOUDBERRY_UNAVAILABLE,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 3007: [\n errorDescription.ROOM_TOO_LARGE_FREE_ACCOUNT,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4001: [\n errorDescription.MEETING_INACTIVE,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4002: [\n errorDescription.MEETING_LOCKED,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4003: [\n errorDescription.MEETING_TERMINATING,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4004: [\n errorDescription.MODERATOR_PIN_OR_GUEST_REQUIRED,\n errorFailureType.ACCESS_RIGHTS,\n errorCategory.EXPECTED,\n ],\n 4005: [\n errorDescription.MODERATOR_PIN_OR_GUEST_PIN_REQUIRED,\n errorFailureType.ACCESS_RIGHTS,\n errorCategory.EXPECTED,\n ],\n 4006: [\n errorDescription.MODERATOR_REQUIRED,\n errorFailureType.ACCESS_RIGHTS,\n errorCategory.EXPECTED,\n ],\n 4007: [\n errorDescription.USER_NOT_MEMBER_OF_ROOM,\n errorFailureType.ACCESS_RIGHTS,\n errorCategory.EXPECTED,\n ],\n 4008: [\n errorDescription.NEW_LOCUS_ERROR,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4009: [\n errorDescription.NET_WORK_UNAVAILABLE,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4010: [\n errorDescription.MEETING_UNAVAILABLE,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4011: [\n errorDescription.MEETING_ID_INVALID,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4012: [\n errorDescription.MEETING_SITE_INVALID,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4013: [\n errorDescription.LOCUS_INVALID_JOINTIME,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4014: [\n errorDescription.LOBBY_EXPIRED,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4015: [\n errorDescription.MEDIA_CONNECTION_LOST_PAIRED,\n errorFailureType.MEDIA_CONNECTION_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4016: [\n errorDescription.PHONE_NUMBER_NOT_A_NUMBER,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4017: [\n errorDescription.PHONE_NUMBER_TOO_LONG,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4018: [\n errorDescription.INVALID_DIALABLE_KEY,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4019: [\n errorDescription.ONE_ON_ONE_TO_SELF_NOT_ALLOWED,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4020: [\n errorDescription.REMOVED_PARTICIPANT,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4021: [\n errorDescription.MEETING_LINK_NOT_FOUND,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4022: [\n errorDescription.PHONE_NUMBER_TOO_SHORT_AFTER_IDD,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4023: [\n errorDescription.INVALID_INVITEE_ADDRESS,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4024: [\n errorDescription.PMR_USER_ACCOUNT_LOCKED_OUT,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4025: [\n errorDescription.GUEST_FORBIDDEN,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4026: [\n errorDescription.PMR_ACCOUNT_SUSPENDED,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4027: [\n errorDescription.EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4028: [\n errorDescription.CONVERSATION_NOT_FOUND,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4029: [\n errorDescription.START_RECORDING_FAILED,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4030: [\n errorDescription.RECORDING_IN_PROGRESS_FAILED,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 5000: [\n errorDescription.SIP_CALLEE_BUSY,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 5001: [\n errorDescription.SIP_CALLEE_NOT_FOUND,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n },\n};\n\nexport const trigger = {\n USER_INTERACTION: 'user-interaction',\n MERCURY_EVENT: 'mercury-event',\n LOCI_UPDATE: 'loci-update',\n MEDIA_ENGINE_EVENT: 'media-engine-event',\n TIMEOUT: 'timeout',\n SIGNALING: 'signaling',\n OTHER: 'other',\n};\n\nexport const pstnAudioType = {\n DIAL_IN: 'dial-in',\n DIAL_OUT: 'dial-out',\n};\n\nexport const displayLocation = {\n TOAST: 'toast',\n ROOM_LIST: 'room-list',\n CALL_PANE: 'call-pane',\n CALL_VIEW: 'call-view',\n OTHER: 'other',\n};\n\nexport const mediaType = {\n AUDIO: 'audio',\n VIDEO: 'video',\n SHARE: 'share',\n WHITEBOARD: 'whiteboard',\n};\n\nexport const reconnection = {\n RECOVERED_BY_NEW: 'new', // always set to new due to /media request, no retries with ice restart\n RECOVERED_BY_RETRY: 'retry',\n};\n\nexport const errorCodes = {\n // ordered by error code values\n USER_CREATE_FAILED: 1400006,\n USER_ALREADY_PARTICIPANT: 1403001,\n CONVO_ALREADY_EXISTS: 1403010,\n ALREADY_ANNOUNCEMENT_SPACE: 1403014,\n NOT_ANNOUNCEMENT_SPACE: 1403015,\n USER_NOT_MODERATOR_IN_ANNOUNCEMENT_SPACE: 1403016,\n TEMP_ID_ALREADY_EXISTS: 1409001,\n PARENT_ACTIVITY_ID_NOT_FOUND_OR_INVALID: 14000015,\n};\nexport const statusCodes = {\n // ordered by status codes\n NETWORK_OR_CORS: 0,\n BAD_REQUEST: 400,\n FORBIDDEN: 403,\n NOT_FOUND: 404,\n CONFLICT: 409,\n};\n\nexport const errorObjects = {\n category: {\n media: 'media',\n expected: 'expected',\n },\n name: {\n mediaEngine: 'media-engine',\n },\n};\n\nexport const UNKNOWN = 'unknown';\n\nexport const OS_NAME = {\n WINDOWS: 'windows',\n MAC: 'mac',\n IOS: 'ios',\n ANDROID: 'android',\n CHROME: 'chrome',\n LINUX: 'linux',\n OTHERS: 'other',\n};\n\nexport const CLIENT_NAME = 'webex-js-sdk';\nexport const PLATFORM = 'Web';\n"],"mappings":"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"}
1
+ {"version":3,"names":["errorDescription","UNKNOWN_CALL_FAILURE","LOCUS_RATE_LIMITED_INCOMING","LOCUS_RATE_LIMITED_OUTGOING","LOCUS_UNAVAILABLE","LOCUS_CONFLICT","TIMEOUT","LOCUS_INVALID_SEQUENCE_HASH","UPDATE_MEDIA_FAILED","FAILED_TO_CONNECT_MEDIA","MEDIA_ENGINE_LOST","MEDIA_CONNECTION_LOST","ICE_FAILURE","MEDIA_ENGINE_HANG","ICE_SERVER_REJECTED","CALL_FULL","ROOM_TOO_LARGE","GUEST_ALREADY_ADDED","LOCUS_USER_NOT_AUTHORISED","CLOUDBERRY_UNAVAILABLE","ROOM_TOO_LARGE_FREE_ACCOUNT","MEETING_INACTIVE","MEETING_LOCKED","MEETING_TERMINATING","MODERATOR_PIN_OR_GUEST_REQUIRED","MODERATOR_PIN_OR_GUEST_PIN_REQUIRED","MODERATOR_REQUIRED","USER_NOT_MEMBER_OF_ROOM","NEW_LOCUS_ERROR","NET_WORK_UNAVAILABLE","MEETING_UNAVAILABLE","MEETING_ID_INVALID","MEETING_SITE_INVALID","LOCUS_INVALID_JOINTIME","LOBBY_EXPIRED","MEDIA_CONNECTION_LOST_PAIRED","PHONE_NUMBER_NOT_A_NUMBER","PHONE_NUMBER_TOO_LONG","INVALID_DIALABLE_KEY","ONE_ON_ONE_TO_SELF_NOT_ALLOWED","REMOVED_PARTICIPANT","MEETING_LINK_NOT_FOUND","PHONE_NUMBER_TOO_SHORT_AFTER_IDD","INVALID_INVITEE_ADDRESS","PMR_USER_ACCOUNT_LOCKED_OUT","GUEST_FORBIDDEN","PMR_ACCOUNT_SUSPENDED","EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE","CONVERSATION_NOT_FOUND","SIP_CALLEE_BUSY","SIP_CALLEE_NOT_FOUND","START_RECORDING_FAILED","RECORDING_IN_PROGRESS_FAILED","errorCategory","SIGNALING","MEDIA","OTHER","EXPECTED","errorFailureType","CALL_INITIATION_FAILURE","MEDIA_CONNECTION_FAILURE","EXPECTED_FAILURE","ACCESS_RIGHTS","eventType","MEDIA_QUALITY","CALL_INITIATED","MERCURY_CONNECTION_LOST","MERCURY_CONNECTION_RESTORED","MOVE_MEDIA","LOCAL_SDP_GENERATED","REMOTE_SDP_RECEIVED","LOCUS_JOIN_REQUEST","LOCUS_JOIN_RESPONSE","ALERT_DISPLAYED","ICE_START","ICE_END","ICE_DISCONNECT","RECEIVING_MEDIA_START","RECEIVING_MEDIA_STOP","SENDING_MEDIA_START","SENDING_MEDIA_STOP","MEDIA_RENDER_START","MEDIA_RENDER_STOP","MEDIA_CAPABILITIES","MEDIA_RECONNECTING","MEDIA_RECOVERED","CALL_ABORTED","PIN_PROMPT","PIN_COLLECTED","LOBBY_ENTERED","LOBBY_EXITED","SHARE_INITIATED","SHARE_STOPPED","LOCAL_SHARE_FLOOR_GRANTED","SHARE_LAYOUT_DISPLAYED","WHITEBOARD_SHARE_INITIATED","WHITEBOARD_SHARE_STOPPED","WHITEBOARD_SHARE_FLOOR_GRANTED","MUTED","UNMUTED","LEAVE","REMOTE_ENDED","REMOTE_STARTED","MEDIA_REQUEST","MEDIA_RESPONSE","PSTN_AUDIO_ATTEMPT_START","PSTN_AUDIO_ATTEMPT_FINISH","PSTN_AUDIO_ATTEMPT_SKIP","error","name","MEDIA_ENGINE","ICE_FAILED","LOCUS_RESPONSE","LOCUS_LEAVE","notFatalErrorList","errors","trigger","USER_INTERACTION","MERCURY_EVENT","LOCI_UPDATE","MEDIA_ENGINE_EVENT","pstnAudioType","DIAL_IN","DIAL_OUT","displayLocation","TOAST","ROOM_LIST","CALL_PANE","CALL_VIEW","mediaType","AUDIO","VIDEO","SHARE","WHITEBOARD","reconnection","RECOVERED_BY_NEW","RECOVERED_BY_RETRY","errorCodes","USER_CREATE_FAILED","USER_ALREADY_PARTICIPANT","CONVO_ALREADY_EXISTS","ALREADY_ANNOUNCEMENT_SPACE","NOT_ANNOUNCEMENT_SPACE","USER_NOT_MODERATOR_IN_ANNOUNCEMENT_SPACE","TEMP_ID_ALREADY_EXISTS","PARENT_ACTIVITY_ID_NOT_FOUND_OR_INVALID","statusCodes","NETWORK_OR_CORS","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","errorObjects","category","media","expected","mediaEngine","UNKNOWN","CLIENT_NAME","PLATFORM"],"sources":["config.ts"],"sourcesContent":["const errorDescription = {\n UNKNOWN_CALL_FAILURE: 'UnknownCallFailure',\n LOCUS_RATE_LIMITED_INCOMING: 'LocusRateLimitedIncoming',\n LOCUS_RATE_LIMITED_OUTGOING: 'LocusRateLimitedOutgoing',\n LOCUS_UNAVAILABLE: 'LocusUnavailable',\n LOCUS_CONFLICT: 'LocusConflict',\n TIMEOUT: 'Timeout',\n LOCUS_INVALID_SEQUENCE_HASH: 'LocusInvalidSequenceHash',\n UPDATE_MEDIA_FAILED: 'UpdateMediaFailed',\n FAILED_TO_CONNECT_MEDIA: 'FailedToConnectMedia',\n MEDIA_ENGINE_LOST: 'MediaEngineLost',\n MEDIA_CONNECTION_LOST: 'MediaConnectionLost',\n ICE_FAILURE: 'IceFailure',\n MEDIA_ENGINE_HANG: 'MediaEngineHang',\n ICE_SERVER_REJECTED: 'IceServerRejected',\n CALL_FULL: 'CallFull',\n ROOM_TOO_LARGE: 'RoomTooLarge',\n GUEST_ALREADY_ADDED: 'GuestAlreadyAdded',\n LOCUS_USER_NOT_AUTHORISED: 'LocusUserNotAuthorised',\n CLOUDBERRY_UNAVAILABLE: 'CloudberryUnavailable',\n ROOM_TOO_LARGE_FREE_ACCOUNT: 'RoomTooLarge_FreeAccount',\n MEETING_INACTIVE: 'MeetingInactive',\n MEETING_LOCKED: 'MeetingLocked',\n MEETING_TERMINATING: 'MeetingTerminating',\n MODERATOR_PIN_OR_GUEST_REQUIRED: 'Moderator_Pin_Or_Guest_Required',\n MODERATOR_PIN_OR_GUEST_PIN_REQUIRED: 'Moderator_Pin_Or_Guest_PIN_Required',\n MODERATOR_REQUIRED: 'Moderator_Required',\n USER_NOT_MEMBER_OF_ROOM: 'UserNotMemberOfRoom',\n NEW_LOCUS_ERROR: 'NewLocusError',\n NET_WORK_UNAVAILABLE: 'NetworkUnavailable',\n MEETING_UNAVAILABLE: 'MeetingUnavailable',\n MEETING_ID_INVALID: 'MeetingIDInvalid',\n MEETING_SITE_INVALID: 'MeetingSiteInvalid',\n LOCUS_INVALID_JOINTIME: 'LocusInvalidJoinTime',\n LOBBY_EXPIRED: 'LobbyExpired',\n MEDIA_CONNECTION_LOST_PAIRED: 'MediaConnectionLostPaired',\n PHONE_NUMBER_NOT_A_NUMBER: 'PhoneNumberNotANumber',\n PHONE_NUMBER_TOO_LONG: 'PhoneNumberTooLong',\n INVALID_DIALABLE_KEY: 'InvalidDialableKey',\n ONE_ON_ONE_TO_SELF_NOT_ALLOWED: 'OneOnOneToSelfNotAllowed',\n REMOVED_PARTICIPANT: 'RemovedParticipant',\n MEETING_LINK_NOT_FOUND: 'MeetingLinkNotFound',\n PHONE_NUMBER_TOO_SHORT_AFTER_IDD: 'PhoneNumberTooShortAfterIdd',\n INVALID_INVITEE_ADDRESS: 'InvalidInviteeAddress',\n PMR_USER_ACCOUNT_LOCKED_OUT: 'PMRUserAccountLockedOut',\n GUEST_FORBIDDEN: 'GuestForbidden',\n PMR_ACCOUNT_SUSPENDED: 'PMRAccountSuspended',\n EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE: 'EmptyPhoneNumberOrCountryCode',\n CONVERSATION_NOT_FOUND: 'ConversationNotFound',\n SIP_CALLEE_BUSY: 'SIPCalleeBusy',\n SIP_CALLEE_NOT_FOUND: 'SIPCalleeNotFound',\n START_RECORDING_FAILED: 'StartRecordingFailed',\n RECORDING_IN_PROGRESS_FAILED: 'RecordingInProgressFailed',\n};\n\nconst errorCategory = {\n SIGNALING: 'signaling',\n MEDIA: 'media',\n OTHER: 'other',\n EXPECTED: 'expected',\n};\n\nconst errorFailureType = {\n CALL_INITIATION_FAILURE: 'CallInitiationFailure',\n MEDIA_CONNECTION_FAILURE: 'MediaConnectionFailure',\n EXPECTED_FAILURE: 'ExpectedFailure',\n ACCESS_RIGHTS: 'AccessRights',\n};\n\nexport const eventType = {\n // media quality events every 60 seconds\n MEDIA_QUALITY: 'client.mediaquality.event',\n CALL_INITIATED: 'client.call.initiated',\n MERCURY_CONNECTION_LOST: 'client.mercury.connection.lost',\n MERCURY_CONNECTION_RESTORED: 'client.mercury.connection.restored',\n MOVE_MEDIA: 'client.call.move-media',\n LOCAL_SDP_GENERATED: 'client.media-engine.local-sdp-generated',\n REMOTE_SDP_RECEIVED: 'client.media-engine.remote-sdp-received',\n LOCUS_JOIN_REQUEST: 'client.locus.join.request',\n LOCUS_JOIN_RESPONSE: 'client.locus.join.response',\n ALERT_DISPLAYED: 'client.alert.displayed',\n // when ICE negotiation starts\n ICE_START: 'client.ice.start',\n ICE_END: 'client.ice.end',\n ICE_DISCONNECT: 'client.ice.disconnect',\n // Fired when the media engine reports receiving a new media stream. Media events MUST have the mediaType property.\n RECEIVING_MEDIA_START: 'client.media.rx.start',\n // Fired when the media engine reports the end of receiving a media stream.\n // Media events MUST have the mediaType property.\n RECEIVING_MEDIA_STOP: 'client.media.rx.stop',\n // Fired when the media engine reports sending a new media stream. Media events MUST have the mediaType property.\n SENDING_MEDIA_START: 'client.media.tx.start',\n // Fired when the media engine reports it stopped sending a media stream.\n // Media events MUST have the mediaType property.\n SENDING_MEDIA_STOP: 'client.media.tx.stop',\n MEDIA_RENDER_START: 'client.media.render.start',\n MEDIA_RENDER_STOP: 'client.media.render.stop',\n // static media event when outside of the normal scenario\n // call-analyzer assumes that a client is capable of receiving audio, video, and share\n // fired on change, or at beginning of a call\n // every media type is required, so must be indicated with boolean\n MEDIA_CAPABILITIES: 'client.media.capabilities',\n // Sent when the client notices that a media session has been lost\n MEDIA_RECONNECTING: 'client.media.reconnecting',\n // Sent when the client recovers a media session that was lost\n MEDIA_RECOVERED: 'client.media.recovered',\n CALL_ABORTED: 'client.call.aborted',\n // Fired when the \"please enter your PIN\" or similar prompt is displayed\n // to the user, to authenticate them into the meeting\n PIN_PROMPT: 'client.pin.prompt',\n // Fired when PIN entry has been completed\n PIN_COLLECTED: 'client.pin.collected',\n // Fired when the client displays the native lobby\n LOBBY_ENTERED: 'client.lobby.entered',\n // Fired when the client leaves the native lobby\n LOBBY_EXITED: 'client.lobby.exited',\n // Fired when the user of the client starts a share (e.g. click 'Share' button).\n // This should be sent from all clients that support sending a share.\n SHARE_INITIATED: 'client.share.initiated',\n // Fired when the user stops sharing (usually when they click the 'Stop' button for share)\n SHARE_STOPPED: 'client.share.stopped',\n // When the client receives a successful response from locus indicating that it has the floor for content sharing.\n LOCAL_SHARE_FLOOR_GRANTED: 'client.share.floor-granted.local',\n // Fired when the client changes its local UI/layout to a content sharing view,\n // because it is expecting to display share media.\n SHARE_LAYOUT_DISPLAYED: 'client.share.layout.displayed',\n // Fired when the user of the client starts a whiteboard share (e.g. click 'Share Live' button).\n WHITEBOARD_SHARE_INITIATED: 'client.whiteboard.share.initiated',\n // Fired when the meeting floor is released for whiteboard share\n WHITEBOARD_SHARE_STOPPED: 'client.whiteboard.share.stopped',\n // When the client receives a successful response from locus indicating that it has the floor for whiteboard sharing.\n WHITEBOARD_SHARE_FLOOR_GRANTED: 'client.whiteboard.share.floor-granted',\n MUTED: 'client.muted',\n UNMUTED: 'client.unmuted',\n LEAVE: 'client.call.leave',\n REMOTE_ENDED: 'client.call.remote-ended',\n REMOTE_STARTED: 'client.call.remote-started',\n MEDIA_REQUEST: 'client.locus.media.request',\n MEDIA_RESPONSE: 'client.locus.media.response',\n PSTN_AUDIO_ATTEMPT_START: 'client.pstnaudio.attempt.start',\n PSTN_AUDIO_ATTEMPT_FINISH: 'client.pstnaudio.attempt.finish',\n PSTN_AUDIO_ATTEMPT_SKIP: 'client.pstnaudio.attempt.skip',\n};\n\nexport const error = {\n name: {\n MEDIA_ENGINE: 'media-engine',\n ICE_FAILED: 'ice.failed',\n LOCUS_RESPONSE: 'locus.response',\n LOCUS_LEAVE: 'locus.leave',\n OTHER: 'other',\n },\n\n notFatalErrorList: [3003, 3004, 4004, 4005, 4006, 4015],\n errors: {\n // https://sqbu-github.cisco.com/WebExSquared/event-dictionary/wiki/Error-codes-for-metric-events\n // [errorDescription, errorFailureType, errorCategory]\n 1000: [\n errorDescription.UNKNOWN_CALL_FAILURE,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 1001: [\n errorDescription.LOCUS_RATE_LIMITED_INCOMING,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 1002: [\n errorDescription.LOCUS_RATE_LIMITED_OUTGOING,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 1003: [\n errorDescription.LOCUS_UNAVAILABLE,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 1004: [\n errorDescription.LOCUS_CONFLICT,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 1005: [\n errorDescription.TIMEOUT,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 1006: [\n errorDescription.LOCUS_INVALID_SEQUENCE_HASH,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 1007: [\n errorDescription.UPDATE_MEDIA_FAILED,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 2001: [\n errorDescription.FAILED_TO_CONNECT_MEDIA,\n errorFailureType.MEDIA_CONNECTION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 2002: [\n errorDescription.MEDIA_ENGINE_LOST,\n errorFailureType.MEDIA_CONNECTION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 2003: [\n errorDescription.MEDIA_CONNECTION_LOST,\n errorFailureType.MEDIA_CONNECTION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 2004: [\n errorDescription.ICE_FAILURE,\n errorFailureType.MEDIA_CONNECTION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 2005: [\n errorDescription.MEDIA_ENGINE_HANG,\n errorFailureType.MEDIA_CONNECTION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 2006: [\n errorDescription.ICE_SERVER_REJECTED,\n errorFailureType.MEDIA_CONNECTION_FAILURE,\n errorCategory.SIGNALING,\n ],\n 3001: [errorDescription.CALL_FULL, errorFailureType.EXPECTED_FAILURE, errorCategory.EXPECTED],\n 3002: [\n errorDescription.ROOM_TOO_LARGE,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 3004: [\n errorDescription.GUEST_ALREADY_ADDED,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 3005: [\n errorDescription.LOCUS_USER_NOT_AUTHORISED,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 3006: [\n errorDescription.CLOUDBERRY_UNAVAILABLE,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 3007: [\n errorDescription.ROOM_TOO_LARGE_FREE_ACCOUNT,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4001: [\n errorDescription.MEETING_INACTIVE,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4002: [\n errorDescription.MEETING_LOCKED,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4003: [\n errorDescription.MEETING_TERMINATING,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4004: [\n errorDescription.MODERATOR_PIN_OR_GUEST_REQUIRED,\n errorFailureType.ACCESS_RIGHTS,\n errorCategory.EXPECTED,\n ],\n 4005: [\n errorDescription.MODERATOR_PIN_OR_GUEST_PIN_REQUIRED,\n errorFailureType.ACCESS_RIGHTS,\n errorCategory.EXPECTED,\n ],\n 4006: [\n errorDescription.MODERATOR_REQUIRED,\n errorFailureType.ACCESS_RIGHTS,\n errorCategory.EXPECTED,\n ],\n 4007: [\n errorDescription.USER_NOT_MEMBER_OF_ROOM,\n errorFailureType.ACCESS_RIGHTS,\n errorCategory.EXPECTED,\n ],\n 4008: [\n errorDescription.NEW_LOCUS_ERROR,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4009: [\n errorDescription.NET_WORK_UNAVAILABLE,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4010: [\n errorDescription.MEETING_UNAVAILABLE,\n errorFailureType.CALL_INITIATION_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4011: [\n errorDescription.MEETING_ID_INVALID,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4012: [\n errorDescription.MEETING_SITE_INVALID,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4013: [\n errorDescription.LOCUS_INVALID_JOINTIME,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4014: [\n errorDescription.LOBBY_EXPIRED,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4015: [\n errorDescription.MEDIA_CONNECTION_LOST_PAIRED,\n errorFailureType.MEDIA_CONNECTION_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4016: [\n errorDescription.PHONE_NUMBER_NOT_A_NUMBER,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4017: [\n errorDescription.PHONE_NUMBER_TOO_LONG,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4018: [\n errorDescription.INVALID_DIALABLE_KEY,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4019: [\n errorDescription.ONE_ON_ONE_TO_SELF_NOT_ALLOWED,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4020: [\n errorDescription.REMOVED_PARTICIPANT,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4021: [\n errorDescription.MEETING_LINK_NOT_FOUND,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4022: [\n errorDescription.PHONE_NUMBER_TOO_SHORT_AFTER_IDD,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4023: [\n errorDescription.INVALID_INVITEE_ADDRESS,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4024: [\n errorDescription.PMR_USER_ACCOUNT_LOCKED_OUT,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4025: [\n errorDescription.GUEST_FORBIDDEN,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4026: [\n errorDescription.PMR_ACCOUNT_SUSPENDED,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4027: [\n errorDescription.EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4028: [\n errorDescription.CONVERSATION_NOT_FOUND,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4029: [\n errorDescription.START_RECORDING_FAILED,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 4030: [\n errorDescription.RECORDING_IN_PROGRESS_FAILED,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 5000: [\n errorDescription.SIP_CALLEE_BUSY,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n 5001: [\n errorDescription.SIP_CALLEE_NOT_FOUND,\n errorFailureType.EXPECTED_FAILURE,\n errorCategory.EXPECTED,\n ],\n },\n};\n\nexport const trigger = {\n USER_INTERACTION: 'user-interaction',\n MERCURY_EVENT: 'mercury-event',\n LOCI_UPDATE: 'loci-update',\n MEDIA_ENGINE_EVENT: 'media-engine-event',\n TIMEOUT: 'timeout',\n SIGNALING: 'signaling',\n OTHER: 'other',\n};\n\nexport const pstnAudioType = {\n DIAL_IN: 'dial-in',\n DIAL_OUT: 'dial-out',\n};\n\nexport const displayLocation = {\n TOAST: 'toast',\n ROOM_LIST: 'room-list',\n CALL_PANE: 'call-pane',\n CALL_VIEW: 'call-view',\n OTHER: 'other',\n};\n\nexport const mediaType = {\n AUDIO: 'audio',\n VIDEO: 'video',\n SHARE: 'share',\n WHITEBOARD: 'whiteboard',\n};\n\nexport const reconnection = {\n RECOVERED_BY_NEW: 'new', // always set to new due to /media request, no retries with ice restart\n RECOVERED_BY_RETRY: 'retry',\n};\n\nexport const errorCodes = {\n // ordered by error code values\n USER_CREATE_FAILED: 1400006,\n USER_ALREADY_PARTICIPANT: 1403001,\n CONVO_ALREADY_EXISTS: 1403010,\n ALREADY_ANNOUNCEMENT_SPACE: 1403014,\n NOT_ANNOUNCEMENT_SPACE: 1403015,\n USER_NOT_MODERATOR_IN_ANNOUNCEMENT_SPACE: 1403016,\n TEMP_ID_ALREADY_EXISTS: 1409001,\n PARENT_ACTIVITY_ID_NOT_FOUND_OR_INVALID: 14000015,\n};\nexport const statusCodes = {\n // ordered by status codes\n NETWORK_OR_CORS: 0,\n BAD_REQUEST: 400,\n FORBIDDEN: 403,\n NOT_FOUND: 404,\n CONFLICT: 409,\n};\n\nexport const errorObjects = {\n category: {\n media: 'media',\n expected: 'expected',\n },\n name: {\n mediaEngine: 'media-engine',\n },\n};\n\nexport const UNKNOWN = 'unknown';\n\nexport const CLIENT_NAME = 'webex-js-sdk';\nexport const PLATFORM = 'Web';\n"],"mappings":"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"}
@@ -15,6 +15,7 @@ var _util = _interopRequireDefault(require("util"));
15
15
  var _uuid = _interopRequireDefault(require("uuid"));
16
16
  var _window = _interopRequireDefault(require("global/window"));
17
17
  var _ipAnonymize = _interopRequireDefault(require("ip-anonymize"));
18
+ var _internalPluginMetrics = require("@webex/internal-plugin-metrics");
18
19
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
19
20
  var _constants = require("../constants");
20
21
  var _browserDetection = _interopRequireDefault(require("../common/browser-detection"));
@@ -23,15 +24,6 @@ var _config = require("./config");
23
24
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
24
25
  */
25
26
 
26
- var OSMap = {
27
- // @ts-ignore
28
- 'Chrome OS': _config.OS_NAME.chrome,
29
- macOS: _config.OS_NAME.MAC,
30
- Windows: _config.OS_NAME.WINDOWS,
31
- iOS: _config.OS_NAME.IOS,
32
- Android: _config.OS_NAME.ANDROID,
33
- Linux: _config.OS_NAME.LINUX
34
- };
35
27
  var _BrowserDetection = (0, _browserDetection.default)(),
36
28
  getOSName = _BrowserDetection.getOSName,
37
29
  getOSVersion = _BrowserDetection.getOSVersion,
@@ -213,7 +205,7 @@ var Metrics = /*#__PURE__*/function () {
213
205
  localNetworkPrefix: anonymizeIPAddress((_this$webex$meetings$ = this.webex.meetings.geoHintInfo) === null || _this$webex$meetings$ === void 0 ? void 0 : _this$webex$meetings$.clientAddress),
214
206
  osVersion: getOSVersion() || 'unknown',
215
207
  subClientType: options.subClientType,
216
- os: this.getOsName(),
208
+ os: (0, _internalPluginMetrics.getOSNameInternal)(),
217
209
  browser: getBrowserName(),
218
210
  browserVersion: getBrowserVersion()
219
211
  }
@@ -265,20 +257,6 @@ var Metrics = /*#__PURE__*/function () {
265
257
  return payload;
266
258
  }
267
259
 
268
- /**
269
- * returns metrics friendly OS versions
270
- * @param {String} osName Os name
271
- * @returns {String}
272
- * @private
273
- * @memberof Metrics
274
- */
275
- }, {
276
- key: "getOsName",
277
- value: function getOsName() {
278
- var _OSMap$getOSName;
279
- return (_OSMap$getOSName = OSMap[getOSName()]) !== null && _OSMap$getOSName !== void 0 ? _OSMap$getOSName : _config.OS_NAME.OTHERS;
280
- }
281
-
282
260
  /**
283
261
  * get the payload specific for a media quality event through call analyzer
284
262
  * @param {String} eventType the event name
@@ -317,7 +295,7 @@ var Metrics = /*#__PURE__*/function () {
317
295
  // TODO: Only clientType: 'TEAMS_CLIENT' is whitelisted
318
296
  clientVersion: "".concat(_config.CLIENT_NAME, "/").concat(this.webex.version),
319
297
  localNetworkPrefix: anonymizeIPAddress((_this$webex$meetings$3 = this.webex.meetings.geoHintInfo) === null || _this$webex$meetings$3 === void 0 ? void 0 : _this$webex$meetings$3.clientAddress),
320
- os: this.getOsName(),
298
+ os: (0, _internalPluginMetrics.getOSNameInternal)(),
321
299
  osVersion: getOSVersion() || _config.UNKNOWN,
322
300
  subClientType: options.subClientType,
323
301
  browser: getBrowserName(),
@@ -1 +1 @@
1
- {"version":3,"names":["OSMap","OS_NAME","chrome","macOS","MAC","Windows","WINDOWS","iOS","IOS","Android","ANDROID","Linux","LINUX","BrowserDetection","getOSName","getOSVersion","getBrowserName","getBrowserVersion","anonymizeIPAddress","localIp","anonymize","triggerTimers","event","meeting","data","eventType","CALL_INITIATED","setStartCallInitiateJoinReq","LOCUS_JOIN_REQUEST","setEndCallInitiateJoinReq","setStartJoinReqResp","LOCUS_JOIN_RESPONSE","setEndJoinReqResp","setStartSetupDelay","mediaType","AUDIO","VIDEO","setStartSendingMediaDelay","RECEIVING_MEDIA_START","setEndSetupDelay","SENDING_MEDIA_START","setEndSendingMediaDelay","LOCAL_SDP_GENERATED","setStartLocalSDPGenRemoteSDPRecvDelay","REMOTE_SDP_RECEIVED","setEndLocalSDPGenRemoteSDPRecvDelay","Metrics","instance","_events","meetingCollection","keys","webex","options","meetingId","indexOf","LoggerProxy","logger","error","get","callEvents","MEDIA_QUALITY","sendMediaQualityAnalyzerMetrics","push","sendCallAnalyzerMetrics","info","identifiers","payload","eventId","uuid","v4","version","origin","name","networkType","userAgent","userAgentToString","clientInfo","clientType","clientVersion","CLIENT_NAME","localNetworkPrefix","meetings","geoHintInfo","clientAddress","osVersion","subClientType","os","getOsName","browser","browserVersion","originTime","triggered","Date","toISOString","senderCountryCode","countryCode","canProceed","eventData","webClientDomain","window","location","hostname","Object","prototype","hasOwnProperty","call","errors","trigger","pstnAudioType","mediaCapabilities","recoveredBy","joinTimes","isRoapCallEnabled","OTHERS","audioSetupDelay","videoSetupDelay","UNKNOWN","intervals","intervalData","sourceMetadata","applicationSoftwareType","applicationSoftwareVersion","mediaEngineSoftwareType","mediaEngineSoftwareVersion","startTime","err","showToUser","errorCode","statusCode","body","ERROR_CODE","MEETING_ERRORS","FREE_USER_MAX_PARTICIPANTS_EXCEEDED","PAID_USER_MAX_PARTICIPANTS_EXCEEDED","SERVICE_MAX_PARTICIPANTS_EXCEEDED","INACTIVE","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","JOIN_RESTRICTED_USER","GET_RESTRICTED_USER","CREATE_MEDIA_RESTRICTED_USER","JOIN_RESTRICTED_USER_NOT_IN_ROOM","MEETING_NOT_FOUND","NOT_WEBEX_SITE","INVALID_JOIN_TIME","PHONE_NUMBER_NOT_A_NUMBER","PHONE_NUMBER_TOO_LONG","INVALID_DIALABLE_KEY","ONE_ON_ONE_TO_SELF_NOT_ALLOWED","REMOVED_PARTICIPANT","MEETING_LINK_NOT_FOUND","PHONE_NUMBER_TOO_SHORT_AFTER_IDD","INVALID_INVITEE_ADDRESS","PMR_ACCOUNT_LOCKED","RESOURCE_GUEST_FORBIDDEN","PMR_ACCOUNT_SUSPENDED","EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE","INVALID_SINCE_OR_SEQUENCE_HASH_IN_REQUEST","CONVERSATION_NOT_FOUND","RECORDING_CONTROL_NOT_SUPPORTED","RECORDING_NOT_STARTED","RECORDING_NOT_ENABLED","generateErrorPayload","LOCUS_RESPONSE","shownToUser","errorPayload","category","errorDescription","fatal","notFatalErrorList","OTHER","errorData","httpCode","userAgentOption","browserInfo","util","format","metrics","clientName","toLowerCase","split","osInfo","process","env","NODE_ENV","metricName","metricFields","metricTags","internal","submitClientMetrics","type","config","fields","tags"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\nimport util from 'util';\n\nimport {includes} from 'lodash';\nimport uuid from 'uuid';\nimport window from 'global/window';\nimport anonymize from 'ip-anonymize';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {MEETING_ERRORS} from '../constants';\nimport BrowserDetection from '../common/browser-detection';\n\nimport {\n error,\n eventType,\n errorCodes as ERROR_CODE,\n OS_NAME,\n UNKNOWN,\n CLIENT_NAME,\n mediaType,\n} from './config';\n\nconst OSMap = {\n // @ts-ignore\n 'Chrome OS': OS_NAME.chrome,\n macOS: OS_NAME.MAC,\n Windows: OS_NAME.WINDOWS,\n iOS: OS_NAME.IOS,\n Android: OS_NAME.ANDROID,\n Linux: OS_NAME.LINUX,\n};\n\nconst {getOSName, getOSVersion, getBrowserName, getBrowserVersion} = BrowserDetection();\n\n// Apply a CIDR /28 format to the IPV4 and /96 to the IPV6 addresses\n// For reference : https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing\nconst anonymizeIPAddress = (localIp) => anonymize(localIp, 28, 96);\n\nconst triggerTimers = ({event, meeting, data}) => {\n switch (event) {\n case eventType.CALL_INITIATED:\n meeting.setStartCallInitiateJoinReq();\n break;\n case eventType.LOCUS_JOIN_REQUEST:\n meeting.setEndCallInitiateJoinReq();\n meeting.setStartJoinReqResp();\n break;\n case eventType.LOCUS_JOIN_RESPONSE:\n meeting.setEndJoinReqResp();\n meeting.setStartSetupDelay(mediaType.AUDIO);\n meeting.setStartSetupDelay(mediaType.VIDEO);\n meeting.setStartSendingMediaDelay(mediaType.AUDIO);\n meeting.setStartSendingMediaDelay(mediaType.VIDEO);\n break;\n case eventType.RECEIVING_MEDIA_START:\n meeting.setEndSetupDelay(data.mediaType);\n break;\n case eventType.SENDING_MEDIA_START:\n meeting.setEndSendingMediaDelay(data.mediaType);\n break;\n case eventType.LOCAL_SDP_GENERATED:\n meeting.setStartLocalSDPGenRemoteSDPRecvDelay();\n break;\n case eventType.REMOTE_SDP_RECEIVED:\n meeting.setEndLocalSDPGenRemoteSDPRecvDelay();\n break;\n default:\n break;\n }\n};\n\n/**\n * @description Metrics handles all the call metrics events\n * @export\n * @class Metrics\n */\nclass Metrics {\n static instance: Metrics;\n\n _events: any;\n keys: any;\n meetingCollection: any;\n webex: any;\n\n /**\n * Create Metrics Object\n * @constructor\n * @public\n * @memberof Meetings\n */\n constructor() {\n if (!Metrics.instance) {\n /**\n * @instance\n * @type {Array}\n * @private\n * @memberof Metrics\n */\n this._events = [];\n /**\n * @instance\n * @type {MeetingCollection}\n * @private\n * @memberof Metrics\n */\n this.meetingCollection = null;\n /**\n * @instance\n * @type {MeetingCollection}\n * @private\n * @memberof Metrics\n */\n this.keys = Object.values(eventType);\n /**\n * @instance\n * @type {Metrics}\n * @private\n * @memberof Metrics\n */\n Metrics.instance = this;\n }\n\n // eslint-disable-next-line no-constructor-return\n return Metrics.instance;\n }\n\n /**\n * Initializes the Metrics singleton with a meeting Collection.\n *\n * @param {Object} meetingCollection meetings object\n * @param {Object} webex webex SDK object\n *\n * @returns {void}\n */\n initialSetup(meetingCollection: object, webex: object) {\n this.meetingCollection = meetingCollection;\n this.webex = webex;\n }\n\n /**\n * poste Meeting event metrics\n * @param {object} options {meetingId/meeting} as a json object\n * @param {Meeting} options.meeting Meeting object\n * @param {String} options.meetingId\n * @param {object} options.data\n * @param {object} options.event\n * @returns {object} null\n */\n postEvent(options: {meeting?: any; meetingId?: string; data?: object; event?: any} | any) {\n const {meetingId, data = {}, event} = options;\n let {meeting} = options;\n\n if (this.keys.indexOf(event) === -1) {\n LoggerProxy.logger.error(\n `Metrics:index#postEvent --> Event ${event} doesn't exist in dictionary`\n );\n }\n\n if (!meeting && meetingId) {\n meeting = this.meetingCollection.get(meetingId);\n options.meeting = meeting;\n }\n\n if (meeting) {\n triggerTimers(options);\n\n if (!meeting.callEvents) {\n meeting.callEvents = [];\n }\n if (event === eventType.MEDIA_QUALITY) {\n data.event = event;\n meeting.sendMediaQualityAnalyzerMetrics(data);\n } else {\n meeting.callEvents.push(event);\n data.event = event;\n meeting.sendCallAnalyzerMetrics(data);\n }\n } else {\n LoggerProxy.logger.info(\n `Metrics:index#postEvent --> Event received for meetingId:${meetingId}, but meeting not found in collection.`\n );\n }\n }\n\n /**\n * Docs for Call analyzer metrics\n * https://sqbu-github.cisco.com/WebExSquared/call-analyzer/wiki\n * https://sqbu-github.cisco.com/WebExSquared/event-dictionary/blob/master/diagnostic-events.raml\n */\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n initPayload(eventType, identifiers, options) {\n const payload: any = {\n eventId: uuid.v4(),\n version: 1,\n origin: {\n name: 'endpoint',\n networkType: 'unknown',\n userAgent: this.userAgentToString(),\n clientInfo: {\n clientType: options.clientType,\n clientVersion: `${CLIENT_NAME}/${this.webex.version}`,\n localNetworkPrefix: anonymizeIPAddress(this.webex.meetings.geoHintInfo?.clientAddress),\n osVersion: getOSVersion() || 'unknown',\n subClientType: options.subClientType,\n os: this.getOsName(),\n browser: getBrowserName(),\n browserVersion: getBrowserVersion(),\n },\n },\n originTime: {\n triggered: new Date().toISOString(),\n },\n senderCountryCode: this.webex.meetings.geoHintInfo?.countryCode,\n event: {\n name: eventType,\n canProceed: true,\n identifiers,\n eventData: {webClientDomain: window.location.hostname},\n },\n };\n\n // TODO: more options should be checked and some of them should be mandatory in certain conditions\n if (options) {\n if (Object.prototype.hasOwnProperty.call(options, 'canProceed')) {\n payload.event.canProceed = options.canProceed;\n }\n if (options.errors) {\n payload.event.errors = options.errors;\n }\n if (options.mediaType) {\n payload.event.mediaType = options.mediaType;\n }\n if (options.trigger) {\n payload.event.trigger = options.trigger;\n }\n if (options.pstnAudioType) {\n payload.event.pstnAudioType = options.pstnAudioType;\n }\n if (options.mediaCapabilities) {\n payload.event.mediaCapabilities = options.mediaCapabilities;\n }\n if (options.recoveredBy) {\n payload.event.recoveredBy = options.recoveredBy;\n }\n if (options.joinTimes) {\n payload.event.joinTimes = options.joinTimes;\n }\n if (options.isRoapCallEnabled) {\n payload.event.isRoapCallEnabled = options.isRoapCallEnabled;\n }\n }\n\n return payload;\n }\n\n /**\n * returns metrics friendly OS versions\n * @param {String} osName Os name\n * @returns {String}\n * @private\n * @memberof Metrics\n */\n private getOsName() {\n return OSMap[getOSName()] ?? OS_NAME.OTHERS;\n }\n\n /**\n * get the payload specific for a media quality event through call analyzer\n * @param {String} eventType the event name\n * @param {Object} identifiers contains the identifiers needed for CA\n * @param {String} identifiers.correlationId\n * @param {String} identifiers.locusUrl\n * @param {String} identifiers.locusId\n * @param {Object} options\n * @param {Object} options.intervalData\n * @param {String} options.clientType\n * @returns {Object}\n * @public\n * @memberof Metrics\n */\n public initMediaPayload(\n // eslint-disable-next-line @typescript-eslint/no-shadow\n eventType: string,\n identifiers: {\n correlationId: string;\n locusUrl: string;\n locusId: string;\n },\n options:\n | {\n intervalData: object;\n clientType: string;\n }\n | any = {}\n ) {\n const {audioSetupDelay, videoSetupDelay, joinTimes} = options;\n\n const payload = {\n eventId: uuid.v4(),\n version: 1,\n origin: {\n audioSetupDelay,\n videoSetupDelay,\n name: 'endpoint',\n networkType: options.networkType || UNKNOWN,\n userAgent: this.userAgentToString(),\n clientInfo: {\n clientType: options.clientType, // TODO: Only clientType: 'TEAMS_CLIENT' is whitelisted\n clientVersion: `${CLIENT_NAME}/${this.webex.version}`,\n localNetworkPrefix: anonymizeIPAddress(this.webex.meetings.geoHintInfo?.clientAddress),\n os: this.getOsName(),\n osVersion: getOSVersion() || UNKNOWN,\n subClientType: options.subClientType,\n browser: getBrowserName(),\n browserVersion: getBrowserVersion(),\n },\n },\n originTime: {\n triggered: new Date().toISOString(),\n },\n senderCountryCode: this.webex.meetings.geoHintInfo?.countryCode,\n event: {\n name: eventType,\n canProceed: true,\n identifiers,\n intervals: [options.intervalData],\n joinTimes,\n eventData: {\n webClientDomain: window.location.hostname,\n },\n sourceMetadata: {\n applicationSoftwareType: CLIENT_NAME,\n applicationSoftwareVersion: this.webex.version,\n mediaEngineSoftwareType: getBrowserName() || 'browser',\n mediaEngineSoftwareVersion: getOSVersion() || UNKNOWN,\n startTime: new Date().toISOString(),\n },\n },\n };\n\n return payload;\n }\n\n /**\n * This function Parses a Locus error and returns a diagnostic event payload.\n * It should keep updating from:\n * https://sqbu-github.cisco.com/WebExSquared/spark-client-framework/blob/master/spark-client-framework/Adapters/TelephonyAdapter/TelephonyAdapter.cpp#L920\n *\n * @param {Object} err the error Object from Locus response\n * @param {boolean} showToUser true if a toast is shown to user\n * @returns {{showToUser: boolean, category: string, errorDescription: string,\n * errorCode: number, errorData: *, fatal: boolean, name: string}}\n */\n parseLocusError(err: any, showToUser: boolean) {\n let errorCode;\n\n if (err && err.statusCode && err.statusCode >= 500) {\n errorCode = 1003;\n } else if (err && err.body && err.body.errorCode) {\n // locus error codes: https://sqbu-github.cisco.com/WebExSquared/locus/blob/master/server/src/main/resources/locus-error-codes.properties\n switch (ERROR_CODE[err.body.errorCode]) {\n case MEETING_ERRORS.FREE_USER_MAX_PARTICIPANTS_EXCEEDED:\n errorCode = 3007;\n break;\n case MEETING_ERRORS.PAID_USER_MAX_PARTICIPANTS_EXCEEDED:\n case MEETING_ERRORS.SERVICE_MAX_PARTICIPANTS_EXCEEDED:\n errorCode = 3002;\n break;\n case MEETING_ERRORS.INACTIVE:\n errorCode = 4001;\n break;\n case MEETING_ERRORS.EXCEEDED_MAX_JOINED_PARTICIPANTS:\n case MEETING_ERRORS.EXCEEDED_SERVICE_MAX_PARTICIPANTS:\n errorCode = 3001;\n break;\n case MEETING_ERRORS.MEETING_IS_LOCKED:\n errorCode = 4002;\n break;\n case MEETING_ERRORS.MEETING_IS_TERMINATING:\n errorCode = 4003;\n break;\n case MEETING_ERRORS.MEETING_REQUIRE_MODERATOR_PIN_INTENT:\n errorCode = 4004;\n break;\n case MEETING_ERRORS.MEETING_REQUIRE_MODERATOR_PIN:\n errorCode = 4005;\n break;\n case MEETING_ERRORS.MEETING_REQUIRE_MODERATOR_ROLE:\n errorCode = 4006;\n break;\n case MEETING_ERRORS.JOIN_RESTRICTED_USER:\n case MEETING_ERRORS.GET_RESTRICTED_USER:\n case MEETING_ERRORS.CREATE_MEDIA_RESTRICTED_USER:\n errorCode = 3005;\n break;\n case MEETING_ERRORS.JOIN_RESTRICTED_USER_NOT_IN_ROOM:\n errorCode = 4007;\n break;\n case MEETING_ERRORS.MEETING_NOT_FOUND:\n errorCode = 4011;\n break;\n case MEETING_ERRORS.NOT_WEBEX_SITE:\n errorCode = 4012;\n break;\n case MEETING_ERRORS.INVALID_JOIN_TIME:\n errorCode = 4013;\n break;\n case MEETING_ERRORS.PHONE_NUMBER_NOT_A_NUMBER:\n errorCode = 4016;\n break;\n case MEETING_ERRORS.PHONE_NUMBER_TOO_LONG:\n errorCode = 4017;\n break;\n case MEETING_ERRORS.INVALID_DIALABLE_KEY:\n errorCode = 4018;\n break;\n case MEETING_ERRORS.ONE_ON_ONE_TO_SELF_NOT_ALLOWED:\n errorCode = 4019;\n break;\n case MEETING_ERRORS.REMOVED_PARTICIPANT:\n errorCode = 4020;\n break;\n case MEETING_ERRORS.MEETING_LINK_NOT_FOUND:\n errorCode = 4021;\n break;\n case MEETING_ERRORS.PHONE_NUMBER_TOO_SHORT_AFTER_IDD:\n errorCode = 4022;\n break;\n case MEETING_ERRORS.INVALID_INVITEE_ADDRESS:\n errorCode = 4023;\n break;\n case MEETING_ERRORS.PMR_ACCOUNT_LOCKED:\n errorCode = 4024;\n break;\n case MEETING_ERRORS.RESOURCE_GUEST_FORBIDDEN:\n errorCode = 4025;\n break;\n case MEETING_ERRORS.PMR_ACCOUNT_SUSPENDED:\n errorCode = 4026;\n break;\n case MEETING_ERRORS.EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE:\n errorCode = 4027;\n break;\n case MEETING_ERRORS.INVALID_SINCE_OR_SEQUENCE_HASH_IN_REQUEST:\n errorCode = 1006;\n break;\n case MEETING_ERRORS.CONVERSATION_NOT_FOUND:\n errorCode = 4028;\n break;\n case MEETING_ERRORS.RECORDING_CONTROL_NOT_SUPPORTED:\n case MEETING_ERRORS.RECORDING_NOT_STARTED:\n case MEETING_ERRORS.RECORDING_NOT_ENABLED:\n errorCode = 4029;\n break;\n default:\n errorCode = 4008;\n }\n } else {\n errorCode = 4008;\n }\n\n return this.generateErrorPayload(errorCode, showToUser, error.name.LOCUS_RESPONSE, err);\n }\n\n generateErrorPayload(errorCode, shownToUser, name, err) {\n if (error.errors[errorCode]) {\n const errorPayload: any = {\n shownToUser: shownToUser || false,\n category: error.errors[errorCode][2],\n errorDescription: error.errors[errorCode][0],\n errorCode,\n fatal: !includes(error.notFatalErrorList, errorCode),\n name: name || error.name.OTHER,\n };\n\n if (err && err.body) {\n errorPayload.errorData = err.body;\n }\n\n if (err && err.statusCode) {\n errorPayload.httpCode = err.statusCode;\n }\n\n return errorPayload;\n }\n\n return null;\n }\n\n /**\n * Returns a formated string of the user agent.\n *\n * @returns {string} formatted user agent information\n */\n userAgentToString() {\n let userAgentOption;\n let browserInfo;\n const clientInfo = util.format('client=%s', `${this.webex.meetings?.metrics?.clientName}`);\n\n if (\n ['chrome', 'firefox', 'msie', 'msedge', 'safari'].indexOf(getBrowserName().toLowerCase()) !==\n -1\n ) {\n browserInfo = util.format(\n 'browser=%s',\n `${getBrowserName().toLowerCase()}/${getBrowserVersion().split('.')[0]}`\n );\n }\n const osInfo = util.format('os=%s', `${getOSName()}/${getOSVersion().split('.')[0]}`);\n\n if (browserInfo) {\n userAgentOption = `(${browserInfo}`;\n }\n if (osInfo) {\n userAgentOption = userAgentOption\n ? `${userAgentOption}; ${clientInfo}; ${osInfo}`\n : `${clientInfo}; (${osInfo}`;\n }\n if (userAgentOption) {\n userAgentOption += ')';\n\n return util.format(\n 'webex-js-sdk/%s %s',\n `${process.env.NODE_ENV}-${this.webex.version}`,\n userAgentOption\n );\n }\n\n return util.format('webex-js-sdk/%s', `${process.env.NODE_ENV}-${this.webex.version}`);\n }\n\n /**\n * Uploads given metric to the Metrics service as an Behavioral metric.\n * Metadata about the environment such as browser, OS, SDK and their versions\n * are automatically added when the metric is sent.\n *\n * The Metrics service will send an Behavioral metric to InfluxDB for\n * aggregation.\n * See https://confluence-eng-gpk2.cisco.com/conf/display/WBXT/Getting+started+with+Metrics+Service.\n *\n * @param {string} metricName Name of the metric (measurement) to send\n * @param {Object} metricFields Key-valye pairs of data or values about this metric\n * @param {Object} metricTags Key-value pairs of metric metadata\n *\n * @returns {void}\n */\n sendBehavioralMetric(metricName: string, metricFields: object = {}, metricTags: object = {}) {\n this.webex.internal.metrics.submitClientMetrics(metricName, {\n type: this.webex.config.metrics.type,\n fields: metricFields,\n tags: metricTags,\n });\n }\n}\n\n// Export Metrics singleton ---------------------------------------------------\nconst instance = new Metrics();\n\nexport default instance;\n"],"mappings":"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"}
1
+ {"version":3,"names":["BrowserDetection","getOSName","getOSVersion","getBrowserName","getBrowserVersion","anonymizeIPAddress","localIp","anonymize","triggerTimers","event","meeting","data","eventType","CALL_INITIATED","setStartCallInitiateJoinReq","LOCUS_JOIN_REQUEST","setEndCallInitiateJoinReq","setStartJoinReqResp","LOCUS_JOIN_RESPONSE","setEndJoinReqResp","setStartSetupDelay","mediaType","AUDIO","VIDEO","setStartSendingMediaDelay","RECEIVING_MEDIA_START","setEndSetupDelay","SENDING_MEDIA_START","setEndSendingMediaDelay","LOCAL_SDP_GENERATED","setStartLocalSDPGenRemoteSDPRecvDelay","REMOTE_SDP_RECEIVED","setEndLocalSDPGenRemoteSDPRecvDelay","Metrics","instance","_events","meetingCollection","keys","webex","options","meetingId","indexOf","LoggerProxy","logger","error","get","callEvents","MEDIA_QUALITY","sendMediaQualityAnalyzerMetrics","push","sendCallAnalyzerMetrics","info","identifiers","payload","eventId","uuid","v4","version","origin","name","networkType","userAgent","userAgentToString","clientInfo","clientType","clientVersion","CLIENT_NAME","localNetworkPrefix","meetings","geoHintInfo","clientAddress","osVersion","subClientType","os","getOSNameInternal","browser","browserVersion","originTime","triggered","Date","toISOString","senderCountryCode","countryCode","canProceed","eventData","webClientDomain","window","location","hostname","Object","prototype","hasOwnProperty","call","errors","trigger","pstnAudioType","mediaCapabilities","recoveredBy","joinTimes","isRoapCallEnabled","audioSetupDelay","videoSetupDelay","UNKNOWN","intervals","intervalData","sourceMetadata","applicationSoftwareType","applicationSoftwareVersion","mediaEngineSoftwareType","mediaEngineSoftwareVersion","startTime","err","showToUser","errorCode","statusCode","body","ERROR_CODE","MEETING_ERRORS","FREE_USER_MAX_PARTICIPANTS_EXCEEDED","PAID_USER_MAX_PARTICIPANTS_EXCEEDED","SERVICE_MAX_PARTICIPANTS_EXCEEDED","INACTIVE","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","JOIN_RESTRICTED_USER","GET_RESTRICTED_USER","CREATE_MEDIA_RESTRICTED_USER","JOIN_RESTRICTED_USER_NOT_IN_ROOM","MEETING_NOT_FOUND","NOT_WEBEX_SITE","INVALID_JOIN_TIME","PHONE_NUMBER_NOT_A_NUMBER","PHONE_NUMBER_TOO_LONG","INVALID_DIALABLE_KEY","ONE_ON_ONE_TO_SELF_NOT_ALLOWED","REMOVED_PARTICIPANT","MEETING_LINK_NOT_FOUND","PHONE_NUMBER_TOO_SHORT_AFTER_IDD","INVALID_INVITEE_ADDRESS","PMR_ACCOUNT_LOCKED","RESOURCE_GUEST_FORBIDDEN","PMR_ACCOUNT_SUSPENDED","EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE","INVALID_SINCE_OR_SEQUENCE_HASH_IN_REQUEST","CONVERSATION_NOT_FOUND","RECORDING_CONTROL_NOT_SUPPORTED","RECORDING_NOT_STARTED","RECORDING_NOT_ENABLED","generateErrorPayload","LOCUS_RESPONSE","shownToUser","errorPayload","category","errorDescription","fatal","notFatalErrorList","OTHER","errorData","httpCode","userAgentOption","browserInfo","util","format","metrics","clientName","toLowerCase","split","osInfo","process","env","NODE_ENV","metricName","metricFields","metricTags","internal","submitClientMetrics","type","config","fields","tags"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\nimport util from 'util';\n\nimport {includes} from 'lodash';\nimport uuid from 'uuid';\nimport window from 'global/window';\nimport anonymize from 'ip-anonymize';\n\nimport {getOSNameInternal} from '@webex/internal-plugin-metrics';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {MEETING_ERRORS} from '../constants';\nimport BrowserDetection from '../common/browser-detection';\n\nimport {\n error,\n eventType,\n errorCodes as ERROR_CODE,\n UNKNOWN,\n CLIENT_NAME,\n mediaType,\n} from './config';\n\nconst {getOSName, getOSVersion, getBrowserName, getBrowserVersion} = BrowserDetection();\n\n// Apply a CIDR /28 format to the IPV4 and /96 to the IPV6 addresses\n// For reference : https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing\nconst anonymizeIPAddress = (localIp) => anonymize(localIp, 28, 96);\n\nconst triggerTimers = ({event, meeting, data}) => {\n switch (event) {\n case eventType.CALL_INITIATED:\n meeting.setStartCallInitiateJoinReq();\n break;\n case eventType.LOCUS_JOIN_REQUEST:\n meeting.setEndCallInitiateJoinReq();\n meeting.setStartJoinReqResp();\n break;\n case eventType.LOCUS_JOIN_RESPONSE:\n meeting.setEndJoinReqResp();\n meeting.setStartSetupDelay(mediaType.AUDIO);\n meeting.setStartSetupDelay(mediaType.VIDEO);\n meeting.setStartSendingMediaDelay(mediaType.AUDIO);\n meeting.setStartSendingMediaDelay(mediaType.VIDEO);\n break;\n case eventType.RECEIVING_MEDIA_START:\n meeting.setEndSetupDelay(data.mediaType);\n break;\n case eventType.SENDING_MEDIA_START:\n meeting.setEndSendingMediaDelay(data.mediaType);\n break;\n case eventType.LOCAL_SDP_GENERATED:\n meeting.setStartLocalSDPGenRemoteSDPRecvDelay();\n break;\n case eventType.REMOTE_SDP_RECEIVED:\n meeting.setEndLocalSDPGenRemoteSDPRecvDelay();\n break;\n default:\n break;\n }\n};\n\n/**\n * @description Metrics handles all the call metrics events\n * @export\n * @class Metrics\n */\nclass Metrics {\n static instance: Metrics;\n\n _events: any;\n keys: any;\n meetingCollection: any;\n webex: any;\n\n /**\n * Create Metrics Object\n * @constructor\n * @public\n * @memberof Meetings\n */\n constructor() {\n if (!Metrics.instance) {\n /**\n * @instance\n * @type {Array}\n * @private\n * @memberof Metrics\n */\n this._events = [];\n /**\n * @instance\n * @type {MeetingCollection}\n * @private\n * @memberof Metrics\n */\n this.meetingCollection = null;\n /**\n * @instance\n * @type {MeetingCollection}\n * @private\n * @memberof Metrics\n */\n this.keys = Object.values(eventType);\n /**\n * @instance\n * @type {Metrics}\n * @private\n * @memberof Metrics\n */\n Metrics.instance = this;\n }\n\n // eslint-disable-next-line no-constructor-return\n return Metrics.instance;\n }\n\n /**\n * Initializes the Metrics singleton with a meeting Collection.\n *\n * @param {Object} meetingCollection meetings object\n * @param {Object} webex webex SDK object\n *\n * @returns {void}\n */\n initialSetup(meetingCollection: object, webex: object) {\n this.meetingCollection = meetingCollection;\n this.webex = webex;\n }\n\n /**\n * poste Meeting event metrics\n * @param {object} options {meetingId/meeting} as a json object\n * @param {Meeting} options.meeting Meeting object\n * @param {String} options.meetingId\n * @param {object} options.data\n * @param {object} options.event\n * @returns {object} null\n */\n postEvent(options: {meeting?: any; meetingId?: string; data?: object; event?: any} | any) {\n const {meetingId, data = {}, event} = options;\n let {meeting} = options;\n\n if (this.keys.indexOf(event) === -1) {\n LoggerProxy.logger.error(\n `Metrics:index#postEvent --> Event ${event} doesn't exist in dictionary`\n );\n }\n\n if (!meeting && meetingId) {\n meeting = this.meetingCollection.get(meetingId);\n options.meeting = meeting;\n }\n\n if (meeting) {\n triggerTimers(options);\n\n if (!meeting.callEvents) {\n meeting.callEvents = [];\n }\n if (event === eventType.MEDIA_QUALITY) {\n data.event = event;\n meeting.sendMediaQualityAnalyzerMetrics(data);\n } else {\n meeting.callEvents.push(event);\n data.event = event;\n meeting.sendCallAnalyzerMetrics(data);\n }\n } else {\n LoggerProxy.logger.info(\n `Metrics:index#postEvent --> Event received for meetingId:${meetingId}, but meeting not found in collection.`\n );\n }\n }\n\n /**\n * Docs for Call analyzer metrics\n * https://sqbu-github.cisco.com/WebExSquared/call-analyzer/wiki\n * https://sqbu-github.cisco.com/WebExSquared/event-dictionary/blob/master/diagnostic-events.raml\n */\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n initPayload(eventType, identifiers, options) {\n const payload: any = {\n eventId: uuid.v4(),\n version: 1,\n origin: {\n name: 'endpoint',\n networkType: 'unknown',\n userAgent: this.userAgentToString(),\n clientInfo: {\n clientType: options.clientType,\n clientVersion: `${CLIENT_NAME}/${this.webex.version}`,\n localNetworkPrefix: anonymizeIPAddress(this.webex.meetings.geoHintInfo?.clientAddress),\n osVersion: getOSVersion() || 'unknown',\n subClientType: options.subClientType,\n os: getOSNameInternal(),\n browser: getBrowserName(),\n browserVersion: getBrowserVersion(),\n },\n },\n originTime: {\n triggered: new Date().toISOString(),\n },\n senderCountryCode: this.webex.meetings.geoHintInfo?.countryCode,\n event: {\n name: eventType,\n canProceed: true,\n identifiers,\n eventData: {webClientDomain: window.location.hostname},\n },\n };\n\n // TODO: more options should be checked and some of them should be mandatory in certain conditions\n if (options) {\n if (Object.prototype.hasOwnProperty.call(options, 'canProceed')) {\n payload.event.canProceed = options.canProceed;\n }\n if (options.errors) {\n payload.event.errors = options.errors;\n }\n if (options.mediaType) {\n payload.event.mediaType = options.mediaType;\n }\n if (options.trigger) {\n payload.event.trigger = options.trigger;\n }\n if (options.pstnAudioType) {\n payload.event.pstnAudioType = options.pstnAudioType;\n }\n if (options.mediaCapabilities) {\n payload.event.mediaCapabilities = options.mediaCapabilities;\n }\n if (options.recoveredBy) {\n payload.event.recoveredBy = options.recoveredBy;\n }\n if (options.joinTimes) {\n payload.event.joinTimes = options.joinTimes;\n }\n if (options.isRoapCallEnabled) {\n payload.event.isRoapCallEnabled = options.isRoapCallEnabled;\n }\n }\n\n return payload;\n }\n\n /**\n * get the payload specific for a media quality event through call analyzer\n * @param {String} eventType the event name\n * @param {Object} identifiers contains the identifiers needed for CA\n * @param {String} identifiers.correlationId\n * @param {String} identifiers.locusUrl\n * @param {String} identifiers.locusId\n * @param {Object} options\n * @param {Object} options.intervalData\n * @param {String} options.clientType\n * @returns {Object}\n * @public\n * @memberof Metrics\n */\n public initMediaPayload(\n // eslint-disable-next-line @typescript-eslint/no-shadow\n eventType: string,\n identifiers: {\n correlationId: string;\n locusUrl: string;\n locusId: string;\n },\n options:\n | {\n intervalData: object;\n clientType: string;\n }\n | any = {}\n ) {\n const {audioSetupDelay, videoSetupDelay, joinTimes} = options;\n\n const payload = {\n eventId: uuid.v4(),\n version: 1,\n origin: {\n audioSetupDelay,\n videoSetupDelay,\n name: 'endpoint',\n networkType: options.networkType || UNKNOWN,\n userAgent: this.userAgentToString(),\n clientInfo: {\n clientType: options.clientType, // TODO: Only clientType: 'TEAMS_CLIENT' is whitelisted\n clientVersion: `${CLIENT_NAME}/${this.webex.version}`,\n localNetworkPrefix: anonymizeIPAddress(this.webex.meetings.geoHintInfo?.clientAddress),\n os: getOSNameInternal(),\n osVersion: getOSVersion() || UNKNOWN,\n subClientType: options.subClientType,\n browser: getBrowserName(),\n browserVersion: getBrowserVersion(),\n },\n },\n originTime: {\n triggered: new Date().toISOString(),\n },\n senderCountryCode: this.webex.meetings.geoHintInfo?.countryCode,\n event: {\n name: eventType,\n canProceed: true,\n identifiers,\n intervals: [options.intervalData],\n joinTimes,\n eventData: {\n webClientDomain: window.location.hostname,\n },\n sourceMetadata: {\n applicationSoftwareType: CLIENT_NAME,\n applicationSoftwareVersion: this.webex.version,\n mediaEngineSoftwareType: getBrowserName() || 'browser',\n mediaEngineSoftwareVersion: getOSVersion() || UNKNOWN,\n startTime: new Date().toISOString(),\n },\n },\n };\n\n return payload;\n }\n\n /**\n * This function Parses a Locus error and returns a diagnostic event payload.\n * It should keep updating from:\n * https://sqbu-github.cisco.com/WebExSquared/spark-client-framework/blob/master/spark-client-framework/Adapters/TelephonyAdapter/TelephonyAdapter.cpp#L920\n *\n * @param {Object} err the error Object from Locus response\n * @param {boolean} showToUser true if a toast is shown to user\n * @returns {{showToUser: boolean, category: string, errorDescription: string,\n * errorCode: number, errorData: *, fatal: boolean, name: string}}\n */\n parseLocusError(err: any, showToUser: boolean) {\n let errorCode;\n\n if (err && err.statusCode && err.statusCode >= 500) {\n errorCode = 1003;\n } else if (err && err.body && err.body.errorCode) {\n // locus error codes: https://sqbu-github.cisco.com/WebExSquared/locus/blob/master/server/src/main/resources/locus-error-codes.properties\n switch (ERROR_CODE[err.body.errorCode]) {\n case MEETING_ERRORS.FREE_USER_MAX_PARTICIPANTS_EXCEEDED:\n errorCode = 3007;\n break;\n case MEETING_ERRORS.PAID_USER_MAX_PARTICIPANTS_EXCEEDED:\n case MEETING_ERRORS.SERVICE_MAX_PARTICIPANTS_EXCEEDED:\n errorCode = 3002;\n break;\n case MEETING_ERRORS.INACTIVE:\n errorCode = 4001;\n break;\n case MEETING_ERRORS.EXCEEDED_MAX_JOINED_PARTICIPANTS:\n case MEETING_ERRORS.EXCEEDED_SERVICE_MAX_PARTICIPANTS:\n errorCode = 3001;\n break;\n case MEETING_ERRORS.MEETING_IS_LOCKED:\n errorCode = 4002;\n break;\n case MEETING_ERRORS.MEETING_IS_TERMINATING:\n errorCode = 4003;\n break;\n case MEETING_ERRORS.MEETING_REQUIRE_MODERATOR_PIN_INTENT:\n errorCode = 4004;\n break;\n case MEETING_ERRORS.MEETING_REQUIRE_MODERATOR_PIN:\n errorCode = 4005;\n break;\n case MEETING_ERRORS.MEETING_REQUIRE_MODERATOR_ROLE:\n errorCode = 4006;\n break;\n case MEETING_ERRORS.JOIN_RESTRICTED_USER:\n case MEETING_ERRORS.GET_RESTRICTED_USER:\n case MEETING_ERRORS.CREATE_MEDIA_RESTRICTED_USER:\n errorCode = 3005;\n break;\n case MEETING_ERRORS.JOIN_RESTRICTED_USER_NOT_IN_ROOM:\n errorCode = 4007;\n break;\n case MEETING_ERRORS.MEETING_NOT_FOUND:\n errorCode = 4011;\n break;\n case MEETING_ERRORS.NOT_WEBEX_SITE:\n errorCode = 4012;\n break;\n case MEETING_ERRORS.INVALID_JOIN_TIME:\n errorCode = 4013;\n break;\n case MEETING_ERRORS.PHONE_NUMBER_NOT_A_NUMBER:\n errorCode = 4016;\n break;\n case MEETING_ERRORS.PHONE_NUMBER_TOO_LONG:\n errorCode = 4017;\n break;\n case MEETING_ERRORS.INVALID_DIALABLE_KEY:\n errorCode = 4018;\n break;\n case MEETING_ERRORS.ONE_ON_ONE_TO_SELF_NOT_ALLOWED:\n errorCode = 4019;\n break;\n case MEETING_ERRORS.REMOVED_PARTICIPANT:\n errorCode = 4020;\n break;\n case MEETING_ERRORS.MEETING_LINK_NOT_FOUND:\n errorCode = 4021;\n break;\n case MEETING_ERRORS.PHONE_NUMBER_TOO_SHORT_AFTER_IDD:\n errorCode = 4022;\n break;\n case MEETING_ERRORS.INVALID_INVITEE_ADDRESS:\n errorCode = 4023;\n break;\n case MEETING_ERRORS.PMR_ACCOUNT_LOCKED:\n errorCode = 4024;\n break;\n case MEETING_ERRORS.RESOURCE_GUEST_FORBIDDEN:\n errorCode = 4025;\n break;\n case MEETING_ERRORS.PMR_ACCOUNT_SUSPENDED:\n errorCode = 4026;\n break;\n case MEETING_ERRORS.EMPTY_PHONE_NUMBER_OR_COUNTRY_CODE:\n errorCode = 4027;\n break;\n case MEETING_ERRORS.INVALID_SINCE_OR_SEQUENCE_HASH_IN_REQUEST:\n errorCode = 1006;\n break;\n case MEETING_ERRORS.CONVERSATION_NOT_FOUND:\n errorCode = 4028;\n break;\n case MEETING_ERRORS.RECORDING_CONTROL_NOT_SUPPORTED:\n case MEETING_ERRORS.RECORDING_NOT_STARTED:\n case MEETING_ERRORS.RECORDING_NOT_ENABLED:\n errorCode = 4029;\n break;\n default:\n errorCode = 4008;\n }\n } else {\n errorCode = 4008;\n }\n\n return this.generateErrorPayload(errorCode, showToUser, error.name.LOCUS_RESPONSE, err);\n }\n\n generateErrorPayload(errorCode, shownToUser, name, err) {\n if (error.errors[errorCode]) {\n const errorPayload: any = {\n shownToUser: shownToUser || false,\n category: error.errors[errorCode][2],\n errorDescription: error.errors[errorCode][0],\n errorCode,\n fatal: !includes(error.notFatalErrorList, errorCode),\n name: name || error.name.OTHER,\n };\n\n if (err && err.body) {\n errorPayload.errorData = err.body;\n }\n\n if (err && err.statusCode) {\n errorPayload.httpCode = err.statusCode;\n }\n\n return errorPayload;\n }\n\n return null;\n }\n\n /**\n * Returns a formated string of the user agent.\n *\n * @returns {string} formatted user agent information\n */\n userAgentToString() {\n let userAgentOption;\n let browserInfo;\n const clientInfo = util.format('client=%s', `${this.webex.meetings?.metrics?.clientName}`);\n\n if (\n ['chrome', 'firefox', 'msie', 'msedge', 'safari'].indexOf(getBrowserName().toLowerCase()) !==\n -1\n ) {\n browserInfo = util.format(\n 'browser=%s',\n `${getBrowserName().toLowerCase()}/${getBrowserVersion().split('.')[0]}`\n );\n }\n const osInfo = util.format('os=%s', `${getOSName()}/${getOSVersion().split('.')[0]}`);\n\n if (browserInfo) {\n userAgentOption = `(${browserInfo}`;\n }\n if (osInfo) {\n userAgentOption = userAgentOption\n ? `${userAgentOption}; ${clientInfo}; ${osInfo}`\n : `${clientInfo}; (${osInfo}`;\n }\n if (userAgentOption) {\n userAgentOption += ')';\n\n return util.format(\n 'webex-js-sdk/%s %s',\n `${process.env.NODE_ENV}-${this.webex.version}`,\n userAgentOption\n );\n }\n\n return util.format('webex-js-sdk/%s', `${process.env.NODE_ENV}-${this.webex.version}`);\n }\n\n /**\n * Uploads given metric to the Metrics service as an Behavioral metric.\n * Metadata about the environment such as browser, OS, SDK and their versions\n * are automatically added when the metric is sent.\n *\n * The Metrics service will send an Behavioral metric to InfluxDB for\n * aggregation.\n * See https://confluence-eng-gpk2.cisco.com/conf/display/WBXT/Getting+started+with+Metrics+Service.\n *\n * @param {string} metricName Name of the metric (measurement) to send\n * @param {Object} metricFields Key-valye pairs of data or values about this metric\n * @param {Object} metricTags Key-value pairs of metric metadata\n *\n * @returns {void}\n */\n sendBehavioralMetric(metricName: string, metricFields: object = {}, metricTags: object = {}) {\n this.webex.internal.metrics.submitClientMetrics(metricName, {\n type: this.webex.config.metrics.type,\n fields: metricFields,\n tags: metricTags,\n });\n }\n}\n\n// Export Metrics singleton ---------------------------------------------------\nconst instance = new Metrics();\n\nexport default instance;\n"],"mappings":";;;;;;;;;;;;;AAGA;AAGA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAfA;AACA;AACA;;AAsBA,wBAAqE,IAAAA,yBAAgB,GAAE;EAAhFC,SAAS,qBAATA,SAAS;EAAEC,YAAY,qBAAZA,YAAY;EAAEC,cAAc,qBAAdA,cAAc;EAAEC,iBAAiB,qBAAjBA,iBAAiB;;AAEjE;AACA;AACA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkB,CAAIC,OAAO;EAAA,OAAK,IAAAC,oBAAS,EAACD,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC;AAAA;AAElE,IAAME,aAAa,GAAG,SAAhBA,aAAa,OAA+B;EAAA,IAA1BC,KAAK,QAALA,KAAK;IAAEC,OAAO,QAAPA,OAAO;IAAEC,IAAI,QAAJA,IAAI;EAC1C,QAAQF,KAAK;IACX,KAAKG,iBAAS,CAACC,cAAc;MAC3BH,OAAO,CAACI,2BAA2B,EAAE;MACrC;IACF,KAAKF,iBAAS,CAACG,kBAAkB;MAC/BL,OAAO,CAACM,yBAAyB,EAAE;MACnCN,OAAO,CAACO,mBAAmB,EAAE;MAC7B;IACF,KAAKL,iBAAS,CAACM,mBAAmB;MAChCR,OAAO,CAACS,iBAAiB,EAAE;MAC3BT,OAAO,CAACU,kBAAkB,CAACC,iBAAS,CAACC,KAAK,CAAC;MAC3CZ,OAAO,CAACU,kBAAkB,CAACC,iBAAS,CAACE,KAAK,CAAC;MAC3Cb,OAAO,CAACc,yBAAyB,CAACH,iBAAS,CAACC,KAAK,CAAC;MAClDZ,OAAO,CAACc,yBAAyB,CAACH,iBAAS,CAACE,KAAK,CAAC;MAClD;IACF,KAAKX,iBAAS,CAACa,qBAAqB;MAClCf,OAAO,CAACgB,gBAAgB,CAACf,IAAI,CAACU,SAAS,CAAC;MACxC;IACF,KAAKT,iBAAS,CAACe,mBAAmB;MAChCjB,OAAO,CAACkB,uBAAuB,CAACjB,IAAI,CAACU,SAAS,CAAC;MAC/C;IACF,KAAKT,iBAAS,CAACiB,mBAAmB;MAChCnB,OAAO,CAACoB,qCAAqC,EAAE;MAC/C;IACF,KAAKlB,iBAAS,CAACmB,mBAAmB;MAChCrB,OAAO,CAACsB,mCAAmC,EAAE;MAC7C;IACF;MACE;EAAM;AAEZ,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJA,IAKMC,OAAO;EAQX;AACF;AACA;AACA;AACA;AACA;EACE,mBAAc;IAAA;IAAA;IAAA;IAAA;IAAA;IACZ,IAAI,CAACA,OAAO,CAACC,QAAQ,EAAE;MACrB;AACN;AACA;AACA;AACA;AACA;MACM,IAAI,CAACC,OAAO,GAAG,EAAE;MACjB;AACN;AACA;AACA;AACA;AACA;MACM,IAAI,CAACC,iBAAiB,GAAG,IAAI;MAC7B;AACN;AACA;AACA;AACA;AACA;MACM,IAAI,CAACC,IAAI,GAAG,qBAAczB,iBAAS,CAAC;MACpC;AACN;AACA;AACA;AACA;AACA;MACMqB,OAAO,CAACC,QAAQ,GAAG,IAAI;IACzB;;IAEA;IACA,OAAOD,OAAO,CAACC,QAAQ;EACzB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA;IAAA,OAQA,sBAAaE,iBAAyB,EAAEE,KAAa,EAAE;MACrD,IAAI,CAACF,iBAAiB,GAAGA,iBAAiB;MAC1C,IAAI,CAACE,KAAK,GAAGA,KAAK;IACpB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EARE;IAAA;IAAA,OASA,mBAAUC,OAA8E,EAAE;MACxF,IAAOC,SAAS,GAAsBD,OAAO,CAAtCC,SAAS;QAAA,gBAAsBD,OAAO,CAA3B5B,IAAI;QAAJA,IAAI,8BAAG,CAAC,CAAC;QAAEF,KAAK,GAAI8B,OAAO,CAAhB9B,KAAK;MAClC,IAAKC,OAAO,GAAI6B,OAAO,CAAlB7B,OAAO;MAEZ,IAAI,IAAI,CAAC2B,IAAI,CAACI,OAAO,CAAChC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;QACnCiC,oBAAW,CAACC,MAAM,CAACC,KAAK,6CACenC,KAAK,kCAC3C;MACH;MAEA,IAAI,CAACC,OAAO,IAAI8B,SAAS,EAAE;QACzB9B,OAAO,GAAG,IAAI,CAAC0B,iBAAiB,CAACS,GAAG,CAACL,SAAS,CAAC;QAC/CD,OAAO,CAAC7B,OAAO,GAAGA,OAAO;MAC3B;MAEA,IAAIA,OAAO,EAAE;QACXF,aAAa,CAAC+B,OAAO,CAAC;QAEtB,IAAI,CAAC7B,OAAO,CAACoC,UAAU,EAAE;UACvBpC,OAAO,CAACoC,UAAU,GAAG,EAAE;QACzB;QACA,IAAIrC,KAAK,KAAKG,iBAAS,CAACmC,aAAa,EAAE;UACrCpC,IAAI,CAACF,KAAK,GAAGA,KAAK;UAClBC,OAAO,CAACsC,+BAA+B,CAACrC,IAAI,CAAC;QAC/C,CAAC,MAAM;UACLD,OAAO,CAACoC,UAAU,CAACG,IAAI,CAACxC,KAAK,CAAC;UAC9BE,IAAI,CAACF,KAAK,GAAGA,KAAK;UAClBC,OAAO,CAACwC,uBAAuB,CAACvC,IAAI,CAAC;QACvC;MACF,CAAC,MAAM;QACL+B,oBAAW,CAACC,MAAM,CAACQ,IAAI,oEACuCX,SAAS,4CACtE;MACH;IACF;;IAEA;AACF;AACA;AACA;AACA;;IAEE;EAAA;IAAA;IAAA,OACA,qBAAY5B,SAAS,EAAEwC,WAAW,EAAEb,OAAO,EAAE;MAAA;MAC3C,IAAMc,OAAY,GAAG;QACnBC,OAAO,EAAEC,aAAI,CAACC,EAAE,EAAE;QAClBC,OAAO,EAAE,CAAC;QACVC,MAAM,EAAE;UACNC,IAAI,EAAE,UAAU;UAChBC,WAAW,EAAE,SAAS;UACtBC,SAAS,EAAE,IAAI,CAACC,iBAAiB,EAAE;UACnCC,UAAU,EAAE;YACVC,UAAU,EAAEzB,OAAO,CAACyB,UAAU;YAC9BC,aAAa,YAAKC,mBAAW,cAAI,IAAI,CAAC5B,KAAK,CAACmB,OAAO,CAAE;YACrDU,kBAAkB,EAAE9D,kBAAkB,0BAAC,IAAI,CAACiC,KAAK,CAAC8B,QAAQ,CAACC,WAAW,0DAA/B,sBAAiCC,aAAa,CAAC;YACtFC,SAAS,EAAErE,YAAY,EAAE,IAAI,SAAS;YACtCsE,aAAa,EAAEjC,OAAO,CAACiC,aAAa;YACpCC,EAAE,EAAE,IAAAC,wCAAiB,GAAE;YACvBC,OAAO,EAAExE,cAAc,EAAE;YACzByE,cAAc,EAAExE,iBAAiB;UACnC;QACF,CAAC;QACDyE,UAAU,EAAE;UACVC,SAAS,EAAE,IAAIC,IAAI,EAAE,CAACC,WAAW;QACnC,CAAC;QACDC,iBAAiB,4BAAE,IAAI,CAAC3C,KAAK,CAAC8B,QAAQ,CAACC,WAAW,2DAA/B,uBAAiCa,WAAW;QAC/DzE,KAAK,EAAE;UACLkD,IAAI,EAAE/C,SAAS;UACfuE,UAAU,EAAE,IAAI;UAChB/B,WAAW,EAAXA,WAAW;UACXgC,SAAS,EAAE;YAACC,eAAe,EAAEC,eAAM,CAACC,QAAQ,CAACC;UAAQ;QACvD;MACF,CAAC;;MAED;MACA,IAAIjD,OAAO,EAAE;QACX,IAAIkD,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACrD,OAAO,EAAE,YAAY,CAAC,EAAE;UAC/Dc,OAAO,CAAC5C,KAAK,CAAC0E,UAAU,GAAG5C,OAAO,CAAC4C,UAAU;QAC/C;QACA,IAAI5C,OAAO,CAACsD,MAAM,EAAE;UAClBxC,OAAO,CAAC5C,KAAK,CAACoF,MAAM,GAAGtD,OAAO,CAACsD,MAAM;QACvC;QACA,IAAItD,OAAO,CAAClB,SAAS,EAAE;UACrBgC,OAAO,CAAC5C,KAAK,CAACY,SAAS,GAAGkB,OAAO,CAAClB,SAAS;QAC7C;QACA,IAAIkB,OAAO,CAACuD,OAAO,EAAE;UACnBzC,OAAO,CAAC5C,KAAK,CAACqF,OAAO,GAAGvD,OAAO,CAACuD,OAAO;QACzC;QACA,IAAIvD,OAAO,CAACwD,aAAa,EAAE;UACzB1C,OAAO,CAAC5C,KAAK,CAACsF,aAAa,GAAGxD,OAAO,CAACwD,aAAa;QACrD;QACA,IAAIxD,OAAO,CAACyD,iBAAiB,EAAE;UAC7B3C,OAAO,CAAC5C,KAAK,CAACuF,iBAAiB,GAAGzD,OAAO,CAACyD,iBAAiB;QAC7D;QACA,IAAIzD,OAAO,CAAC0D,WAAW,EAAE;UACvB5C,OAAO,CAAC5C,KAAK,CAACwF,WAAW,GAAG1D,OAAO,CAAC0D,WAAW;QACjD;QACA,IAAI1D,OAAO,CAAC2D,SAAS,EAAE;UACrB7C,OAAO,CAAC5C,KAAK,CAACyF,SAAS,GAAG3D,OAAO,CAAC2D,SAAS;QAC7C;QACA,IAAI3D,OAAO,CAAC4D,iBAAiB,EAAE;UAC7B9C,OAAO,CAAC5C,KAAK,CAAC0F,iBAAiB,GAAG5D,OAAO,CAAC4D,iBAAiB;QAC7D;MACF;MAEA,OAAO9C,OAAO;IAChB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAbE;IAAA;IAAA,OAcA;IACE;IACAzC,SAAiB,EACjBwC,WAIC,EAOD;MAAA;MAAA,IANAb,OAKO,uEAAG,CAAC,CAAC;MAEZ,IAAO6D,eAAe,GAAgC7D,OAAO,CAAtD6D,eAAe;QAAEC,eAAe,GAAe9D,OAAO,CAArC8D,eAAe;QAAEH,SAAS,GAAI3D,OAAO,CAApB2D,SAAS;MAElD,IAAM7C,OAAO,GAAG;QACdC,OAAO,EAAEC,aAAI,CAACC,EAAE,EAAE;QAClBC,OAAO,EAAE,CAAC;QACVC,MAAM,EAAE;UACN0C,eAAe,EAAfA,eAAe;UACfC,eAAe,EAAfA,eAAe;UACf1C,IAAI,EAAE,UAAU;UAChBC,WAAW,EAAErB,OAAO,CAACqB,WAAW,IAAI0C,eAAO;UAC3CzC,SAAS,EAAE,IAAI,CAACC,iBAAiB,EAAE;UACnCC,UAAU,EAAE;YACVC,UAAU,EAAEzB,OAAO,CAACyB,UAAU;YAAE;YAChCC,aAAa,YAAKC,mBAAW,cAAI,IAAI,CAAC5B,KAAK,CAACmB,OAAO,CAAE;YACrDU,kBAAkB,EAAE9D,kBAAkB,2BAAC,IAAI,CAACiC,KAAK,CAAC8B,QAAQ,CAACC,WAAW,2DAA/B,uBAAiCC,aAAa,CAAC;YACtFG,EAAE,EAAE,IAAAC,wCAAiB,GAAE;YACvBH,SAAS,EAAErE,YAAY,EAAE,IAAIoG,eAAO;YACpC9B,aAAa,EAAEjC,OAAO,CAACiC,aAAa;YACpCG,OAAO,EAAExE,cAAc,EAAE;YACzByE,cAAc,EAAExE,iBAAiB;UACnC;QACF,CAAC;QACDyE,UAAU,EAAE;UACVC,SAAS,EAAE,IAAIC,IAAI,EAAE,CAACC,WAAW;QACnC,CAAC;QACDC,iBAAiB,4BAAE,IAAI,CAAC3C,KAAK,CAAC8B,QAAQ,CAACC,WAAW,2DAA/B,uBAAiCa,WAAW;QAC/DzE,KAAK,EAAE;UACLkD,IAAI,EAAE/C,SAAS;UACfuE,UAAU,EAAE,IAAI;UAChB/B,WAAW,EAAXA,WAAW;UACXmD,SAAS,EAAE,CAAChE,OAAO,CAACiE,YAAY,CAAC;UACjCN,SAAS,EAATA,SAAS;UACTd,SAAS,EAAE;YACTC,eAAe,EAAEC,eAAM,CAACC,QAAQ,CAACC;UACnC,CAAC;UACDiB,cAAc,EAAE;YACdC,uBAAuB,EAAExC,mBAAW;YACpCyC,0BAA0B,EAAE,IAAI,CAACrE,KAAK,CAACmB,OAAO;YAC9CmD,uBAAuB,EAAEzG,cAAc,EAAE,IAAI,SAAS;YACtD0G,0BAA0B,EAAE3G,YAAY,EAAE,IAAIoG,eAAO;YACrDQ,SAAS,EAAE,IAAI/B,IAAI,EAAE,CAACC,WAAW;UACnC;QACF;MACF,CAAC;MAED,OAAO3B,OAAO;IAChB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EATE;IAAA;IAAA,OAUA,yBAAgB0D,GAAQ,EAAEC,UAAmB,EAAE;MAC7C,IAAIC,SAAS;MAEb,IAAIF,GAAG,IAAIA,GAAG,CAACG,UAAU,IAAIH,GAAG,CAACG,UAAU,IAAI,GAAG,EAAE;QAClDD,SAAS,GAAG,IAAI;MAClB,CAAC,MAAM,IAAIF,GAAG,IAAIA,GAAG,CAACI,IAAI,IAAIJ,GAAG,CAACI,IAAI,CAACF,SAAS,EAAE;QAChD;QACA,QAAQG,kBAAU,CAACL,GAAG,CAACI,IAAI,CAACF,SAAS,CAAC;UACpC,KAAKI,yBAAc,CAACC,mCAAmC;YACrDL,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAACE,mCAAmC;UACvD,KAAKF,yBAAc,CAACG,iCAAiC;YACnDP,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAACI,QAAQ;YAC1BR,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAACK,gCAAgC;UACpD,KAAKL,yBAAc,CAACM,iCAAiC;YACnDV,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAACO,iBAAiB;YACnCX,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAACQ,sBAAsB;YACxCZ,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAACS,oCAAoC;YACtDb,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAACU,6BAA6B;YAC/Cd,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAACW,8BAA8B;YAChDf,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAACY,oBAAoB;UACxC,KAAKZ,yBAAc,CAACa,mBAAmB;UACvC,KAAKb,yBAAc,CAACc,4BAA4B;YAC9ClB,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAACe,gCAAgC;YAClDnB,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAACgB,iBAAiB;YACnCpB,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAACiB,cAAc;YAChCrB,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAACkB,iBAAiB;YACnCtB,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAACmB,yBAAyB;YAC3CvB,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAACoB,qBAAqB;YACvCxB,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAACqB,oBAAoB;YACtCzB,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAACsB,8BAA8B;YAChD1B,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAACuB,mBAAmB;YACrC3B,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAACwB,sBAAsB;YACxC5B,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAACyB,gCAAgC;YAClD7B,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAAC0B,uBAAuB;YACzC9B,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAAC2B,kBAAkB;YACpC/B,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAAC4B,wBAAwB;YAC1ChC,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAAC6B,qBAAqB;YACvCjC,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAAC8B,kCAAkC;YACpDlC,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAAC+B,yCAAyC;YAC3DnC,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAACgC,sBAAsB;YACxCpC,SAAS,GAAG,IAAI;YAChB;UACF,KAAKI,yBAAc,CAACiC,+BAA+B;UACnD,KAAKjC,yBAAc,CAACkC,qBAAqB;UACzC,KAAKlC,yBAAc,CAACmC,qBAAqB;YACvCvC,SAAS,GAAG,IAAI;YAChB;UACF;YACEA,SAAS,GAAG,IAAI;QAAC;MAEvB,CAAC,MAAM;QACLA,SAAS,GAAG,IAAI;MAClB;MAEA,OAAO,IAAI,CAACwC,oBAAoB,CAACxC,SAAS,EAAED,UAAU,EAAEpE,aAAK,CAACe,IAAI,CAAC+F,cAAc,EAAE3C,GAAG,CAAC;IACzF;EAAC;IAAA;IAAA,OAED,8BAAqBE,SAAS,EAAE0C,WAAW,EAAEhG,IAAI,EAAEoD,GAAG,EAAE;MACtD,IAAInE,aAAK,CAACiD,MAAM,CAACoB,SAAS,CAAC,EAAE;QAC3B,IAAM2C,YAAiB,GAAG;UACxBD,WAAW,EAAEA,WAAW,IAAI,KAAK;UACjCE,QAAQ,EAAEjH,aAAK,CAACiD,MAAM,CAACoB,SAAS,CAAC,CAAC,CAAC,CAAC;UACpC6C,gBAAgB,EAAElH,aAAK,CAACiD,MAAM,CAACoB,SAAS,CAAC,CAAC,CAAC,CAAC;UAC5CA,SAAS,EAATA,SAAS;UACT8C,KAAK,EAAE,CAAC,wBAASnH,aAAK,CAACoH,iBAAiB,EAAE/C,SAAS,CAAC;UACpDtD,IAAI,EAAEA,IAAI,IAAIf,aAAK,CAACe,IAAI,CAACsG;QAC3B,CAAC;QAED,IAAIlD,GAAG,IAAIA,GAAG,CAACI,IAAI,EAAE;UACnByC,YAAY,CAACM,SAAS,GAAGnD,GAAG,CAACI,IAAI;QACnC;QAEA,IAAIJ,GAAG,IAAIA,GAAG,CAACG,UAAU,EAAE;UACzB0C,YAAY,CAACO,QAAQ,GAAGpD,GAAG,CAACG,UAAU;QACxC;QAEA,OAAO0C,YAAY;MACrB;MAEA,OAAO,IAAI;IACb;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA;IAAA,OAKA,6BAAoB;MAAA;MAClB,IAAIQ,eAAe;MACnB,IAAIC,WAAW;MACf,IAAMtG,UAAU,GAAGuG,aAAI,CAACC,MAAM,CAAC,WAAW,oCAAK,IAAI,CAACjI,KAAK,CAAC8B,QAAQ,mFAAnB,qBAAqBoG,OAAO,2DAA5B,uBAA8BC,UAAU,EAAG;MAE1F,IACE,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAChI,OAAO,CAACtC,cAAc,EAAE,CAACuK,WAAW,EAAE,CAAC,KACzF,CAAC,CAAC,EACF;QACAL,WAAW,GAAGC,aAAI,CAACC,MAAM,CACvB,YAAY,YACTpK,cAAc,EAAE,CAACuK,WAAW,EAAE,cAAItK,iBAAiB,EAAE,CAACuK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EACvE;MACH;MACA,IAAMC,MAAM,GAAGN,aAAI,CAACC,MAAM,CAAC,OAAO,YAAKtK,SAAS,EAAE,cAAIC,YAAY,EAAE,CAACyK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAG;MAErF,IAAIN,WAAW,EAAE;QACfD,eAAe,cAAOC,WAAW,CAAE;MACrC;MACA,IAAIO,MAAM,EAAE;QACVR,eAAe,GAAGA,eAAe,aAC1BA,eAAe,eAAKrG,UAAU,eAAK6G,MAAM,cACzC7G,UAAU,gBAAM6G,MAAM,CAAE;MACjC;MACA,IAAIR,eAAe,EAAE;QACnBA,eAAe,IAAI,GAAG;QAEtB,OAAOE,aAAI,CAACC,MAAM,CAChB,oBAAoB,YACjBM,OAAO,CAACC,GAAG,CAACC,QAAQ,cAAI,IAAI,CAACzI,KAAK,CAACmB,OAAO,GAC7C2G,eAAe,CAChB;MACH;MAEA,OAAOE,aAAI,CAACC,MAAM,CAAC,iBAAiB,YAAKM,OAAO,CAACC,GAAG,CAACC,QAAQ,cAAI,IAAI,CAACzI,KAAK,CAACmB,OAAO,EAAG;IACxF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAdE;IAAA;IAAA,OAeA,8BAAqBuH,UAAkB,EAAsD;MAAA,IAApDC,YAAoB,uEAAG,CAAC,CAAC;MAAA,IAAEC,UAAkB,uEAAG,CAAC,CAAC;MACzF,IAAI,CAAC5I,KAAK,CAAC6I,QAAQ,CAACX,OAAO,CAACY,mBAAmB,CAACJ,UAAU,EAAE;QAC1DK,IAAI,EAAE,IAAI,CAAC/I,KAAK,CAACgJ,MAAM,CAACd,OAAO,CAACa,IAAI;QACpCE,MAAM,EAAEN,YAAY;QACpBO,IAAI,EAAEN;MACR,CAAC,CAAC;IACJ;EAAC;EAAA;AAAA,KAGH;AAAA,8BArdMjJ,OAAO;AAsdb,IAAMC,QAAQ,GAAG,IAAID,OAAO,EAAE;AAAC,eAEhBC,QAAQ;AAAA"}
@@ -72,7 +72,7 @@ var Reachability = /*#__PURE__*/function () {
72
72
  key: "gatherReachability",
73
73
  value: function () {
74
74
  var _gatherReachability = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
75
- var clusters, results;
75
+ var _yield$this$reachabil, clusters, joinCookie, results;
76
76
  return _regenerator.default.wrap(function _callee$(_context) {
77
77
  while (1) switch (_context.prev = _context.next) {
78
78
  case 0:
@@ -81,32 +81,40 @@ var Reachability = /*#__PURE__*/function () {
81
81
  // Remove stored reachability results to ensure no stale data
82
82
  // @ts-ignore
83
83
  _context.next = 3;
84
- return this.webex.boundedStorage.del(this.namespace, _constants.REACHABILITY.localStorage);
84
+ return this.webex.boundedStorage.del(this.namespace, _constants.REACHABILITY.localStorageResult);
85
85
  case 3:
86
- _context.prev = 3;
87
- _context.next = 6;
86
+ _context.next = 5;
87
+ return this.webex.boundedStorage.del(this.namespace, _constants.REACHABILITY.localStorageJoinCookie);
88
+ case 5:
89
+ _context.prev = 5;
90
+ _context.next = 8;
88
91
  return this.reachabilityRequest.getClusters();
89
- case 6:
90
- clusters = _context.sent;
91
- _context.next = 9;
92
+ case 8:
93
+ _yield$this$reachabil = _context.sent;
94
+ clusters = _yield$this$reachabil.clusters;
95
+ joinCookie = _yield$this$reachabil.joinCookie;
96
+ _context.next = 13;
92
97
  return this.performReachabilityCheck(clusters);
93
- case 9:
98
+ case 13:
94
99
  results = _context.sent;
95
- _context.next = 12;
96
- return this.webex.boundedStorage.put(this.namespace, _constants.REACHABILITY.localStorage, (0, _stringify.default)(results));
97
- case 12:
100
+ _context.next = 16;
101
+ return this.webex.boundedStorage.put(this.namespace, _constants.REACHABILITY.localStorageResult, (0, _stringify.default)(results));
102
+ case 16:
103
+ _context.next = 18;
104
+ return this.webex.boundedStorage.put(this.namespace, _constants.REACHABILITY.localStorageJoinCookie, (0, _stringify.default)(joinCookie));
105
+ case 18:
98
106
  _loggerProxy.default.logger.log('Reachability:index#gatherReachability --> Reachability checks completed');
99
107
  return _context.abrupt("return", results);
100
- case 16:
101
- _context.prev = 16;
102
- _context.t0 = _context["catch"](3);
108
+ case 22:
109
+ _context.prev = 22;
110
+ _context.t0 = _context["catch"](5);
103
111
  _loggerProxy.default.logger.error("Reachability:index#gatherReachability --> Error in calling getClusters(): ".concat(_context.t0));
104
112
  return _context.abrupt("return", {});
105
- case 20:
113
+ case 26:
106
114
  case "end":
107
115
  return _context.stop();
108
116
  }
109
- }, _callee, this, [[3, 16]]);
117
+ }, _callee, this, [[5, 22]]);
110
118
  }));
111
119
  function gatherReachability() {
112
120
  return _gatherReachability.apply(this, arguments);
@@ -129,7 +137,7 @@ var Reachability = /*#__PURE__*/function () {
129
137
  case 0:
130
138
  reachable = false; // @ts-ignore
131
139
  _context2.next = 3;
132
- return this.webex.boundedStorage.get(this.namespace, _constants.REACHABILITY.localStorage).catch(function () {});
140
+ return this.webex.boundedStorage.get(this.namespace, _constants.REACHABILITY.localStorageResult).catch(function () {});
133
141
  case 3:
134
142
  reachabilityData = _context2.sent;
135
143
  if (reachabilityData) {
@@ -1 +1 @@
1
- {"version":3,"names":["DEFAULT_TIMEOUT","VIDEO_MESH_TIMEOUT","Reachability","webex","REACHABILITY","namespace","reachabilityRequest","ReachabilityRequest","clusterLatencyResults","setup","boundedStorage","del","localStorage","getClusters","clusters","performReachabilityCheck","results","put","LoggerProxy","logger","log","error","reachable","get","catch","reachabilityData","reachabilityResults","JSON","parse","some","result","udp","tcp","e","cluster","iceServers","map","url","username","credential","urls","iceCandidatePoolSize","iceTransportPolicy","key","config","peerConnection","window","RTCPeerConnection","peerConnectionError","startTime","begin","clusterList","buildPeerConnectionConfig","createPeerConnection","createOffer","offerToReceiveAudio","description","setLocalDescription","iceGatheringState","isVideoMesh","iceGatheringStateError","all","then","parseIceResultsToReachabilityResults","reachabilityLatencyResults","logUnreachableClusters","unreachableList","forEach","unreachable","push","onicegatheringstatechange","COMPLETE","ICE_GATHERING_STATE","iceConnectionState","elapsed","getElapsedTime","setLatencyAndClose","onicecandidate","SERVER_REFLEXIVE","candidate","String","type","toLowerCase","timeout","ELAPSED","resolve","peerConnectionProxy","Proxy","target","property","targetMember","bind","set","value","clusterId","Reflect","handleIceGatheringStateChange","handleOnIceCandidate","setTimeout","CLOSED","CONNECTION_STATE","connectionState","list","getUnreachablClusters","iceResults","reachabilityMap","latencyResult","latencyInMilliseconds","toString","length","getLocalSDPForClusters","localSDPData","REACHABLE","UNREACHABLE","resultKey","intialState","close"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint-disable class-methods-use-this */\n/* globals window */\nimport _ from 'lodash';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {ICE_GATHERING_STATE, CONNECTION_STATE, REACHABILITY} from '../constants';\n\nimport ReachabilityRequest from './request';\n\nconst DEFAULT_TIMEOUT = 3000;\nconst VIDEO_MESH_TIMEOUT = 1000;\n\n/**\n * @class Reachability\n * @export\n */\nexport default class Reachability {\n namespace = REACHABILITY.namespace;\n webex: object;\n reachabilityRequest: any;\n clusterLatencyResults: any;\n\n /**\n * Creates an instance of Reachability.\n * @param {object} webex\n * @memberof Reachability\n */\n constructor(webex: object) {\n this.webex = webex;\n\n /**\n * internal request object for the server\n * @instance\n * @type {Array}\n * @private\n * @memberof Reachability\n */\n this.reachabilityRequest = new ReachabilityRequest(this.webex);\n\n /**\n * internal object of clusters latency results\n * @instance\n * @type {object}\n * @private\n * @memberof Reachability\n */\n this.clusterLatencyResults = {};\n }\n\n /**\n * fetches reachability data\n * @returns {Object} reachability data\n * @public\n * @async\n * @memberof Reachability\n */\n public async gatherReachability() {\n this.setup();\n\n // Remove stored reachability results to ensure no stale data\n // @ts-ignore\n await this.webex.boundedStorage.del(this.namespace, REACHABILITY.localStorage);\n\n // Fetch clusters and measure latency\n try {\n const clusters = await this.reachabilityRequest.getClusters();\n\n // Perform Reachability Check\n const results = await this.performReachabilityCheck(clusters);\n\n // @ts-ignore\n await this.webex.boundedStorage.put(\n this.namespace,\n REACHABILITY.localStorage,\n JSON.stringify(results)\n );\n\n LoggerProxy.logger.log(\n 'Reachability:index#gatherReachability --> Reachability checks completed'\n );\n\n return results;\n } catch (getClusterError) {\n LoggerProxy.logger.error(\n `Reachability:index#gatherReachability --> Error in calling getClusters(): ${getClusterError}`\n );\n\n return {};\n }\n }\n\n /**\n * fetches reachability data and checks for cluster reachability\n * @returns {boolean}\n * @public\n * @memberof Reachability\n */\n async isAnyClusterReachable() {\n let reachable = false;\n // @ts-ignore\n const reachabilityData = await this.webex.boundedStorage\n .get(this.namespace, REACHABILITY.localStorage)\n .catch(() => {});\n\n if (reachabilityData) {\n try {\n const reachabilityResults = JSON.parse(reachabilityData);\n\n reachable = Object.values(reachabilityResults).some(\n (result: any) => result.udp?.reachable === 'true' || result.tcp?.reachable === 'true'\n );\n } catch (e) {\n LoggerProxy.logger.error(\n `Roap:request#attachReachabilityData --> Error in parsing reachability data: ${e}`\n );\n }\n }\n\n return reachable;\n }\n\n /**\n * Generate peerConnection config settings\n * @param {object} cluster\n * @returns {object} peerConnectionConfig\n * @private\n * @memberof Reachability\n */\n private buildPeerConnectionConfig(cluster: any) {\n const iceServers = _.uniq([...cluster.udp, ...cluster.tcp]).map((url) => ({\n username: '',\n credential: '',\n urls: [url],\n }));\n\n return {\n iceServers: [...iceServers],\n iceCandidatePoolSize: '0',\n iceTransportPolicy: 'all',\n };\n }\n\n /**\n * Creates an RTCPeerConnection\n * @param {object} cluster\n * @returns {RTCPeerConnection} peerConnection\n * @private\n * @memberof Reachability\n */\n private createPeerConnection(cluster: any) {\n const {key, config} = cluster;\n\n try {\n const peerConnection = new window.RTCPeerConnection(config);\n\n // @ts-ignore\n peerConnection.key = key;\n\n return peerConnection;\n } catch (peerConnectionError) {\n LoggerProxy.logger.log(\n `Reachability:index#createPeerConnection --> Error creating peerConnection: ${peerConnectionError}`\n );\n\n return null;\n }\n }\n\n /**\n * Gets total elapsed time\n * @param {RTCPeerConnection} peerConnection\n * @returns {Number} Milliseconds\n * @private\n * @memberof Reachability\n */\n private getElapsedTime(peerConnection: any) {\n const startTime = peerConnection.begin;\n\n delete peerConnection.begin;\n\n return Date.now() - startTime;\n }\n\n /**\n * creates offer and generates localSDP\n * @param {object} clusterList cluster List\n * @returns {Promise} Reachability latency results\n * @private\n * @memberof Reachability\n */\n private getLocalSDPForClusters(clusterList: object) {\n let clusters: any[] = [...Object.keys(clusterList)];\n\n clusters = clusters.map(async (key) => {\n const cluster = clusterList[key];\n const config = this.buildPeerConnectionConfig(cluster);\n const peerConnection = this.createPeerConnection({key, config});\n const description = await peerConnection.createOffer({offerToReceiveAudio: true});\n\n // @ts-ignore\n peerConnection.begin = Date.now();\n peerConnection.setLocalDescription(description);\n\n return this.iceGatheringState(\n peerConnection,\n cluster.isVideoMesh ? VIDEO_MESH_TIMEOUT : DEFAULT_TIMEOUT\n ).catch((iceGatheringStateError) => {\n LoggerProxy.logger.log(\n `Reachability:index#getLocalSDPForClusters --> Error in getLocalSDP : ${iceGatheringStateError}`\n );\n });\n });\n\n return Promise.all(clusters)\n .then(this.parseIceResultsToReachabilityResults)\n .then((reachabilityLatencyResults) => {\n this.logUnreachableClusters();\n\n // return results\n return reachabilityLatencyResults;\n });\n }\n\n /**\n * Get list of all unreachable clusters\n * @returns {array} Unreachable clusters\n * @private\n * @memberof Reachability\n */\n private getUnreachablClusters() {\n const unreachableList = [];\n const clusters = this.clusterLatencyResults;\n\n Object.keys(clusters).forEach((key) => {\n const cluster = clusters[key];\n\n if (cluster.unreachable && !cluster.reachable) {\n unreachableList.push(key);\n }\n });\n\n return unreachableList;\n }\n\n /**\n * Attach an event handler for the icegatheringstatechange\n * event and measure latency.\n * @param {RTCPeerConnection} peerConnection\n * @returns {undefined}\n * @private\n * @memberof Reachability\n */\n private handleIceGatheringStateChange(peerConnection: RTCPeerConnection) {\n peerConnection.onicegatheringstatechange = () => {\n const {COMPLETE} = ICE_GATHERING_STATE;\n\n if (peerConnection.iceConnectionState === COMPLETE) {\n const elapsed = this.getElapsedTime(peerConnection);\n\n // @ts-ignore\n LoggerProxy.logger.log(\n // @ts-ignore\n `Reachability:index#onIceGatheringStateChange --> Successfully pinged ${peerConnection.key}:`,\n elapsed\n );\n this.setLatencyAndClose(peerConnection, elapsed);\n }\n };\n }\n\n /**\n * Attach an event handler for the icecandidate\n * event and measure latency.\n * @param {RTCPeerConnection} peerConnection\n * @returns {undefined}\n * @private\n * @memberof Reachability\n */\n private handleOnIceCandidate(peerConnection: RTCPeerConnection) {\n peerConnection.onicecandidate = (e) => {\n const SERVER_REFLEXIVE = 'srflx';\n\n if (e.candidate && String(e.candidate.type).toLowerCase() === SERVER_REFLEXIVE) {\n const elapsed = this.getElapsedTime(peerConnection);\n\n LoggerProxy.logger.log(\n // @ts-ignore\n `Reachability:index#onIceCandidate --> Successfully pinged ${peerConnection.key}:`,\n elapsed\n );\n this.setLatencyAndClose(peerConnection, elapsed);\n }\n };\n }\n\n /**\n * An event handler on an RTCPeerConnection when the state of the ICE\n * candidate gathering process changes. Used to measure connection\n * speed.\n * @private\n * @param {RTCPeerConnection} peerConnection\n * @param {number} timeout\n * @returns {Promise}\n */\n private iceGatheringState(peerConnection: RTCPeerConnection, timeout: number) {\n const ELAPSED = 'elapsed';\n\n return new Promise((resolve) => {\n const peerConnectionProxy = new window.Proxy(peerConnection, {\n get(target, property) {\n const targetMember = target[property];\n\n if (typeof targetMember === 'function') {\n return targetMember.bind(target);\n }\n\n return targetMember;\n },\n set: (target, property, value) => {\n // only intercept elapsed property\n if (property === ELAPSED) {\n // @ts-ignore\n resolve({clusterId: peerConnection.key, elapsed: value});\n\n return true;\n }\n\n // pass thru\n return window.Reflect.set(target, property, value);\n },\n });\n\n // Using peerConnection proxy so handle functions below\n // won't be coupled to our promise implementation\n this.handleIceGatheringStateChange(peerConnectionProxy);\n this.handleOnIceCandidate(peerConnectionProxy);\n\n // Set maximum timeout\n window.setTimeout(() => {\n const {CLOSED} = CONNECTION_STATE;\n\n // Close any open peerConnections\n if (peerConnectionProxy.connectionState !== CLOSED) {\n this.setLatencyAndClose(peerConnectionProxy, null);\n }\n }, timeout);\n });\n }\n\n /**\n * Make a log of unreachable clusters.\n * @returns {undefined}\n * @private\n * @memberof Reachability\n */\n private logUnreachableClusters() {\n const list = this.getUnreachablClusters();\n\n list.forEach((cluster) => {\n LoggerProxy.logger.log(\n `Reachability:index#logUnreachableClusters --> No ice candidate for ${cluster}.`\n );\n });\n }\n\n /**\n * Calculates time to establish connection\n * @param {array} iceResults iceResults\n * @returns {object} reachabilityMap\n * @private\n * @memberof Reachability\n */\n private parseIceResultsToReachabilityResults(iceResults: Array<any>) {\n const reachabilityMap = {};\n\n iceResults.forEach(({clusterId, elapsed}) => {\n let latencyResult;\n\n if (elapsed === null) {\n latencyResult = {reachable: 'false'};\n } else {\n latencyResult = {\n reachable: 'true',\n latencyInMilliseconds: elapsed.toString(),\n };\n }\n\n reachabilityMap[clusterId] = {\n udp: latencyResult,\n tcp: latencyResult,\n };\n });\n\n return reachabilityMap;\n }\n\n /**\n * fetches reachability data\n * @param {object} clusterList\n * @returns {Promise<localSDPData>} reachability check results\n * @private\n * @memberof Reachability\n */\n private performReachabilityCheck(clusterList: object) {\n if (!clusterList || !Object.keys(clusterList).length) {\n return Promise.resolve({});\n }\n\n return new Promise((resolve) => {\n this.getLocalSDPForClusters(clusterList)\n .then((localSDPData) => {\n if (!localSDPData || !Object.keys(localSDPData).length) {\n // TODO: handle the error condition properly and try retry\n LoggerProxy.logger.log(\n 'Reachability:index#performReachabilityCheck --> Local SDP is empty or has missing elements..returning'\n );\n resolve({});\n } else {\n resolve(localSDPData);\n }\n })\n .catch((error) => {\n LoggerProxy.logger.error(\n `Reachability:index#performReachabilityCheck --> Error in getLocalSDPForClusters: ${error}`\n );\n resolve({});\n });\n });\n }\n\n /**\n * Records latency and closes the peerConnection\n * @param {RTCPeerConnection} peerConnection\n * @param {number} elapsed Latency in milliseconds\n * @returns {undefined}\n * @private\n * @memberof Reachability\n */\n private setLatencyAndClose(peerConnection: RTCPeerConnection, elapsed: number) {\n const REACHABLE = 'reachable';\n const UNREACHABLE = 'unreachable';\n const {CLOSED} = CONNECTION_STATE;\n // @ts-ignore\n const {key} = peerConnection;\n const resultKey = elapsed === null ? UNREACHABLE : REACHABLE;\n const intialState = {[REACHABLE]: 0, [UNREACHABLE]: 0};\n\n if (peerConnection.connectionState === CLOSED) {\n LoggerProxy.logger.log(\n `Reachability:index#setLatencyAndClose --> Attempting to set latency of ${elapsed} on closed peerConnection.`\n );\n\n return;\n }\n\n this.clusterLatencyResults[key] = this.clusterLatencyResults[key] || intialState;\n this.clusterLatencyResults[key][resultKey] += 1;\n\n // Set to null in case this fired from\n // an event other than onIceCandidate\n peerConnection.onicecandidate = null;\n peerConnection.close();\n // @ts-ignore\n peerConnection.elapsed = elapsed;\n }\n\n /**\n * utility function\n * @returns {undefined}\n * @private\n * @memberof Reachability\n */\n private setup() {\n this.clusterLatencyResults = {};\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["DEFAULT_TIMEOUT","VIDEO_MESH_TIMEOUT","Reachability","webex","REACHABILITY","namespace","reachabilityRequest","ReachabilityRequest","clusterLatencyResults","setup","boundedStorage","del","localStorageResult","localStorageJoinCookie","getClusters","clusters","joinCookie","performReachabilityCheck","results","put","LoggerProxy","logger","log","error","reachable","get","catch","reachabilityData","reachabilityResults","JSON","parse","some","result","udp","tcp","e","cluster","iceServers","map","url","username","credential","urls","iceCandidatePoolSize","iceTransportPolicy","key","config","peerConnection","window","RTCPeerConnection","peerConnectionError","startTime","begin","clusterList","buildPeerConnectionConfig","createPeerConnection","createOffer","offerToReceiveAudio","description","setLocalDescription","iceGatheringState","isVideoMesh","iceGatheringStateError","all","then","parseIceResultsToReachabilityResults","reachabilityLatencyResults","logUnreachableClusters","unreachableList","forEach","unreachable","push","onicegatheringstatechange","COMPLETE","ICE_GATHERING_STATE","iceConnectionState","elapsed","getElapsedTime","setLatencyAndClose","onicecandidate","SERVER_REFLEXIVE","candidate","String","type","toLowerCase","timeout","ELAPSED","resolve","peerConnectionProxy","Proxy","target","property","targetMember","bind","set","value","clusterId","Reflect","handleIceGatheringStateChange","handleOnIceCandidate","setTimeout","CLOSED","CONNECTION_STATE","connectionState","list","getUnreachablClusters","iceResults","reachabilityMap","latencyResult","latencyInMilliseconds","toString","length","getLocalSDPForClusters","localSDPData","REACHABLE","UNREACHABLE","resultKey","intialState","close"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint-disable class-methods-use-this */\n/* globals window */\nimport _ from 'lodash';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {ICE_GATHERING_STATE, CONNECTION_STATE, REACHABILITY} from '../constants';\n\nimport ReachabilityRequest from './request';\n\nconst DEFAULT_TIMEOUT = 3000;\nconst VIDEO_MESH_TIMEOUT = 1000;\n\n/**\n * @class Reachability\n * @export\n */\nexport default class Reachability {\n namespace = REACHABILITY.namespace;\n webex: object;\n reachabilityRequest: any;\n clusterLatencyResults: any;\n\n /**\n * Creates an instance of Reachability.\n * @param {object} webex\n * @memberof Reachability\n */\n constructor(webex: object) {\n this.webex = webex;\n\n /**\n * internal request object for the server\n * @instance\n * @type {Array}\n * @private\n * @memberof Reachability\n */\n this.reachabilityRequest = new ReachabilityRequest(this.webex);\n\n /**\n * internal object of clusters latency results\n * @instance\n * @type {object}\n * @private\n * @memberof Reachability\n */\n this.clusterLatencyResults = {};\n }\n\n /**\n * fetches reachability data\n * @returns {Object} reachability data\n * @public\n * @async\n * @memberof Reachability\n */\n public async gatherReachability() {\n this.setup();\n\n // Remove stored reachability results to ensure no stale data\n // @ts-ignore\n await this.webex.boundedStorage.del(this.namespace, REACHABILITY.localStorageResult);\n // @ts-ignore\n await this.webex.boundedStorage.del(this.namespace, REACHABILITY.localStorageJoinCookie);\n\n // Fetch clusters and measure latency\n try {\n const {clusters, joinCookie} = await this.reachabilityRequest.getClusters();\n\n // Perform Reachability Check\n const results = await this.performReachabilityCheck(clusters);\n\n // @ts-ignore\n await this.webex.boundedStorage.put(\n this.namespace,\n REACHABILITY.localStorageResult,\n JSON.stringify(results)\n );\n // @ts-ignore\n await this.webex.boundedStorage.put(\n this.namespace,\n REACHABILITY.localStorageJoinCookie,\n JSON.stringify(joinCookie)\n );\n\n LoggerProxy.logger.log(\n 'Reachability:index#gatherReachability --> Reachability checks completed'\n );\n\n return results;\n } catch (getClusterError) {\n LoggerProxy.logger.error(\n `Reachability:index#gatherReachability --> Error in calling getClusters(): ${getClusterError}`\n );\n\n return {};\n }\n }\n\n /**\n * fetches reachability data and checks for cluster reachability\n * @returns {boolean}\n * @public\n * @memberof Reachability\n */\n async isAnyClusterReachable() {\n let reachable = false;\n // @ts-ignore\n const reachabilityData = await this.webex.boundedStorage\n .get(this.namespace, REACHABILITY.localStorageResult)\n .catch(() => {});\n\n if (reachabilityData) {\n try {\n const reachabilityResults = JSON.parse(reachabilityData);\n\n reachable = Object.values(reachabilityResults).some(\n (result: any) => result.udp?.reachable === 'true' || result.tcp?.reachable === 'true'\n );\n } catch (e) {\n LoggerProxy.logger.error(\n `Roap:request#attachReachabilityData --> Error in parsing reachability data: ${e}`\n );\n }\n }\n\n return reachable;\n }\n\n /**\n * Generate peerConnection config settings\n * @param {object} cluster\n * @returns {object} peerConnectionConfig\n * @private\n * @memberof Reachability\n */\n private buildPeerConnectionConfig(cluster: any) {\n const iceServers = _.uniq([...cluster.udp, ...cluster.tcp]).map((url) => ({\n username: '',\n credential: '',\n urls: [url],\n }));\n\n return {\n iceServers: [...iceServers],\n iceCandidatePoolSize: '0',\n iceTransportPolicy: 'all',\n };\n }\n\n /**\n * Creates an RTCPeerConnection\n * @param {object} cluster\n * @returns {RTCPeerConnection} peerConnection\n * @private\n * @memberof Reachability\n */\n private createPeerConnection(cluster: any) {\n const {key, config} = cluster;\n\n try {\n const peerConnection = new window.RTCPeerConnection(config);\n\n // @ts-ignore\n peerConnection.key = key;\n\n return peerConnection;\n } catch (peerConnectionError) {\n LoggerProxy.logger.log(\n `Reachability:index#createPeerConnection --> Error creating peerConnection: ${peerConnectionError}`\n );\n\n return null;\n }\n }\n\n /**\n * Gets total elapsed time\n * @param {RTCPeerConnection} peerConnection\n * @returns {Number} Milliseconds\n * @private\n * @memberof Reachability\n */\n private getElapsedTime(peerConnection: any) {\n const startTime = peerConnection.begin;\n\n delete peerConnection.begin;\n\n return Date.now() - startTime;\n }\n\n /**\n * creates offer and generates localSDP\n * @param {object} clusterList cluster List\n * @returns {Promise} Reachability latency results\n * @private\n * @memberof Reachability\n */\n private getLocalSDPForClusters(clusterList: object) {\n let clusters: any[] = [...Object.keys(clusterList)];\n\n clusters = clusters.map(async (key) => {\n const cluster = clusterList[key];\n const config = this.buildPeerConnectionConfig(cluster);\n const peerConnection = this.createPeerConnection({key, config});\n const description = await peerConnection.createOffer({offerToReceiveAudio: true});\n\n // @ts-ignore\n peerConnection.begin = Date.now();\n peerConnection.setLocalDescription(description);\n\n return this.iceGatheringState(\n peerConnection,\n cluster.isVideoMesh ? VIDEO_MESH_TIMEOUT : DEFAULT_TIMEOUT\n ).catch((iceGatheringStateError) => {\n LoggerProxy.logger.log(\n `Reachability:index#getLocalSDPForClusters --> Error in getLocalSDP : ${iceGatheringStateError}`\n );\n });\n });\n\n return Promise.all(clusters)\n .then(this.parseIceResultsToReachabilityResults)\n .then((reachabilityLatencyResults) => {\n this.logUnreachableClusters();\n\n // return results\n return reachabilityLatencyResults;\n });\n }\n\n /**\n * Get list of all unreachable clusters\n * @returns {array} Unreachable clusters\n * @private\n * @memberof Reachability\n */\n private getUnreachablClusters() {\n const unreachableList = [];\n const clusters = this.clusterLatencyResults;\n\n Object.keys(clusters).forEach((key) => {\n const cluster = clusters[key];\n\n if (cluster.unreachable && !cluster.reachable) {\n unreachableList.push(key);\n }\n });\n\n return unreachableList;\n }\n\n /**\n * Attach an event handler for the icegatheringstatechange\n * event and measure latency.\n * @param {RTCPeerConnection} peerConnection\n * @returns {undefined}\n * @private\n * @memberof Reachability\n */\n private handleIceGatheringStateChange(peerConnection: RTCPeerConnection) {\n peerConnection.onicegatheringstatechange = () => {\n const {COMPLETE} = ICE_GATHERING_STATE;\n\n if (peerConnection.iceConnectionState === COMPLETE) {\n const elapsed = this.getElapsedTime(peerConnection);\n\n // @ts-ignore\n LoggerProxy.logger.log(\n // @ts-ignore\n `Reachability:index#onIceGatheringStateChange --> Successfully pinged ${peerConnection.key}:`,\n elapsed\n );\n this.setLatencyAndClose(peerConnection, elapsed);\n }\n };\n }\n\n /**\n * Attach an event handler for the icecandidate\n * event and measure latency.\n * @param {RTCPeerConnection} peerConnection\n * @returns {undefined}\n * @private\n * @memberof Reachability\n */\n private handleOnIceCandidate(peerConnection: RTCPeerConnection) {\n peerConnection.onicecandidate = (e) => {\n const SERVER_REFLEXIVE = 'srflx';\n\n if (e.candidate && String(e.candidate.type).toLowerCase() === SERVER_REFLEXIVE) {\n const elapsed = this.getElapsedTime(peerConnection);\n\n LoggerProxy.logger.log(\n // @ts-ignore\n `Reachability:index#onIceCandidate --> Successfully pinged ${peerConnection.key}:`,\n elapsed\n );\n this.setLatencyAndClose(peerConnection, elapsed);\n }\n };\n }\n\n /**\n * An event handler on an RTCPeerConnection when the state of the ICE\n * candidate gathering process changes. Used to measure connection\n * speed.\n * @private\n * @param {RTCPeerConnection} peerConnection\n * @param {number} timeout\n * @returns {Promise}\n */\n private iceGatheringState(peerConnection: RTCPeerConnection, timeout: number) {\n const ELAPSED = 'elapsed';\n\n return new Promise((resolve) => {\n const peerConnectionProxy = new window.Proxy(peerConnection, {\n get(target, property) {\n const targetMember = target[property];\n\n if (typeof targetMember === 'function') {\n return targetMember.bind(target);\n }\n\n return targetMember;\n },\n set: (target, property, value) => {\n // only intercept elapsed property\n if (property === ELAPSED) {\n // @ts-ignore\n resolve({clusterId: peerConnection.key, elapsed: value});\n\n return true;\n }\n\n // pass thru\n return window.Reflect.set(target, property, value);\n },\n });\n\n // Using peerConnection proxy so handle functions below\n // won't be coupled to our promise implementation\n this.handleIceGatheringStateChange(peerConnectionProxy);\n this.handleOnIceCandidate(peerConnectionProxy);\n\n // Set maximum timeout\n window.setTimeout(() => {\n const {CLOSED} = CONNECTION_STATE;\n\n // Close any open peerConnections\n if (peerConnectionProxy.connectionState !== CLOSED) {\n this.setLatencyAndClose(peerConnectionProxy, null);\n }\n }, timeout);\n });\n }\n\n /**\n * Make a log of unreachable clusters.\n * @returns {undefined}\n * @private\n * @memberof Reachability\n */\n private logUnreachableClusters() {\n const list = this.getUnreachablClusters();\n\n list.forEach((cluster) => {\n LoggerProxy.logger.log(\n `Reachability:index#logUnreachableClusters --> No ice candidate for ${cluster}.`\n );\n });\n }\n\n /**\n * Calculates time to establish connection\n * @param {array} iceResults iceResults\n * @returns {object} reachabilityMap\n * @private\n * @memberof Reachability\n */\n private parseIceResultsToReachabilityResults(iceResults: Array<any>) {\n const reachabilityMap = {};\n\n iceResults.forEach(({clusterId, elapsed}) => {\n let latencyResult;\n\n if (elapsed === null) {\n latencyResult = {reachable: 'false'};\n } else {\n latencyResult = {\n reachable: 'true',\n latencyInMilliseconds: elapsed.toString(),\n };\n }\n\n reachabilityMap[clusterId] = {\n udp: latencyResult,\n tcp: latencyResult,\n };\n });\n\n return reachabilityMap;\n }\n\n /**\n * fetches reachability data\n * @param {object} clusterList\n * @returns {Promise<localSDPData>} reachability check results\n * @private\n * @memberof Reachability\n */\n private performReachabilityCheck(clusterList: object) {\n if (!clusterList || !Object.keys(clusterList).length) {\n return Promise.resolve({});\n }\n\n return new Promise((resolve) => {\n this.getLocalSDPForClusters(clusterList)\n .then((localSDPData) => {\n if (!localSDPData || !Object.keys(localSDPData).length) {\n // TODO: handle the error condition properly and try retry\n LoggerProxy.logger.log(\n 'Reachability:index#performReachabilityCheck --> Local SDP is empty or has missing elements..returning'\n );\n resolve({});\n } else {\n resolve(localSDPData);\n }\n })\n .catch((error) => {\n LoggerProxy.logger.error(\n `Reachability:index#performReachabilityCheck --> Error in getLocalSDPForClusters: ${error}`\n );\n resolve({});\n });\n });\n }\n\n /**\n * Records latency and closes the peerConnection\n * @param {RTCPeerConnection} peerConnection\n * @param {number} elapsed Latency in milliseconds\n * @returns {undefined}\n * @private\n * @memberof Reachability\n */\n private setLatencyAndClose(peerConnection: RTCPeerConnection, elapsed: number) {\n const REACHABLE = 'reachable';\n const UNREACHABLE = 'unreachable';\n const {CLOSED} = CONNECTION_STATE;\n // @ts-ignore\n const {key} = peerConnection;\n const resultKey = elapsed === null ? UNREACHABLE : REACHABLE;\n const intialState = {[REACHABLE]: 0, [UNREACHABLE]: 0};\n\n if (peerConnection.connectionState === CLOSED) {\n LoggerProxy.logger.log(\n `Reachability:index#setLatencyAndClose --> Attempting to set latency of ${elapsed} on closed peerConnection.`\n );\n\n return;\n }\n\n this.clusterLatencyResults[key] = this.clusterLatencyResults[key] || intialState;\n this.clusterLatencyResults[key][resultKey] += 1;\n\n // Set to null in case this fired from\n // an event other than onIceCandidate\n peerConnection.onicecandidate = null;\n peerConnection.close();\n // @ts-ignore\n peerConnection.elapsed = elapsed;\n }\n\n /**\n * utility function\n * @returns {undefined}\n * @private\n * @memberof Reachability\n */\n private setup() {\n this.clusterLatencyResults = {};\n }\n}\n"],"mappings":"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"}