@webex/plugin-meetings 3.8.0-web-workers-keepalive.1 → 3.8.1-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +70 -6
- package/dist/breakouts/index.js.map +1 -1
- package/dist/common/errors/webex-errors.js +12 -2
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/config.js +4 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js +22 -123
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +2 -0
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/types.js.map +1 -1
- package/dist/controls-options-manager/util.js +52 -0
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.js +30 -10
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +83 -12
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/selfUtils.js +432 -418
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +17 -17
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +94 -6
- package/dist/media/properties.js.map +1 -1
- package/dist/meeting/brbState.js +9 -2
- package/dist/meeting/brbState.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +17 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +568 -328
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +0 -17
- package/dist/meeting/locusMediaRequest.js.map +1 -1
- package/dist/meeting/muteState.js +4 -4
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +30 -0
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js.map +1 -1
- package/dist/meeting/util.js +9 -1
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +19 -13
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/utilv2.js +5 -1
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/index.js +76 -0
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/util.js +14 -0
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +45 -9
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +3 -0
- package/dist/member/types.js.map +1 -1
- package/dist/member/util.js +335 -356
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +137 -29
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +38 -0
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js +36 -1
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +1 -0
- package/dist/metrics/constants.js.map +1 -1
- package/dist/reachability/clusterReachability.js +23 -31
- package/dist/reachability/clusterReachability.js.map +1 -1
- package/dist/reachability/index.js +42 -2
- package/dist/reachability/index.js.map +1 -1
- package/dist/reconnection-manager/index.js +2 -2
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/turnDiscovery.js +45 -27
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/roap/types.js +17 -0
- package/dist/roap/types.js.map +1 -0
- package/dist/types/common/errors/webex-errors.d.ts +7 -1
- package/dist/types/config.d.ts +2 -0
- package/dist/types/constants.d.ts +15 -85
- package/dist/types/controls-options-manager/enums.d.ts +3 -1
- package/dist/types/controls-options-manager/types.d.ts +7 -1
- package/dist/types/locus-info/index.d.ts +3 -3
- package/dist/types/locus-info/selfUtils.d.ts +216 -1
- package/dist/types/media/properties.d.ts +15 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +16 -0
- package/dist/types/meeting/index.d.ts +35 -1
- package/dist/types/meeting/muteState.d.ts +0 -1
- package/dist/types/meeting/request.d.ts +12 -1
- package/dist/types/meeting/request.type.d.ts +6 -0
- package/dist/types/meeting/util.d.ts +3 -1
- package/dist/types/meeting-info/meeting-info-v2.d.ts +2 -1
- package/dist/types/meetings/index.d.ts +28 -0
- package/dist/types/member/index.d.ts +20 -6
- package/dist/types/member/types.d.ts +73 -14
- package/dist/types/member/util.d.ts +156 -1
- package/dist/types/members/collection.d.ts +6 -5
- package/dist/types/members/index.d.ts +32 -43
- package/dist/types/members/request.d.ts +26 -0
- package/dist/types/members/util.d.ts +27 -0
- package/dist/types/metrics/constants.d.ts +1 -0
- package/dist/types/reachability/clusterReachability.d.ts +2 -6
- package/dist/types/reachability/index.d.ts +8 -0
- package/dist/types/roap/index.d.ts +3 -2
- package/dist/types/roap/turnDiscovery.d.ts +5 -17
- package/dist/types/roap/types.d.ts +16 -0
- package/dist/webinar/index.js +1 -1
- package/package.json +24 -23
- package/src/breakouts/index.ts +69 -0
- package/src/common/errors/webex-errors.ts +8 -1
- package/src/config.ts +2 -0
- package/src/constants.ts +23 -90
- package/src/controls-options-manager/enums.ts +2 -0
- package/src/controls-options-manager/types.ts +11 -1
- package/src/controls-options-manager/util.ts +62 -0
- package/src/locus-info/controlsUtils.ts +48 -12
- package/src/locus-info/index.ts +88 -13
- package/src/locus-info/selfUtils.ts +496 -442
- package/src/media/index.ts +23 -21
- package/src/media/properties.ts +96 -0
- package/src/meeting/brbState.ts +11 -2
- package/src/meeting/in-meeting-actions.ts +32 -0
- package/src/meeting/index.ts +356 -87
- package/src/meeting/locusMediaRequest.ts +0 -18
- package/src/meeting/muteState.ts +4 -4
- package/src/meeting/request.ts +36 -1
- package/src/meeting/request.type.ts +7 -0
- package/src/meeting/util.ts +9 -1
- package/src/meeting-info/meeting-info-v2.ts +7 -2
- package/src/meeting-info/utilv2.ts +5 -0
- package/src/meetings/index.ts +76 -0
- package/src/meetings/util.ts +18 -0
- package/src/member/index.ts +57 -22
- package/src/member/types.ts +82 -16
- package/src/member/util.ts +357 -353
- package/src/members/collection.ts +4 -3
- package/src/members/index.ts +137 -18
- package/src/members/request.ts +44 -0
- package/src/members/util.ts +43 -1
- package/src/metrics/constants.ts +1 -0
- package/src/reachability/clusterReachability.ts +26 -25
- package/src/reachability/index.ts +55 -1
- package/src/reconnection-manager/index.ts +2 -2
- package/src/roap/index.ts +3 -7
- package/src/roap/turnDiscovery.ts +34 -39
- package/src/roap/types.ts +23 -0
- package/test/unit/spec/breakouts/index.ts +167 -95
- package/test/unit/spec/controls-options-manager/util.js +120 -0
- package/test/unit/spec/locus-info/controlsUtils.js +131 -9
- package/test/unit/spec/locus-info/index.js +195 -73
- package/test/unit/spec/locus-info/selfUtils.js +98 -24
- package/test/unit/spec/media/index.ts +150 -18
- package/test/unit/spec/media/properties.ts +130 -0
- package/test/unit/spec/meeting/brbState.ts +40 -2
- package/test/unit/spec/meeting/in-meeting-actions.ts +19 -4
- package/test/unit/spec/meeting/index.js +553 -36
- package/test/unit/spec/meeting/locusMediaRequest.ts +0 -30
- package/test/unit/spec/meeting/muteState.js +73 -2
- package/test/unit/spec/meeting/request.js +32 -1
- package/test/unit/spec/meeting/utils.js +79 -33
- package/test/unit/spec/meeting-info/meetinginfov2.js +41 -0
- package/test/unit/spec/meeting-info/utilv2.js +19 -0
- package/test/unit/spec/meetings/index.js +68 -1
- package/test/unit/spec/members/index.js +304 -78
- package/test/unit/spec/members/request.js +68 -22
- package/test/unit/spec/members/utils.js +75 -0
- package/test/unit/spec/reachability/clusterReachability.ts +41 -55
- package/test/unit/spec/reachability/index.ts +89 -0
- package/test/unit/spec/reconnection-manager/index.js +4 -4
- package/test/unit/spec/roap/turnDiscovery.ts +110 -28
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_constants","require","_loggerProxy","_interopRequireDefault","_triggerProxy","_constants2","_metrics","_meetings","MeetingsUtil","getMeetingAddedType","type","DESTINATION_TYPE","LOCUS_ID","_INCOMING_","_CREATED_","handleRoapMercury","envelope","meetingCollection","data","eventType","LOCUSEVENT","MESSAGE_ROAP","meeting","getByKey","MEETING_KEY","CORRELATION_ID","correlationId","_data$message","message","seq","messageType","tieBreaker","errorType","errorCause","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","ROAP_MERCURY_EVENT_RECEIVED","correlation_id","message_type","error_type","error_cause","ROAP","ROAP_TYPES","TURN_DISCOVERY_RESPONSE","roap","turnDiscovery","handleTurnDiscoveryResponse","_data$message$sdps","roapMessage","sdp","sdps","length","undefined","roapMessageReceived","getMediaServer","mediaServer","split","find","line","startsWith","shift","replace","toLowerCase","_unused","checkForCorrelationId","deviceUrl","locus","devices","self","foundDevice","device","url","parseDefaultSiteFromMeetingPreferences","userPreferences","_userPreferences$site","result","sites","defaultSite","site","default","siteUrl","hasH264Codec","_asyncToGenerator2","_regenerator","mark","_callee","hasCodec","pc","offer","wrap","_callee$","_context","prev","next","window","RTCPeerConnection","createOffer","offerToReceiveVideo","sent","match","close","t0","LoggerProxy","logger","warn","abrupt","stop","checkH264Support","_checkH264Support","_callee2","options","_this","_ref2","firstChecked","disableNotifications","delay","maxDuration","shouldTrigger","shouldStopChecking","_callee2$","_context2","_now","Trigger","trigger","file","function","EVENT_TRIGGERS","MEDIA_CODEC_LOADED","log","error","MEDIA_CODEC_MISSING","setTimeout","timestamp","call","_x","apply","arguments","getThisDevice","newLocus","_newLocus$self","_newLocus$self$device","joinedOnThisDevice","thisDevice","state","_JOINED_","_LEFT_","reason","_MOVED_","isBreakoutLocusDTO","_newLocus$controls","_newLocus$controls$br","controls","breakout","sessionType","BREAKOUTS","SESSION_TYPES","BREAKOUT","isValidBreakoutLocus","_locus$fullState","_locus$self","inActiveStatus","fullState","LOCUS","STATE","INACTIVE","isLocusAsBreakout","selfJoined","_default","exports"],"sources":["util.ts"],"sourcesContent":["/* globals window */\n\nimport {\n _CREATED_,\n _INCOMING_,\n _JOINED_,\n _LEFT_,\n DESTINATION_TYPE,\n _MOVED_,\n BREAKOUTS,\n EVENT_TRIGGERS,\n LOCUS,\n LOCUSEVENT,\n ROAP,\n} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport Trigger from '../common/events/trigger-proxy';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\nimport Metrics from '../metrics';\nimport {MEETING_KEY} from './meetings.types';\n\n/**\n * Meetings Media Codec Missing Event\n * Emitted when H.264 codec is not\n * found in the browser.\n * @event media:codec:missing\n * @instance\n * @memberof MeetingsUtil\n */\n\n/**\n * Meetings Media Codec Loaded Event\n * Emitted when H.264 codec has been\n * loaded in the browser.\n * @event media:codec:loaded\n * @instance\n * @memberof MeetingsUtil\n */\n\nconst MeetingsUtil: any = {};\n\nMeetingsUtil.getMeetingAddedType = (type: DESTINATION_TYPE) =>\n type === DESTINATION_TYPE.LOCUS_ID ? _INCOMING_ : _CREATED_;\n\nMeetingsUtil.handleRoapMercury = (envelope, meetingCollection) => {\n const {data} = envelope;\n const {eventType} = data;\n\n if (eventType === LOCUSEVENT.MESSAGE_ROAP) {\n const meeting = meetingCollection.getByKey(MEETING_KEY.CORRELATION_ID, data.correlationId);\n\n if (meeting) {\n const {seq, messageType, tieBreaker, errorType, errorCause} = data.message;\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ROAP_MERCURY_EVENT_RECEIVED, {\n correlation_id: data.correlationId,\n seq,\n message_type: messageType,\n error_type: errorType,\n error_cause: errorCause,\n });\n\n if (messageType === ROAP.ROAP_TYPES.TURN_DISCOVERY_RESPONSE) {\n // turn discovery is not part of normal roap protocol and so we are not handling it\n // through the usual roap state machine\n meeting.roap.turnDiscovery.handleTurnDiscoveryResponse(data.message, 'from mercury');\n } else {\n const roapMessage = {\n seq,\n messageType,\n sdp: data.message.sdps?.length > 0 ? data.message.sdps[0] : undefined,\n tieBreaker,\n errorType,\n errorCause,\n };\n\n meeting.roapMessageReceived(roapMessage);\n }\n }\n }\n};\n\nMeetingsUtil.getMediaServer = (sdp) => {\n let mediaServer;\n\n // Attempt to collect the media server from the roap message.\n try {\n mediaServer = sdp\n .split('\\r\\n')\n .find((line) => line.startsWith('o='))\n .split(' ')\n .shift()\n .replace('o=', '')\n .toLowerCase();\n } catch {\n mediaServer = undefined;\n }\n\n return mediaServer;\n};\n\nMeetingsUtil.checkForCorrelationId = (deviceUrl, locus) => {\n let devices = [];\n\n if (locus) {\n if (locus && locus.self && locus.self.devices) {\n devices = locus.self.devices;\n }\n\n const foundDevice = devices.find((device) => device.url === deviceUrl);\n\n if (foundDevice && foundDevice.correlationId) {\n return foundDevice.correlationId;\n }\n }\n\n return false;\n};\n\nMeetingsUtil.parseDefaultSiteFromMeetingPreferences = (userPreferences) => {\n let result = '';\n\n if (userPreferences?.sites?.length) {\n const defaultSite = userPreferences.sites.find((site) => site.default);\n\n if (defaultSite) {\n result = defaultSite.siteUrl;\n } else {\n result = userPreferences.sites[0].siteUrl;\n }\n }\n\n return result;\n};\n\n/**\n * Will check to see if the H.264 media codec is supported.\n * @async\n * @private\n * @returns {Promise<boolean>}\n */\nMeetingsUtil.hasH264Codec = async () => {\n let hasCodec = false;\n\n try {\n const pc = new window.RTCPeerConnection();\n const offer = await pc.createOffer({offerToReceiveVideo: true});\n\n if (offer.sdp.match(/^a=rtpmap:\\d+\\s+H264\\/\\d+/m)) {\n hasCodec = true;\n }\n pc.close();\n } catch (error) {\n LoggerProxy.logger.warn(\n 'Meetings:util#hasH264Codec --> Error creating peerConnection for H.264 test.'\n );\n }\n\n return hasCodec;\n};\n\n/**\n * Notifies the user whether or not the H.264\n * codec is present. Will continuously check\n * until max duration.\n * @async\n * @private\n * @param {object} options\n * @param {Number} options.firstChecked Timestamp in milliseconds\n * @param {boolean} options.disableNotifications Default is false. Boolean to enable/disable notification and events\n * @returns {undefined}\n */\nMeetingsUtil.checkH264Support = async function checkH264Support(options: {\n firstChecked: number;\n disableNotifications: boolean;\n}) {\n const {hasH264Codec} = MeetingsUtil;\n const {firstChecked, disableNotifications} = options || {};\n const delay = 5e3; // ms\n const maxDuration = 3e5; // ms\n const shouldTrigger = firstChecked === undefined;\n const shouldStopChecking = firstChecked && Date.now() - firstChecked >= maxDuration;\n\n // Disable notifications and start H.264 download only\n if (disableNotifications) {\n hasH264Codec();\n\n return;\n }\n\n // Codec loaded trigger event notification\n if (await hasH264Codec()) {\n Trigger.trigger(\n this,\n {\n file: 'meetings/util',\n function: 'checkH264Support',\n },\n EVENT_TRIGGERS.MEDIA_CODEC_LOADED\n );\n LoggerProxy.logger.log('Meetings:util#checkH264Support --> H264 codec loaded successfully.');\n\n return;\n }\n\n // Stop checking if past the timelimit\n if (shouldStopChecking) {\n LoggerProxy.logger.error(\n 'Meetings:util#checkH264Support --> Timed out waiting for H264 codec to load.'\n );\n\n return;\n }\n\n // Trigger only once\n if (shouldTrigger) {\n Trigger.trigger(\n this,\n {\n file: 'meetings/util',\n function: 'checkH264Support',\n },\n EVENT_TRIGGERS.MEDIA_CODEC_MISSING\n );\n LoggerProxy.logger.log('Meetings:util#checkH264Support --> H264 codec is missing.');\n }\n\n // Keep checking in intervals to see if codec loaded\n window.setTimeout(() => {\n const timestamp = firstChecked || Date.now();\n\n MeetingsUtil.checkH264Support.call(this, {firstChecked: timestamp});\n }, delay);\n};\n\n/**\n * get device from locus data\n * @param {Object} newLocus new locus data\n * @param {String} deviceUrl current device url\n * @returns {Object}\n */\nMeetingsUtil.getThisDevice = (newLocus: any, deviceUrl: string) => {\n if (newLocus?.self?.devices?.length > 0) {\n return newLocus.self.devices.find((device) => device.url === deviceUrl);\n }\n\n return null;\n};\n\n/**\n * get self device joined status from locus data\n * @param {Object} meeting current meeting data\n * @param {Object} newLocus new locus data\n * @param {String} deviceUrl current device url\n * @returns {Object}\n */\nMeetingsUtil.joinedOnThisDevice = (meeting: any, newLocus: any, deviceUrl: string) => {\n const thisDevice = MeetingsUtil.getThisDevice(newLocus, deviceUrl);\n if (thisDevice) {\n if (!thisDevice.correlationId || meeting?.correlationId === thisDevice.correlationId) {\n return (\n thisDevice.state === _JOINED_ ||\n (thisDevice.state === _LEFT_ && thisDevice.reason === _MOVED_)\n );\n }\n }\n\n return false;\n};\n\n/**\n * check the new locus is breakout session's one or not\n * @param {Object} newLocus new locus data\n * @returns {boolean}\n * @private\n */\nMeetingsUtil.isBreakoutLocusDTO = (newLocus: any) => {\n return newLocus?.controls?.breakout?.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT;\n};\n\n/**\n * check the locus is valid breakout locus or not\n * @param {Object} locus\n * @returns {boolean}\n * @private\n */\nMeetingsUtil.isValidBreakoutLocus = (locus: any) => {\n const inActiveStatus = locus?.fullState?.state === LOCUS.STATE.INACTIVE;\n const isLocusAsBreakout = MeetingsUtil.isBreakoutLocusDTO(locus);\n const selfJoined = locus.self?.state === _JOINED_;\n\n return isLocusAsBreakout && !inActiveStatus && selfJoined;\n};\nexport default MeetingsUtil;\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["_constants","require","_loggerProxy","_interopRequireDefault","_triggerProxy","_constants2","_metrics","_meetings","MeetingsUtil","getMeetingAddedType","type","DESTINATION_TYPE","LOCUS_ID","_INCOMING_","_CREATED_","handleRoapMercury","envelope","meetingCollection","data","eventType","LOCUSEVENT","MESSAGE_ROAP","meeting","getByKey","MEETING_KEY","CORRELATION_ID","correlationId","_data$message","message","seq","messageType","tieBreaker","errorType","errorCause","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","ROAP_MERCURY_EVENT_RECEIVED","correlation_id","message_type","error_type","error_cause","ROAP","ROAP_TYPES","TURN_DISCOVERY_RESPONSE","roap","turnDiscovery","handleTurnDiscoveryResponse","_data$message$sdps","roapMessage","sdp","sdps","length","undefined","roapMessageReceived","getMediaServer","mediaServer","split","find","line","startsWith","shift","replace","toLowerCase","_unused","getMediaServerIp","mediaServerIp","_sdp$split$find$match","match","trim","_unused2","checkForCorrelationId","deviceUrl","locus","devices","self","foundDevice","device","url","parseDefaultSiteFromMeetingPreferences","userPreferences","_userPreferences$site","result","sites","defaultSite","site","default","siteUrl","hasH264Codec","_asyncToGenerator2","_regenerator","mark","_callee","hasCodec","pc","offer","wrap","_callee$","_context","prev","next","window","RTCPeerConnection","createOffer","offerToReceiveVideo","sent","close","t0","LoggerProxy","logger","warn","abrupt","stop","checkH264Support","_checkH264Support","_callee2","options","_this","_ref2","firstChecked","disableNotifications","delay","maxDuration","shouldTrigger","shouldStopChecking","_callee2$","_context2","_now","Trigger","trigger","file","function","EVENT_TRIGGERS","MEDIA_CODEC_LOADED","log","error","MEDIA_CODEC_MISSING","setTimeout","timestamp","call","_x","apply","arguments","getThisDevice","newLocus","_newLocus$self","_newLocus$self$device","joinedOnThisDevice","thisDevice","state","_JOINED_","_LEFT_","reason","_MOVED_","isBreakoutLocusDTO","_newLocus$controls","_newLocus$controls$br","controls","breakout","sessionType","BREAKOUTS","SESSION_TYPES","BREAKOUT","isValidBreakoutLocus","_locus$fullState","_locus$self","inActiveStatus","fullState","LOCUS","STATE","INACTIVE","isLocusAsBreakout","selfJoined","_default","exports"],"sources":["util.ts"],"sourcesContent":["/* globals window */\n\nimport {\n _CREATED_,\n _INCOMING_,\n _JOINED_,\n _LEFT_,\n DESTINATION_TYPE,\n _MOVED_,\n BREAKOUTS,\n EVENT_TRIGGERS,\n LOCUS,\n LOCUSEVENT,\n ROAP,\n} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport Trigger from '../common/events/trigger-proxy';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\nimport Metrics from '../metrics';\nimport {MEETING_KEY} from './meetings.types';\n\n/**\n * Meetings Media Codec Missing Event\n * Emitted when H.264 codec is not\n * found in the browser.\n * @event media:codec:missing\n * @instance\n * @memberof MeetingsUtil\n */\n\n/**\n * Meetings Media Codec Loaded Event\n * Emitted when H.264 codec has been\n * loaded in the browser.\n * @event media:codec:loaded\n * @instance\n * @memberof MeetingsUtil\n */\n\nconst MeetingsUtil: any = {};\n\nMeetingsUtil.getMeetingAddedType = (type: DESTINATION_TYPE) =>\n type === DESTINATION_TYPE.LOCUS_ID ? _INCOMING_ : _CREATED_;\n\nMeetingsUtil.handleRoapMercury = (envelope, meetingCollection) => {\n const {data} = envelope;\n const {eventType} = data;\n\n if (eventType === LOCUSEVENT.MESSAGE_ROAP) {\n const meeting = meetingCollection.getByKey(MEETING_KEY.CORRELATION_ID, data.correlationId);\n\n if (meeting) {\n const {seq, messageType, tieBreaker, errorType, errorCause} = data.message;\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ROAP_MERCURY_EVENT_RECEIVED, {\n correlation_id: data.correlationId,\n seq,\n message_type: messageType,\n error_type: errorType,\n error_cause: errorCause,\n });\n\n if (messageType === ROAP.ROAP_TYPES.TURN_DISCOVERY_RESPONSE) {\n // turn discovery is not part of normal roap protocol and so we are not handling it\n // through the usual roap state machine\n meeting.roap.turnDiscovery.handleTurnDiscoveryResponse(data.message, 'from mercury');\n } else {\n const roapMessage = {\n seq,\n messageType,\n sdp: data.message.sdps?.length > 0 ? data.message.sdps[0] : undefined,\n tieBreaker,\n errorType,\n errorCause,\n };\n\n meeting.roapMessageReceived(roapMessage);\n }\n }\n }\n};\n\nMeetingsUtil.getMediaServer = (sdp) => {\n let mediaServer;\n\n // Attempt to collect the media server from the roap message.\n try {\n mediaServer = sdp\n .split('\\r\\n')\n .find((line) => line.startsWith('o='))\n .split(' ')\n .shift()\n .replace('o=', '')\n .toLowerCase();\n } catch {\n mediaServer = undefined;\n }\n\n return mediaServer;\n};\n\nMeetingsUtil.getMediaServerIp = (sdp) => {\n let mediaServerIp;\n\n // Attempt to collect the media server from the roap message.\n try {\n mediaServerIp = sdp\n .split('\\r\\n')\n .find((line) => line.startsWith('o='))\n .match(/o=\\S+ \\d+ \\d+ IN IP4 ([\\d.]+)/)?.[1]\n .toLowerCase()\n .trim();\n } catch {\n mediaServerIp = undefined;\n }\n\n return mediaServerIp;\n};\n\nMeetingsUtil.checkForCorrelationId = (deviceUrl, locus) => {\n let devices = [];\n\n if (locus) {\n if (locus && locus.self && locus.self.devices) {\n devices = locus.self.devices;\n }\n\n const foundDevice = devices.find((device) => device.url === deviceUrl);\n\n if (foundDevice && foundDevice.correlationId) {\n return foundDevice.correlationId;\n }\n }\n\n return false;\n};\n\nMeetingsUtil.parseDefaultSiteFromMeetingPreferences = (userPreferences) => {\n let result = '';\n\n if (userPreferences?.sites?.length) {\n const defaultSite = userPreferences.sites.find((site) => site.default);\n\n if (defaultSite) {\n result = defaultSite.siteUrl;\n } else {\n result = userPreferences.sites[0].siteUrl;\n }\n }\n\n return result;\n};\n\n/**\n * Will check to see if the H.264 media codec is supported.\n * @async\n * @private\n * @returns {Promise<boolean>}\n */\nMeetingsUtil.hasH264Codec = async () => {\n let hasCodec = false;\n\n try {\n const pc = new window.RTCPeerConnection();\n const offer = await pc.createOffer({offerToReceiveVideo: true});\n\n if (offer.sdp.match(/^a=rtpmap:\\d+\\s+H264\\/\\d+/m)) {\n hasCodec = true;\n }\n pc.close();\n } catch (error) {\n LoggerProxy.logger.warn(\n 'Meetings:util#hasH264Codec --> Error creating peerConnection for H.264 test.'\n );\n }\n\n return hasCodec;\n};\n\n/**\n * Notifies the user whether or not the H.264\n * codec is present. Will continuously check\n * until max duration.\n * @async\n * @private\n * @param {object} options\n * @param {Number} options.firstChecked Timestamp in milliseconds\n * @param {boolean} options.disableNotifications Default is false. Boolean to enable/disable notification and events\n * @returns {undefined}\n */\nMeetingsUtil.checkH264Support = async function checkH264Support(options: {\n firstChecked: number;\n disableNotifications: boolean;\n}) {\n const {hasH264Codec} = MeetingsUtil;\n const {firstChecked, disableNotifications} = options || {};\n const delay = 5e3; // ms\n const maxDuration = 3e5; // ms\n const shouldTrigger = firstChecked === undefined;\n const shouldStopChecking = firstChecked && Date.now() - firstChecked >= maxDuration;\n\n // Disable notifications and start H.264 download only\n if (disableNotifications) {\n hasH264Codec();\n\n return;\n }\n\n // Codec loaded trigger event notification\n if (await hasH264Codec()) {\n Trigger.trigger(\n this,\n {\n file: 'meetings/util',\n function: 'checkH264Support',\n },\n EVENT_TRIGGERS.MEDIA_CODEC_LOADED\n );\n LoggerProxy.logger.log('Meetings:util#checkH264Support --> H264 codec loaded successfully.');\n\n return;\n }\n\n // Stop checking if past the timelimit\n if (shouldStopChecking) {\n LoggerProxy.logger.error(\n 'Meetings:util#checkH264Support --> Timed out waiting for H264 codec to load.'\n );\n\n return;\n }\n\n // Trigger only once\n if (shouldTrigger) {\n Trigger.trigger(\n this,\n {\n file: 'meetings/util',\n function: 'checkH264Support',\n },\n EVENT_TRIGGERS.MEDIA_CODEC_MISSING\n );\n LoggerProxy.logger.log('Meetings:util#checkH264Support --> H264 codec is missing.');\n }\n\n // Keep checking in intervals to see if codec loaded\n window.setTimeout(() => {\n const timestamp = firstChecked || Date.now();\n\n MeetingsUtil.checkH264Support.call(this, {firstChecked: timestamp});\n }, delay);\n};\n\n/**\n * get device from locus data\n * @param {Object} newLocus new locus data\n * @param {String} deviceUrl current device url\n * @returns {Object}\n */\nMeetingsUtil.getThisDevice = (newLocus: any, deviceUrl: string) => {\n if (newLocus?.self?.devices?.length > 0) {\n return newLocus.self.devices.find((device) => device.url === deviceUrl);\n }\n\n return null;\n};\n\n/**\n * get self device joined status from locus data\n * @param {Object} meeting current meeting data\n * @param {Object} newLocus new locus data\n * @param {String} deviceUrl current device url\n * @returns {Object}\n */\nMeetingsUtil.joinedOnThisDevice = (meeting: any, newLocus: any, deviceUrl: string) => {\n const thisDevice = MeetingsUtil.getThisDevice(newLocus, deviceUrl);\n if (thisDevice) {\n if (!thisDevice.correlationId || meeting?.correlationId === thisDevice.correlationId) {\n return (\n thisDevice.state === _JOINED_ ||\n (thisDevice.state === _LEFT_ && thisDevice.reason === _MOVED_)\n );\n }\n }\n\n return false;\n};\n\n/**\n * check the new locus is breakout session's one or not\n * @param {Object} newLocus new locus data\n * @returns {boolean}\n * @private\n */\nMeetingsUtil.isBreakoutLocusDTO = (newLocus: any) => {\n return newLocus?.controls?.breakout?.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT;\n};\n\n/**\n * check the locus is valid breakout locus or not\n * @param {Object} locus\n * @returns {boolean}\n * @private\n */\nMeetingsUtil.isValidBreakoutLocus = (locus: any) => {\n const inActiveStatus = locus?.fullState?.state === LOCUS.STATE.INACTIVE;\n const isLocusAsBreakout = MeetingsUtil.isBreakoutLocusDTO(locus);\n const selfJoined = locus.self?.state === _JOINED_;\n\n return isLocusAsBreakout && !inActiveStatus && selfJoined;\n};\nexport default MeetingsUtil;\n"],"mappings":"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"}
|
package/dist/member/index.js
CHANGED
@@ -6,6 +6,7 @@ _Object$defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
7
7
|
});
|
8
8
|
exports.default = void 0;
|
9
|
+
var _set = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/set"));
|
9
10
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
10
11
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
11
12
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
@@ -32,6 +33,9 @@ var Member = exports.default = /*#__PURE__*/function () {
|
|
32
33
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
33
34
|
(0, _classCallCheck2.default)(this, Member);
|
34
35
|
(0, _defineProperty2.default)(this, "associatedUser", void 0);
|
36
|
+
// deprecated, use associatedUsers instead
|
37
|
+
(0, _defineProperty2.default)(this, "associatedUsers", void 0);
|
38
|
+
// users associated with this device, empty if this member is not a device
|
35
39
|
(0, _defineProperty2.default)(this, "canReclaimHost", void 0);
|
36
40
|
(0, _defineProperty2.default)(this, "id", void 0);
|
37
41
|
(0, _defineProperty2.default)(this, "isAudioMuted", void 0);
|
@@ -50,6 +54,8 @@ var Member = exports.default = /*#__PURE__*/function () {
|
|
50
54
|
(0, _defineProperty2.default)(this, "isRecording", void 0);
|
51
55
|
(0, _defineProperty2.default)(this, "isRemovable", void 0);
|
52
56
|
(0, _defineProperty2.default)(this, "isSelf", void 0);
|
57
|
+
(0, _defineProperty2.default)(this, "isPairedWithSelf", void 0);
|
58
|
+
// true for a device that we are paired with
|
53
59
|
(0, _defineProperty2.default)(this, "isBrb", void 0);
|
54
60
|
(0, _defineProperty2.default)(this, "isUser", void 0);
|
55
61
|
(0, _defineProperty2.default)(this, "isVideoMuted", void 0);
|
@@ -63,6 +69,7 @@ var Member = exports.default = /*#__PURE__*/function () {
|
|
63
69
|
(0, _defineProperty2.default)(this, "supportLiveAnnotation", void 0);
|
64
70
|
(0, _defineProperty2.default)(this, "type", void 0);
|
65
71
|
(0, _defineProperty2.default)(this, "namespace", _constants.MEETINGS);
|
72
|
+
(0, _defineProperty2.default)(this, "pairedWith", void 0);
|
66
73
|
/**
|
67
74
|
* @instance
|
68
75
|
* @type {Boolean}
|
@@ -200,13 +207,23 @@ var Member = exports.default = /*#__PURE__*/function () {
|
|
200
207
|
*/
|
201
208
|
this.isUser = null;
|
202
209
|
/**
|
210
|
+
* Deprecated: use associatedUsers instead
|
203
211
|
* Is this member associated to another user by way of pairing (typical of devices)
|
204
212
|
* @instance
|
205
|
-
* @type {
|
213
|
+
* @type {MemberId|null}
|
214
|
+
* @deprecated
|
206
215
|
* @public
|
207
216
|
* @memberof Member
|
208
217
|
*/
|
209
218
|
this.associatedUser = null;
|
219
|
+
/**
|
220
|
+
* Is this member associated to another user by way of pairing (typical of devices)
|
221
|
+
* @instance
|
222
|
+
* @type {String}
|
223
|
+
* @public
|
224
|
+
* @memberof Member
|
225
|
+
*/
|
226
|
+
this.associatedUsers = new _set.default();
|
210
227
|
/**
|
211
228
|
* @instance
|
212
229
|
* @type {Boolean}
|
@@ -265,6 +282,14 @@ var Member = exports.default = /*#__PURE__*/function () {
|
|
265
282
|
*/
|
266
283
|
this.isPresenterAssignmentProhibited = null;
|
267
284
|
|
285
|
+
/**
|
286
|
+
* @instance
|
287
|
+
* @type {Boolean}
|
288
|
+
* @public
|
289
|
+
* @memberof Member
|
290
|
+
*/
|
291
|
+
this.isPairedWithSelf = false;
|
292
|
+
|
268
293
|
/**
|
269
294
|
* @instance
|
270
295
|
* @type {IExternalRoles}
|
@@ -272,7 +297,10 @@ var Member = exports.default = /*#__PURE__*/function () {
|
|
272
297
|
* @memberof Member
|
273
298
|
*/
|
274
299
|
this.roles = null;
|
275
|
-
|
300
|
+
this.pairedWith = {
|
301
|
+
participantUrl: undefined,
|
302
|
+
memberId: undefined
|
303
|
+
};
|
276
304
|
/**
|
277
305
|
* @instance
|
278
306
|
* @type {IMediaStatus}
|
@@ -303,6 +331,7 @@ var Member = exports.default = /*#__PURE__*/function () {
|
|
303
331
|
value: function processParticipant(participant) {
|
304
332
|
this.participant = participant;
|
305
333
|
if (participant) {
|
334
|
+
this.processPairedDevice(participant);
|
306
335
|
this.canReclaimHost = _util.default.canReclaimHost(participant);
|
307
336
|
this.id = _util.default.extractId(participant);
|
308
337
|
this.name = _util.default.extractName(participant);
|
@@ -326,6 +355,20 @@ var Member = exports.default = /*#__PURE__*/function () {
|
|
326
355
|
}
|
327
356
|
}
|
328
357
|
|
358
|
+
/**
|
359
|
+
* Checks if the participant is paired with another device
|
360
|
+
*
|
361
|
+
* @param {any} participant the locus participant object
|
362
|
+
* @returns {void}
|
363
|
+
*/
|
364
|
+
}, {
|
365
|
+
key: "processPairedDevice",
|
366
|
+
value: function processPairedDevice(participant) {
|
367
|
+
// we can't populate this.pairedWith.memberId here because the member for that device might not yet exist
|
368
|
+
// so only populating the participantUrl and memberId will be set later
|
369
|
+
this.pairedWith.participantUrl = _util.default.extractPairedWithParticipantUrl(participant);
|
370
|
+
}
|
371
|
+
|
329
372
|
/**
|
330
373
|
* Use the members options and participant values to set on the member
|
331
374
|
* @param {Object} participant the locus participant object
|
@@ -444,8 +487,6 @@ var Member = exports.default = /*#__PURE__*/function () {
|
|
444
487
|
value: function processIsContentSharing(participant, sharingId) {
|
445
488
|
if (_util.default.isUser(participant)) {
|
446
489
|
this.isContentSharing = _util.default.isSame(participant, sharingId);
|
447
|
-
} else if (_util.default.isDevice(participant)) {
|
448
|
-
this.isContentSharing = _util.default.isAssociatedSame(participant, sharingId);
|
449
490
|
}
|
450
491
|
}
|
451
492
|
|
@@ -476,9 +517,6 @@ var Member = exports.default = /*#__PURE__*/function () {
|
|
476
517
|
value: function processIsSelf(participant, selfId) {
|
477
518
|
if (_util.default.isUser(participant)) {
|
478
519
|
this.isSelf = _util.default.isSame(participant, selfId);
|
479
|
-
} else if (_util.default.isDevice(participant)) {
|
480
|
-
this.isSelf = _util.default.isAssociatedSame(participant, selfId);
|
481
|
-
this.associatedUser = selfId;
|
482
520
|
}
|
483
521
|
}
|
484
522
|
|
@@ -495,8 +533,6 @@ var Member = exports.default = /*#__PURE__*/function () {
|
|
495
533
|
value: function processIsHost(participant, hostId) {
|
496
534
|
if (_util.default.isUser(participant)) {
|
497
535
|
this.isHost = _util.default.isSame(participant, hostId);
|
498
|
-
} else if (_util.default.isDevice(participant)) {
|
499
|
-
this.isHost = _util.default.isAssociatedSame(participant, hostId);
|
500
536
|
}
|
501
537
|
}
|
502
538
|
|
package/dist/member/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_constants","require","_util","_interopRequireDefault","Member","exports","default","participant","options","arguments","length","undefined","_classCallCheck2","_defineProperty2","MEETINGS","canReclaimHost","id","name","isAudioMuted","isVideoMuted","isHandRaised","supportsBreakouts","supportLiveAnnotation","isSelf","isHost","isGuest","isInLobby","isInMeeting","isNotAdmitted","isContentSharing","status","isDevice","isUser","associatedUser","isRecording","isMutable","isRemovable","isBrb","type","isModerator","isModeratorAssignmentProhibited","isPresenterAssignmentProhibited","roles","mediaStatus","audio","video","processParticipant","processParticipantOptions","processMember","_createClass2","key","value","MemberUtil","extractId","extractName","isBreakoutsSupported","supportsInterpretation","isInterpretationSupported","isLiveAnnotationSupported","processStatus","processRoles","processIsSelf","selfId","processIsHost","hostId","processIsContentSharing","contentSharingId","processType","processIsRecording","recordingId","extractMediaStatus","extractStatus","_IN_LOBBY_","_IN_MEETING_","_NOT_IN_MEETING_","setIsContentSharing","flag","setIsHost","setIsSelf","sharingId","isSame","isAssociatedSame","extractControlRoles"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\nimport {MEETINGS, _IN_LOBBY_, _NOT_IN_MEETING_, _IN_MEETING_} from '../constants';\nimport {IExternalRoles, IMediaStatus, ParticipantWithRoles} from './types';\n\nimport MemberUtil from './util';\n\n/**\n * @class Member\n */\nexport default class Member {\n associatedUser: any;\n canReclaimHost: boolean;\n id: any;\n isAudioMuted: any;\n isContentSharing: any;\n isDevice: any;\n isGuest: any;\n isHandRaised: any;\n isHost: any;\n isInLobby: any;\n isInMeeting: any;\n isModerator: any;\n isModeratorAssignmentProhibited: any;\n isPresenterAssignmentProhibited: any;\n isMutable: any;\n isNotAdmitted: any;\n isRecording: any;\n isRemovable: any;\n isSelf: any;\n isBrb: boolean;\n isUser: any;\n isVideoMuted: any;\n roles: IExternalRoles;\n mediaStatus: IMediaStatus;\n name: any;\n participant: any;\n status: any;\n supportsBreakouts: boolean;\n supportsInterpretation: boolean;\n supportLiveAnnotation: boolean;\n type: any;\n namespace = MEETINGS;\n\n /**\n * @param {Object} participant - the locus participant\n * @param {Object} [options] - constructor params\n * @param {String} options.selfId\n * @param {String} options.hostId\n * @param {String} options.contentSharingId\n * @param {String} options.type\n * @returns {Member}\n * @memberof Member\n */\n constructor(\n participant: object,\n options:\n | {\n selfId: string;\n hostId: string;\n contentSharingId: string;\n type: string;\n }\n | any = {}\n ) {\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.canReclaimHost = false;\n /**\n * The server participant object\n * @instance\n * @type {Object}\n * @private\n * @memberof Member\n */\n this.participant = null;\n /**\n * The member id\n * @instance\n * @type {String}\n * @public\n * @memberof Member\n */\n this.id = null;\n /**\n * The member name\n * @instance\n * @type {String}\n * @public\n * @memberof Member\n */\n this.name = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isAudioMuted = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isVideoMuted = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isHandRaised = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.supportsBreakouts = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.supportLiveAnnotation = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isSelf = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isHost = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isGuest = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isInLobby = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isInMeeting = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isNotAdmitted = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isContentSharing = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.status = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isDevice = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isUser = null;\n /**\n * Is this member associated to another user by way of pairing (typical of devices)\n * @instance\n * @type {String}\n * @public\n * @memberof Member\n */\n this.associatedUser = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isRecording = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isMutable = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isRemovable = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isBrb = false;\n /**\n * @instance\n * @type {String}\n * @private\n * @memberof Member\n */\n this.type = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isModerator = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isModeratorAssignmentProhibited = null;\n\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isPresenterAssignmentProhibited = null;\n\n /**\n * @instance\n * @type {IExternalRoles}\n * @public\n * @memberof Member\n */\n this.roles = null;\n\n /**\n * @instance\n * @type {IMediaStatus}\n * @public\n * @memberof Member\n * @example {audio: MediaStatus.RECVONLY, video: MediaStatus.SENDRECV}\n */\n this.mediaStatus = {\n audio: null,\n video: null,\n };\n // TODO: more participant types\n // such as native client, web client, is a device, what type of phone, etc\n this.processParticipant(participant);\n this.processParticipantOptions(participant, options);\n this.processMember();\n }\n\n /**\n * set all the participant values extracted directly from locus participant\n * @param {Object} participant the locus participant object\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processParticipant(participant: object) {\n this.participant = participant;\n if (participant) {\n this.canReclaimHost = MemberUtil.canReclaimHost(participant);\n this.id = MemberUtil.extractId(participant);\n this.name = MemberUtil.extractName(participant);\n this.isAudioMuted = MemberUtil.isAudioMuted(participant);\n this.isVideoMuted = MemberUtil.isVideoMuted(participant);\n this.isHandRaised = MemberUtil.isHandRaised(participant);\n this.supportsBreakouts = MemberUtil.isBreakoutsSupported(participant);\n this.supportsInterpretation = MemberUtil.isInterpretationSupported(participant);\n this.supportLiveAnnotation = MemberUtil.isLiveAnnotationSupported(participant);\n this.isGuest = MemberUtil.isGuest(participant);\n this.isBrb = MemberUtil.isBrb(participant);\n this.isUser = MemberUtil.isUser(participant);\n this.isDevice = MemberUtil.isDevice(participant);\n this.isModerator = MemberUtil.isModerator(participant);\n this.isModeratorAssignmentProhibited =\n MemberUtil.isModeratorAssignmentProhibited(participant);\n this.isPresenterAssignmentProhibited =\n MemberUtil.isPresenterAssignmentProhibited(participant);\n this.processStatus(participant);\n this.processRoles(participant as ParticipantWithRoles);\n // must be done last\n this.isNotAdmitted = MemberUtil.isNotAdmitted(participant, this.isGuest, this.status);\n }\n }\n\n /**\n * Use the members options and participant values to set on the member\n * @param {Object} participant the locus participant object\n * @param {Object} options the passed in options, what was set on members\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processParticipantOptions(participant: object, options: any) {\n if (participant && options) {\n this.processIsSelf(participant, options.selfId);\n this.processIsHost(participant, options.hostId);\n this.processIsContentSharing(participant, options.contentSharingId);\n this.processType(options.type);\n this.processIsRecording(participant, options.recordingId);\n }\n }\n\n /**\n * processes what already exists on the member to determine other info about the member\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processMember() {\n // must occur after self, guest, meeting, and type properties are calculated\n this.isRemovable = MemberUtil.isRemovable(\n this.isSelf,\n this.isGuest,\n this.isInMeeting,\n this.type\n );\n // must occur after self, device, meeting, mute status, and type properties are calculated\n this.isMutable = MemberUtil.isMutable(\n this.isSelf,\n this.isDevice,\n this.isInMeeting,\n this.isAudioMuted,\n this.type\n );\n\n this.mediaStatus = MemberUtil.extractMediaStatus(this.participant);\n }\n\n /**\n * set the status on member object\n * @param {Object} participant the locus participant object\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processStatus(participant: object) {\n this.status = MemberUtil.extractStatus(participant);\n switch (this.status) {\n case _IN_LOBBY_:\n this.isInLobby = true;\n this.isInMeeting = false;\n break;\n case _IN_MEETING_:\n this.isInLobby = false;\n this.isInMeeting = true;\n break;\n case _NOT_IN_MEETING_:\n this.isInLobby = false;\n this.isInMeeting = false;\n break;\n default:\n this.isInLobby = false;\n this.isInMeeting = false;\n }\n }\n\n /**\n * set the isContentSharing on member\n * @param {Boolean} flag\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public setIsContentSharing(flag: boolean) {\n this.isContentSharing = flag;\n }\n\n /**\n * set the isHost on member\n * @param {Boolean} flag\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public setIsHost(flag: boolean) {\n this.isHost = flag;\n }\n\n /**\n * set the isSelf on member\n * @param {Boolean} flag\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public setIsSelf(flag: boolean) {\n this.isSelf = flag;\n }\n\n /**\n * determine if this member is content sharing\n * @param {Object} participant\n * @param {String} sharingId\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public processIsContentSharing(participant: object, sharingId: string) {\n if (MemberUtil.isUser(participant)) {\n this.isContentSharing = MemberUtil.isSame(participant, sharingId);\n } else if (MemberUtil.isDevice(participant)) {\n this.isContentSharing = MemberUtil.isAssociatedSame(participant, sharingId);\n }\n }\n\n /**\n * Determine if this member is recording\n * @param {Object} participant\n * @param {String} recordingId\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public processIsRecording(participant: object, recordingId: string) {\n this.isRecording = MemberUtil.isSame(participant, recordingId);\n }\n\n /**\n * determine if this member is the self\n * @param {Object} participant\n * @param {String} selfId\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processIsSelf(participant: object, selfId: string) {\n if (MemberUtil.isUser(participant)) {\n this.isSelf = MemberUtil.isSame(participant, selfId);\n } else if (MemberUtil.isDevice(participant)) {\n this.isSelf = MemberUtil.isAssociatedSame(participant, selfId);\n this.associatedUser = selfId;\n }\n }\n\n /**\n * determine if this member is the host\n * @param {Object} participant\n * @param {String} hostId\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processIsHost(participant: object, hostId: string) {\n if (MemberUtil.isUser(participant)) {\n this.isHost = MemberUtil.isSame(participant, hostId);\n } else if (MemberUtil.isDevice(participant)) {\n this.isHost = MemberUtil.isAssociatedSame(participant, hostId);\n }\n }\n\n /**\n * process the roles that have been applied to this member\n * @param {Object} participant\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processRoles(participant: ParticipantWithRoles) {\n this.roles = MemberUtil.extractControlRoles(participant);\n }\n\n /**\n * set the type for the member, could be MEETING or CALL\n * @param {String} type\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processType(type: string) {\n this.type = type;\n }\n}\n"],"mappings":";;;;;;;;;;;AAGA,IAAAA,UAAA,GAAAC,OAAA;AAGA,IAAAC,KAAA,GAAAC,sBAAA,CAAAF,OAAA;AANA;AACA;AACA;AAMA;AACA;AACA;AAFA,IAGqBG,MAAM,GAAAC,OAAA,CAAAC,OAAA;EAkCzB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAAAF,OACEG,WAAmB,EASnB;IAAA,IARAC,OAOO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAAA,IAAAG,gBAAA,CAAAN,OAAA,QAAAF,MAAA;IAAA,IAAAS,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA,qBArBFQ,mBAAQ;IAuBlB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,cAAc,GAAG,KAAK;IAC3B;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACR,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACS,EAAE,GAAG,IAAI;IACd;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,IAAI,GAAG,IAAI;IAChB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,YAAY,GAAG,IAAI;IACxB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,YAAY,GAAG,IAAI;IACxB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,YAAY,GAAG,IAAI;IACxB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,iBAAiB,GAAG,IAAI;IAC7B;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,qBAAqB,GAAG,IAAI;IACjC;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,OAAO,GAAG,IAAI;IACnB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,SAAS,GAAG,IAAI;IACrB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,aAAa,GAAG,IAAI;IACzB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,gBAAgB,GAAG,IAAI;IAC5B;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,QAAQ,GAAG,IAAI;I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"}
|
1
|
+
{"version":3,"names":["_constants","require","_util","_interopRequireDefault","Member","exports","default","participant","options","arguments","length","undefined","_classCallCheck2","_defineProperty2","MEETINGS","canReclaimHost","id","name","isAudioMuted","isVideoMuted","isHandRaised","supportsBreakouts","supportLiveAnnotation","isSelf","isHost","isGuest","isInLobby","isInMeeting","isNotAdmitted","isContentSharing","status","isDevice","isUser","associatedUser","associatedUsers","_set","isRecording","isMutable","isRemovable","isBrb","type","isModerator","isModeratorAssignmentProhibited","isPresenterAssignmentProhibited","isPairedWithSelf","roles","pairedWith","participantUrl","memberId","mediaStatus","audio","video","processParticipant","processParticipantOptions","processMember","_createClass2","key","value","processPairedDevice","MemberUtil","extractId","extractName","isBreakoutsSupported","supportsInterpretation","isInterpretationSupported","isLiveAnnotationSupported","processStatus","processRoles","extractPairedWithParticipantUrl","processIsSelf","selfId","processIsHost","hostId","processIsContentSharing","contentSharingId","processType","processIsRecording","recordingId","extractMediaStatus","extractStatus","_IN_LOBBY_","_IN_MEETING_","_NOT_IN_MEETING_","setIsContentSharing","flag","setIsHost","setIsSelf","sharingId","isSame","extractControlRoles"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\nimport {MEETINGS, _IN_LOBBY_, _NOT_IN_MEETING_, _IN_MEETING_, _OBSERVE_} from '../constants';\nimport {IExternalRoles, IMediaStatus, Participant, ParticipantUrl} from './types';\n\nimport MemberUtil from './util';\n\nexport type MemberId = string;\n/**\n * @class Member\n */\nexport default class Member {\n associatedUser: MemberId | null; // deprecated, use associatedUsers instead\n associatedUsers: Set<MemberId>; // users associated with this device, empty if this member is not a device\n canReclaimHost: boolean;\n id: MemberId;\n isAudioMuted: any;\n isContentSharing: any;\n isDevice: any;\n isGuest: any;\n isHandRaised: any;\n isHost: any;\n isInLobby: any;\n isInMeeting: any;\n isModerator: any;\n isModeratorAssignmentProhibited: any;\n isPresenterAssignmentProhibited: any;\n isMutable: any;\n isNotAdmitted: any;\n isRecording: any;\n isRemovable: any;\n isSelf: any;\n isPairedWithSelf: boolean; // true for a device that we are paired with\n isBrb: boolean;\n isUser: any;\n isVideoMuted: any;\n roles: IExternalRoles;\n mediaStatus: IMediaStatus;\n name: any;\n participant: any;\n status: any;\n supportsBreakouts: boolean;\n supportsInterpretation: boolean;\n supportLiveAnnotation: boolean;\n type: any;\n namespace = MEETINGS;\n pairedWith: {\n participantUrl?: ParticipantUrl;\n memberId?: MemberId;\n };\n\n /**\n * @param {Object} participant - the locus participant\n * @param {Object} [options] - constructor params\n * @param {String} options.selfId\n * @param {String} options.hostId\n * @param {String} options.contentSharingId\n * @param {String} options.type\n * @returns {Member}\n * @memberof Member\n */\n constructor(\n participant: Participant,\n options:\n | {\n selfId: string;\n hostId: string;\n contentSharingId: string;\n type: string;\n }\n | any = {}\n ) {\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.canReclaimHost = false;\n /**\n * The server participant object\n * @instance\n * @type {Object}\n * @private\n * @memberof Member\n */\n this.participant = null;\n /**\n * The member id\n * @instance\n * @type {String}\n * @public\n * @memberof Member\n */\n this.id = null;\n /**\n * The member name\n * @instance\n * @type {String}\n * @public\n * @memberof Member\n */\n this.name = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isAudioMuted = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isVideoMuted = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isHandRaised = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.supportsBreakouts = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.supportLiveAnnotation = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isSelf = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isHost = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isGuest = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isInLobby = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isInMeeting = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isNotAdmitted = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isContentSharing = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.status = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isDevice = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isUser = null;\n /**\n * Deprecated: use associatedUsers instead\n * Is this member associated to another user by way of pairing (typical of devices)\n * @instance\n * @type {MemberId|null}\n * @deprecated\n * @public\n * @memberof Member\n */\n this.associatedUser = null;\n /**\n * Is this member associated to another user by way of pairing (typical of devices)\n * @instance\n * @type {String}\n * @public\n * @memberof Member\n */\n this.associatedUsers = new Set<MemberId>();\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isRecording = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isMutable = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isRemovable = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isBrb = false;\n /**\n * @instance\n * @type {String}\n * @private\n * @memberof Member\n */\n this.type = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isModerator = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isModeratorAssignmentProhibited = null;\n\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isPresenterAssignmentProhibited = null;\n\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isPairedWithSelf = false;\n\n /**\n * @instance\n * @type {IExternalRoles}\n * @public\n * @memberof Member\n */\n this.roles = null;\n\n this.pairedWith = {\n participantUrl: undefined,\n memberId: undefined,\n };\n /**\n * @instance\n * @type {IMediaStatus}\n * @public\n * @memberof Member\n * @example {audio: MediaStatus.RECVONLY, video: MediaStatus.SENDRECV}\n */\n this.mediaStatus = {\n audio: null,\n video: null,\n };\n // TODO: more participant types\n // such as native client, web client, is a device, what type of phone, etc\n this.processParticipant(participant);\n this.processParticipantOptions(participant, options);\n this.processMember();\n }\n\n /**\n * set all the participant values extracted directly from locus participant\n * @param {Object} participant the locus participant object\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processParticipant(participant: Participant) {\n this.participant = participant;\n if (participant) {\n this.processPairedDevice(participant);\n this.canReclaimHost = MemberUtil.canReclaimHost(participant);\n this.id = MemberUtil.extractId(participant);\n this.name = MemberUtil.extractName(participant);\n this.isAudioMuted = MemberUtil.isAudioMuted(participant);\n this.isVideoMuted = MemberUtil.isVideoMuted(participant);\n this.isHandRaised = MemberUtil.isHandRaised(participant);\n this.supportsBreakouts = MemberUtil.isBreakoutsSupported(participant);\n this.supportsInterpretation = MemberUtil.isInterpretationSupported(participant);\n this.supportLiveAnnotation = MemberUtil.isLiveAnnotationSupported(participant);\n this.isGuest = MemberUtil.isGuest(participant);\n this.isBrb = MemberUtil.isBrb(participant);\n this.isUser = MemberUtil.isUser(participant);\n this.isDevice = MemberUtil.isDevice(participant);\n this.isModerator = MemberUtil.isModerator(participant);\n this.isModeratorAssignmentProhibited =\n MemberUtil.isModeratorAssignmentProhibited(participant);\n this.isPresenterAssignmentProhibited =\n MemberUtil.isPresenterAssignmentProhibited(participant);\n this.processStatus(participant);\n this.processRoles(participant);\n // must be done last\n this.isNotAdmitted = MemberUtil.isNotAdmitted(participant, this.isGuest, this.status);\n }\n }\n\n /**\n * Checks if the participant is paired with another device\n *\n * @param {any} participant the locus participant object\n * @returns {void}\n */\n processPairedDevice(participant: Participant) {\n // we can't populate this.pairedWith.memberId here because the member for that device might not yet exist\n // so only populating the participantUrl and memberId will be set later\n this.pairedWith.participantUrl = MemberUtil.extractPairedWithParticipantUrl(participant);\n }\n\n /**\n * Use the members options and participant values to set on the member\n * @param {Object} participant the locus participant object\n * @param {Object} options the passed in options, what was set on members\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processParticipantOptions(participant: Participant, options: any) {\n if (participant && options) {\n this.processIsSelf(participant, options.selfId);\n this.processIsHost(participant, options.hostId);\n this.processIsContentSharing(participant, options.contentSharingId);\n this.processType(options.type);\n this.processIsRecording(participant, options.recordingId);\n }\n }\n\n /**\n * processes what already exists on the member to determine other info about the member\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processMember() {\n // must occur after self, guest, meeting, and type properties are calculated\n this.isRemovable = MemberUtil.isRemovable(\n this.isSelf,\n this.isGuest,\n this.isInMeeting,\n this.type\n );\n // must occur after self, device, meeting, mute status, and type properties are calculated\n this.isMutable = MemberUtil.isMutable(\n this.isSelf,\n this.isDevice,\n this.isInMeeting,\n this.isAudioMuted,\n this.type\n );\n\n this.mediaStatus = MemberUtil.extractMediaStatus(this.participant);\n }\n\n /**\n * set the status on member object\n * @param {Object} participant the locus participant object\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processStatus(participant: Participant) {\n this.status = MemberUtil.extractStatus(participant);\n switch (this.status) {\n case _IN_LOBBY_:\n this.isInLobby = true;\n this.isInMeeting = false;\n break;\n case _IN_MEETING_:\n this.isInLobby = false;\n this.isInMeeting = true;\n break;\n case _NOT_IN_MEETING_:\n this.isInLobby = false;\n this.isInMeeting = false;\n break;\n default:\n this.isInLobby = false;\n this.isInMeeting = false;\n }\n }\n\n /**\n * set the isContentSharing on member\n * @param {Boolean} flag\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public setIsContentSharing(flag: boolean) {\n this.isContentSharing = flag;\n }\n\n /**\n * set the isHost on member\n * @param {Boolean} flag\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public setIsHost(flag: boolean) {\n this.isHost = flag;\n }\n\n /**\n * set the isSelf on member\n * @param {Boolean} flag\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public setIsSelf(flag: boolean) {\n this.isSelf = flag;\n }\n\n /**\n * determine if this member is content sharing\n * @param {Object} participant\n * @param {String} sharingId\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public processIsContentSharing(participant: Participant, sharingId: string) {\n if (MemberUtil.isUser(participant)) {\n this.isContentSharing = MemberUtil.isSame(participant, sharingId);\n }\n }\n\n /**\n * Determine if this member is recording\n * @param {Object} participant\n * @param {String} recordingId\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public processIsRecording(participant: Participant, recordingId: string) {\n this.isRecording = MemberUtil.isSame(participant, recordingId);\n }\n\n /**\n * determine if this member is the self\n * @param {Object} participant\n * @param {String} selfId\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processIsSelf(participant: Participant, selfId: string) {\n if (MemberUtil.isUser(participant)) {\n this.isSelf = MemberUtil.isSame(participant, selfId);\n }\n }\n\n /**\n * determine if this member is the host\n * @param {Object} participant\n * @param {String} hostId\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processIsHost(participant: Participant, hostId: string) {\n if (MemberUtil.isUser(participant)) {\n this.isHost = MemberUtil.isSame(participant, hostId);\n }\n }\n\n /**\n * process the roles that have been applied to this member\n * @param {Object} participant\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processRoles(participant: Participant) {\n this.roles = MemberUtil.extractControlRoles(participant);\n }\n\n /**\n * set the type for the member, could be MEETING or CALL\n * @param {String} type\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processType(type: string) {\n this.type = type;\n }\n}\n"],"mappings":";;;;;;;;;;;;AAGA,IAAAA,UAAA,GAAAC,OAAA;AAGA,IAAAC,KAAA,GAAAC,sBAAA,CAAAF,OAAA;AANA;AACA;AACA;AAOA;AACA;AACA;AAFA,IAGqBG,MAAM,GAAAC,OAAA,CAAAC,OAAA;EAwCzB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,SAAAF,OACEG,WAAwB,EASxB;IAAA,IARAC,OAOO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAAA,IAAAG,gBAAA,CAAAN,OAAA,QAAAF,MAAA;IAAA,IAAAS,gBAAA,CAAAP,OAAA;IA1DmB;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IACD;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAmBL;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA;IAAA,IAAAO,gBAAA,CAAAP,OAAA,qBAafQ,mBAAQ;IAAA,IAAAD,gBAAA,CAAAP,OAAA;IA2BlB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACS,cAAc,GAAG,KAAK;IAC3B;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACR,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACS,EAAE,GAAG,IAAI;IACd;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,IAAI,GAAG,IAAI;IAChB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,YAAY,GAAG,IAAI;IACxB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,YAAY,GAAG,IAAI;IACxB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,YAAY,GAAG,IAAI;IACxB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,iBAAiB,GAAG,IAAI;IAC7B;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,qBAAqB,GAAG,IAAI;IACjC;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,OAAO,GAAG,IAAI;IACnB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,SAAS,GAAG,IAAI;IACrB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,aAAa,GAAG,IAAI;IACzB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,gBAAgB,GAAG,IAAI;IAC5B;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,QAAQ,GAAG,IAAI;IACpB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,cAAc,GAAG,IAAI;IAC1B;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,eAAe,GAAG,IAAAC,IAAA,CAAA7B,OAAA,CAAkB,CAAC;IAC1C;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAAC8B,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,SAAS,GAAG,IAAI;IACrB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,KAAK,GAAG,KAAK;IAClB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,IAAI,GAAG,IAAI;IAChB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,+BAA+B,GAAG,IAAI;;IAE3C;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,+BAA+B,GAAG,IAAI;;IAE3C;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,gBAAgB,GAAG,KAAK;;IAE7B;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,KAAK,GAAG,IAAI;IAEjB,IAAI,CAACC,UAAU,GAAG;MAChBC,cAAc,EAAEpC,SAAS;MACzBqC,QAAQ,EAAErC;IACZ,CAAC;IACD;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACsC,WAAW,GAAG;MACjBC,KAAK,EAAE,IAAI;MACXC,KAAK,EAAE;IACT,CAAC;IACD;IACA;IACA,IAAI,CAACC,kBAAkB,CAAC7C,WAA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"}
|
package/dist/member/types.js
CHANGED
@@ -20,4 +20,7 @@ var MediaStatus = exports.MediaStatus = /*#__PURE__*/function (MediaStatus) {
|
|
20
20
|
MediaStatus["UNKNOWN"] = "UNKNOWN";
|
21
21
|
return MediaStatus;
|
22
22
|
}({}); // participant has not added media in the meeting
|
23
|
+
// this is not a complete type, Locus may send more fields
|
24
|
+
// this is not a complete type, Locus may send more fields
|
25
|
+
// this is not a complete type, Locus may send more fields
|
23
26
|
//# sourceMappingURL=types.js.map
|
package/dist/member/types.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["ServerRoles","exports","MediaStatus"],"sources":["types.ts"],"sourcesContent":["export interface IExternalRoles {\n cohost: boolean;\n moderator: boolean;\n presenter: boolean;\n}\n\nexport enum ServerRoles {\n Cohost = 'COHOST',\n Moderator = 'MODERATOR',\n Presenter = 'PRESENTER',\n}\n\nexport type ServerRoleShape = {\n type: ServerRoles;\n hasRole: boolean;\n};\n\
|
1
|
+
{"version":3,"names":["ServerRoles","exports","MediaStatus"],"sources":["types.ts"],"sourcesContent":["export interface IExternalRoles {\n cohost: boolean;\n moderator: boolean;\n presenter: boolean;\n}\n\nexport enum ServerRoles {\n Cohost = 'COHOST',\n Moderator = 'MODERATOR',\n Presenter = 'PRESENTER',\n}\n\nexport type ServerRoleShape = {\n type: ServerRoles;\n hasRole: boolean;\n};\n\n// values are inherited from locus so don't update these\nexport enum MediaStatus {\n RECVONLY = 'RECVONLY', // participant only receiving and not sending\n SENDONLY = 'SENDONLY', // participant only sending and not receiving\n SENDRECV = 'SENDRECV', // participant both sending and receiving\n INACTIVE = 'INACTIVE', // participant is not connected to media source\n UNKNOWN = 'UNKNOWN', // participant has not added media in the meeting\n}\n\nexport interface IMediaStatus {\n audio: MediaStatus;\n video: MediaStatus;\n}\n\nexport type Csi = number;\nexport type Direction = 'inactive' | 'sendrecv' | 'sendonly' | 'recvonly';\nexport type ParticipantUrl = string;\nexport interface MediaSession {\n csi: Csi;\n direction: Direction;\n mediaContent: 'main' | 'slides';\n mediaType: 'audio' | 'video';\n state: string;\n}\n\nexport interface Intent {\n associatedWith: ParticipantUrl;\n id: string;\n type: string; // could be \"WAIT\" or \"OBSERVE\" or other....\n}\nexport interface ParticipantDevice {\n correlationId: string;\n csis: Csi[];\n deviceType: string; // WDM device type, could be \"WEB\", \"TP_ENDPOINT\", \"MAC\" or other things, don't know the full list, so keeping it as string\n intent?: Intent;\n intents: Array<Intent | null>;\n isVideoCallback: boolean;\n mediaSessions: Array<MediaSession>;\n mediaSessionsExternal: boolean;\n state: string; // probably one of MEETING_STATE.STATES\n}\n\n// this is not a complete type, Locus may send more fields\nexport interface ParticipantPerson {\n id: string;\n isExternal: boolean;\n name: string;\n orgId: string;\n}\n\nexport interface ParticipantMediaStatus {\n audioStatus: MediaStatus;\n videoStatus: MediaStatus;\n audioSlidesStatus?: MediaStatus;\n videoSlidesStatus?: MediaStatus;\n csis: Csi[];\n}\n\n// this is not a complete type, Locus may send more fields\nexport interface ParticipantControls {\n role: {\n roles: Array<ServerRoleShape>;\n };\n brb?: {\n enabled: boolean;\n };\n hand: {\n raised: boolean;\n };\n localRecord: {\n recording: boolean;\n };\n}\n\n// this is not a complete type, Locus may send more fields\nexport interface Participant {\n canBeController: boolean;\n controls: ParticipantControls;\n deviceUrl: string;\n devices: Array<ParticipantDevice>;\n guest: boolean;\n id: string;\n identity: string;\n identityTrustLevel: string; // could be 'INTERNAL', 'EXTERNAL' or other....\n isCreator: boolean;\n moderator: boolean; // Locus docs say this is deprecated and role control should be used instead\n moderatorAssignmentNotAllowed: boolean;\n presenterAssignmentNotAllowed: boolean;\n person: ParticipantPerson;\n resourceGuest: boolean;\n state: string; // probably one of MEETING_STATE.STATES\n status: ParticipantMediaStatus;\n type: string;\n url: ParticipantUrl;\n}\n"],"mappings":";;;;;;;IAMYA,WAAW,GAAAC,OAAA,CAAAD,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAWvB;AAAA,IACYE,WAAW,GAAAD,OAAA,CAAAC,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA,OAKA;AAoCvB;AAgBA;AAgBA"}
|