@webex/plugin-meetings 3.12.0-next.8 → 3.12.0-task-refactor.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/annotation/index.js +5 -14
- package/dist/annotation/index.js.map +1 -1
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/config.js +2 -8
- package/dist/config.js.map +1 -1
- package/dist/constants.js +6 -29
- package/dist/constants.js.map +1 -1
- package/dist/hashTree/hashTreeParser.js +29 -1563
- package/dist/hashTree/hashTreeParser.js.map +1 -1
- package/dist/hashTree/types.js +3 -13
- package/dist/hashTree/types.js.map +1 -1
- package/dist/index.js +2 -11
- package/dist/index.js.map +1 -1
- package/dist/interceptors/index.js +0 -7
- package/dist/interceptors/index.js.map +1 -1
- package/dist/interceptors/locusRouteToken.js +5 -27
- package/dist/interceptors/locusRouteToken.js.map +1 -1
- package/dist/interpretation/index.js +2 -2
- package/dist/interpretation/index.js.map +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.js +3 -7
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +247 -642
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/selfUtils.js +0 -1
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/locus-info/types.js.map +1 -1
- package/dist/media/MediaConnectionAwaiter.js +1 -57
- package/dist/media/MediaConnectionAwaiter.js.map +1 -1
- package/dist/media/properties.js +2 -4
- package/dist/media/properties.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +1 -7
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +1036 -1481
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/request.js +0 -50
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js.map +1 -1
- package/dist/meeting/util.js +3 -133
- package/dist/meeting/util.js.map +1 -1
- package/dist/meetings/index.js +59 -142
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/util.js +7 -11
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +0 -10
- package/dist/member/index.js.map +1 -1
- package/dist/member/util.js +0 -10
- package/dist/member/util.js.map +1 -1
- package/dist/metrics/constants.js +1 -7
- package/dist/metrics/constants.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +60 -9
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +0 -11
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +2 -116
- package/dist/multistream/sendSlotManager.js.map +1 -1
- package/dist/reachability/clusterReachability.js +18 -171
- package/dist/reachability/clusterReachability.js.map +1 -1
- package/dist/reachability/index.js +11 -21
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/reachabilityPeerConnection.js +1 -1
- package/dist/reachability/reachabilityPeerConnection.js.map +1 -1
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.js +1 -0
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/types/common/browser-detection.d.ts +0 -1
- package/dist/types/common/events/events-scope.d.ts +0 -1
- package/dist/types/common/events/events.d.ts +0 -1
- package/dist/types/config.d.ts +0 -5
- package/dist/types/constants.d.ts +1 -24
- package/dist/types/hashTree/hashTreeParser.d.ts +11 -260
- package/dist/types/hashTree/types.d.ts +0 -20
- package/dist/types/index.d.ts +0 -1
- package/dist/types/interceptors/index.d.ts +1 -2
- package/dist/types/interceptors/locusRouteToken.d.ts +0 -2
- package/dist/types/locus-info/index.d.ts +47 -68
- package/dist/types/locus-info/types.d.ts +12 -28
- package/dist/types/media/MediaConnectionAwaiter.d.ts +1 -10
- package/dist/types/media/properties.d.ts +1 -2
- package/dist/types/meeting/in-meeting-actions.d.ts +0 -6
- package/dist/types/meeting/index.d.ts +7 -86
- package/dist/types/meeting/request.d.ts +1 -16
- package/dist/types/meeting/request.type.d.ts +0 -5
- package/dist/types/meeting/util.d.ts +0 -31
- package/dist/types/meeting-info/util.d.ts +0 -1
- package/dist/types/meeting-info/utilv2.d.ts +0 -1
- package/dist/types/meetings/index.d.ts +2 -4
- package/dist/types/member/index.d.ts +0 -1
- package/dist/types/member/types.d.ts +4 -4
- package/dist/types/member/util.d.ts +0 -5
- package/dist/types/metrics/constants.d.ts +0 -6
- package/dist/types/multistream/mediaRequestManager.d.ts +23 -0
- package/dist/types/multistream/sendSlotManager.d.ts +1 -23
- package/dist/types/reachability/clusterReachability.d.ts +3 -30
- package/dist/types/reactions/reactions.type.d.ts +0 -1
- package/dist/types/recording-controller/util.d.ts +5 -5
- package/dist/types/roap/index.d.ts +1 -1
- package/dist/webinar/index.js +163 -438
- package/dist/webinar/index.js.map +1 -1
- package/package.json +24 -26
- package/src/annotation/index.ts +7 -27
- package/src/config.ts +0 -5
- package/src/constants.ts +1 -30
- package/src/hashTree/hashTreeParser.ts +25 -1523
- package/src/hashTree/types.ts +1 -24
- package/src/index.ts +1 -8
- package/src/interceptors/index.ts +1 -2
- package/src/interceptors/locusRouteToken.ts +5 -22
- package/src/interpretation/index.ts +2 -2
- package/src/locus-info/controlsUtils.ts +0 -17
- package/src/locus-info/index.ts +213 -707
- package/src/locus-info/selfUtils.ts +0 -1
- package/src/locus-info/types.ts +12 -27
- package/src/media/MediaConnectionAwaiter.ts +1 -41
- package/src/media/properties.ts +1 -3
- package/src/meeting/in-meeting-actions.ts +0 -12
- package/src/meeting/index.ts +84 -461
- package/src/meeting/request.ts +0 -42
- package/src/meeting/request.type.ts +0 -6
- package/src/meeting/util.ts +2 -160
- package/src/meetings/index.ts +60 -180
- package/src/meetings/util.ts +9 -10
- package/src/member/index.ts +0 -10
- package/src/member/util.ts +0 -12
- package/src/metrics/constants.ts +0 -7
- package/src/multistream/mediaRequestManager.ts +54 -4
- package/src/multistream/remoteMediaManager.ts +0 -13
- package/src/multistream/sendSlotManager.ts +3 -97
- package/src/reachability/clusterReachability.ts +27 -153
- package/src/reachability/index.ts +1 -15
- package/src/reachability/reachabilityPeerConnection.ts +1 -3
- package/src/reactions/reactions.type.ts +0 -1
- package/src/reconnection-manager/index.ts +1 -0
- package/src/webinar/index.ts +6 -265
- package/test/unit/spec/annotation/index.ts +7 -69
- package/test/unit/spec/interceptors/locusRouteToken.ts +0 -44
- package/test/unit/spec/locus-info/controlsUtils.js +1 -56
- package/test/unit/spec/locus-info/index.js +90 -1457
- package/test/unit/spec/media/MediaConnectionAwaiter.ts +1 -41
- package/test/unit/spec/media/properties.ts +3 -12
- package/test/unit/spec/meeting/in-meeting-actions.ts +2 -8
- package/test/unit/spec/meeting/index.js +128 -981
- package/test/unit/spec/meeting/request.js +0 -70
- package/test/unit/spec/meeting/utils.js +26 -438
- package/test/unit/spec/meetings/index.js +33 -845
- package/test/unit/spec/meetings/utils.js +1 -51
- package/test/unit/spec/member/index.js +4 -28
- package/test/unit/spec/member/util.js +27 -65
- package/test/unit/spec/multistream/mediaRequestManager.ts +85 -2
- package/test/unit/spec/multistream/remoteMediaManager.ts +0 -30
- package/test/unit/spec/multistream/sendSlotManager.ts +36 -135
- package/test/unit/spec/reachability/clusterReachability.ts +1 -125
- package/test/unit/spec/reachability/index.ts +3 -26
- package/test/unit/spec/reconnection-manager/index.js +8 -4
- package/test/unit/spec/webinar/index.ts +37 -534
- package/dist/aiEnableRequest/index.js +0 -184
- package/dist/aiEnableRequest/index.js.map +0 -1
- package/dist/aiEnableRequest/utils.js +0 -36
- package/dist/aiEnableRequest/utils.js.map +0 -1
- package/dist/hashTree/constants.js +0 -22
- package/dist/hashTree/constants.js.map +0 -1
- package/dist/hashTree/hashTree.js +0 -533
- package/dist/hashTree/hashTree.js.map +0 -1
- package/dist/hashTree/utils.js +0 -69
- package/dist/hashTree/utils.js.map +0 -1
- package/dist/interceptors/constant.js +0 -12
- package/dist/interceptors/constant.js.map +0 -1
- package/dist/interceptors/dataChannelAuthToken.js +0 -290
- package/dist/interceptors/dataChannelAuthToken.js.map +0 -1
- package/dist/interceptors/utils.js +0 -27
- package/dist/interceptors/utils.js.map +0 -1
- package/dist/types/aiEnableRequest/index.d.ts +0 -5
- package/dist/types/aiEnableRequest/utils.d.ts +0 -2
- package/dist/types/hashTree/constants.d.ts +0 -9
- package/dist/types/hashTree/hashTree.d.ts +0 -136
- package/dist/types/hashTree/utils.d.ts +0 -22
- package/dist/types/interceptors/constant.d.ts +0 -5
- package/dist/types/interceptors/dataChannelAuthToken.d.ts +0 -43
- package/dist/types/interceptors/utils.d.ts +0 -1
- package/dist/types/webinar/utils.d.ts +0 -6
- package/dist/webinar/utils.js +0 -25
- package/dist/webinar/utils.js.map +0 -1
- package/src/aiEnableRequest/README.md +0 -84
- package/src/aiEnableRequest/index.ts +0 -170
- package/src/aiEnableRequest/utils.ts +0 -25
- package/src/hashTree/constants.ts +0 -10
- package/src/hashTree/hashTree.ts +0 -480
- package/src/hashTree/utils.ts +0 -62
- package/src/interceptors/constant.ts +0 -6
- package/src/interceptors/dataChannelAuthToken.ts +0 -170
- package/src/interceptors/utils.ts +0 -16
- package/src/webinar/utils.ts +0 -16
- package/test/unit/spec/aiEnableRequest/index.ts +0 -981
- package/test/unit/spec/aiEnableRequest/utils.ts +0 -130
- package/test/unit/spec/hashTree/hashTree.ts +0 -721
- package/test/unit/spec/hashTree/hashTreeParser.ts +0 -3670
- package/test/unit/spec/hashTree/utils.ts +0 -140
- package/test/unit/spec/interceptors/dataChannelAuthToken.ts +0 -210
- package/test/unit/spec/interceptors/utils.ts +0 -75
- package/test/unit/spec/webinar/utils.ts +0 -39
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_webexCore","require","_uuid","_interopRequireDefault","_lodash","_internalPluginLlm","_constants","_collection","_loggerProxy","_utils","Webinar","WebexPlugin","extend","namespace","MEETINGS","collections","webinar","WebinarCollection","props","locusUrl","webcastInstanceUrl","canManageWebcast","selfIsPanelist","selfIsAttendee","practiceSessionEnabled","meetingId","cleanUp","cleanupPSDataChannel","locusUrlUpdate","set","updateWebcastUrl","payload","get","updateCanManageWebcast","updateRoleChanged","oldRoles","newRoles","isPromoted","includes","SELF_ROLES","ATTENDEE","PANELIST","isDemoted","MODERATOR","updateStatusByRole","_ref","meeting","webex","meetings","getMeetingByType","_ID_","shareStatus","SHARE_STATUS","WHITEBOARD_SHARE_ACTIVE","_meeting$locusInfo","_meeting$locusInfo2","locusInfo","updateMediaShares","mediaShares","updatePSDataChannel","isJoinPracticeSessionDataChannel","_this","_asyncToGenerator2","default","_regenerator","mark","_callee","wrap","_context","prev","next","_pendingOnlineListener","internal","llm","off","disconnectLLM","code","reason","LLM_PRACTICE_SESSION","concat","processRelayEvent","stop","ensurePracticeSessionDatachannelToken","_this2","_callee2","isDataChannelTokenEnabled","cachedToken","_refreshResponse$body","refreshResponse","_ref2","datachannelToken","dataChannelTokenType","_t","_context2","sent","abrupt","undefined","getDatachannelToken","DataChannelTokenType","PracticeSession","refreshDataChannelToken","body","setDatachannelToken","LoggerProxy","logger","warn","message","String","_this3","_callee3","invocationSequence","isPracticeSession","_ref3","_ref3$url","url","_ref3$info","_ref3$info2","_ref3$info2$practiceS","practiceSessionDatachannelUrl","practiceSessionDatachannelToken","isCaptionBoxOn","_onDefaultSessionConnected","refreshedPracticeSessionToken","latestPracticeSessionDatachannelUrl","isStillPracticeSession","_context3","_updatePSDataChannelSequence","isJoined","info","voicea","getIsCaptionBoxOn","isConnected","getLocusUrl","getDatachannelUrl","onDefaultSessionConnected","on","registerAndConnect","then","registerAndConnectResult","_this3$webex$internal","_this3$webex$internal2","announce","call","updateSubchannelSubscriptions","subscribe","_promise","resolve","setPracticeSessionState","enabled","request","method","HTTP_VERBS","PATCH","uri","practiceSession","catch","error","updatePracticeSessionStatus","startWebcast","layout","_this4","_callee4","_t2","_t3","_t4","_t5","_t6","_t7","_t8","_t9","_context4","Error","PUT","_defineProperty2","credentials","getUserToken","config","trackingIdPrefix","uuid","v4","toString","authorization","trackingId","HEADERS","CONTENT_TYPE","CONTENT_TYPE_VALUE","APPLICATION_JSON","action","meetingInfo","locusId","correlationId","headers","stopWebcast","_this5","_callee5","_t0","_t1","_t10","_t11","_t12","_t13","_t14","_t15","_context5","queryWebcastLayout","_this6","_callee6","_t16","_t17","_t18","_t19","_t20","_t21","_context6","GET","updateWebcastLayout","_this7","_callee7","_t22","_t23","_t24","_t25","_t26","_t27","_t28","_t29","_context7","videoLayout","contentLayout","syncStageLayout","syncStageInMeeting","viewAllWebcastAttendees","_this8","_callee8","_t30","_t31","_t32","_t33","_t34","_t35","_context8","searchWebcastAttendees","_arguments","arguments","_this9","_callee9","queryString","_t36","_t37","_t38","_t39","_t40","_t41","_context9","length","encodeURIComponent","expelWebcastAttendee","participantId","_this0","_callee0","_t42","_t43","_t44","_t45","_t46","_t47","_context0","DELETE","searchLargeScaleWebinarAttendees","_this1","_callee1","_payload$limit","_meeting$locusInfo3","_meeting$locusInfo3$l","_meeting$locusInfo3$l2","_meeting$locusInfo3$l3","rawParams","attendeeSearchUrl","_t48","_t49","_t50","_t51","_t52","_t53","_context1","search_text","limit","DEFAULT_LARGE_SCALE_WEBINAR_ATTENDEE_SEARCH_LIMIT","links","resources","attendeeSearch","URLSearchParams","sanitizeParams","version","_default","exports"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\nimport {WebexPlugin, config} from '@webex/webex-core';\nimport uuid from 'uuid';\nimport {get} from 'lodash';\nimport {DataChannelTokenType} from '@webex/internal-plugin-llm';\nimport {\n _ID_,\n HEADERS,\n HTTP_VERBS,\n MEETINGS,\n SELF_ROLES,\n SHARE_STATUS,\n DEFAULT_LARGE_SCALE_WEBINAR_ATTENDEE_SEARCH_LIMIT,\n LLM_PRACTICE_SESSION,\n} from '../constants';\n\nimport WebinarCollection from './collection';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {sanitizeParams} from './utils';\n\n/**\n * @class Webinar\n */\nconst Webinar = WebexPlugin.extend({\n namespace: MEETINGS,\n collections: {\n webinar: WebinarCollection,\n },\n\n props: {\n locusUrl: 'string', // appears current webinar's locus url\n webcastInstanceUrl: 'string', // current webinar's webcast instance url\n canManageWebcast: 'boolean', // appears the ability to manage webcast\n selfIsPanelist: 'boolean', // self is panelist\n selfIsAttendee: 'boolean', // self is attendee\n practiceSessionEnabled: 'boolean', // practice session enabled\n meetingId: 'string',\n },\n\n /**\n * Calls this to clean up listeners\n * @returns {void}\n */\n cleanUp() {\n this.cleanupPSDataChannel();\n },\n\n /**\n * Update the current locus url of the webinar\n * @param {string} locusUrl\n * @returns {void}\n */\n locusUrlUpdate(locusUrl) {\n this.set('locusUrl', locusUrl);\n },\n\n /**\n * Update the current webcast instance url of the meeting\n * @param {object} payload\n * @returns {void}\n */\n updateWebcastUrl(payload) {\n this.set('webcastInstanceUrl', get(payload, 'resources.webcastInstance.url'));\n },\n\n /**\n * Update whether self has capability to manage start/stop webcast (only host can manage it)\n * @param {boolean} canManageWebcast\n * @returns {void}\n */\n updateCanManageWebcast(canManageWebcast) {\n this.set('canManageWebcast', canManageWebcast);\n },\n\n /**\n * Updates user roles and manages associated state transitions\n * @param {object} payload\n * @param {string[]} payload.oldRoles - Previous roles of the user\n * @param {string[]} payload.newRoles - New roles of the user\n * @returns {{isPromoted: boolean, isDemoted: boolean}} Role transition states\n */\n updateRoleChanged(payload) {\n const oldRoles = get(payload, 'oldRoles', []);\n const newRoles = get(payload, 'newRoles', []);\n\n const isPromoted =\n oldRoles.includes(SELF_ROLES.ATTENDEE) && newRoles.includes(SELF_ROLES.PANELIST);\n const isDemoted =\n (oldRoles.includes(SELF_ROLES.PANELIST) && newRoles.includes(SELF_ROLES.ATTENDEE)) ||\n (!oldRoles.includes(SELF_ROLES.ATTENDEE) && newRoles.includes(SELF_ROLES.ATTENDEE)); // for attendee just join meeting case\n this.set('selfIsPanelist', newRoles.includes(SELF_ROLES.PANELIST));\n this.set('selfIsAttendee', newRoles.includes(SELF_ROLES.ATTENDEE));\n this.updateCanManageWebcast(newRoles.includes(SELF_ROLES.MODERATOR));\n this.updateStatusByRole({isPromoted, isDemoted});\n\n return {isPromoted, isDemoted};\n },\n\n /**\n * should join practice session data channel or not\n * @param {Object} {isPromoted: boolean, isDemoted: boolean}} Role transition states\n * @returns {void}\n */\n updateStatusByRole({isPromoted, isDemoted}) {\n const meeting = this.webex.meetings.getMeetingByType(_ID_, this.meetingId);\n\n if (\n (isDemoted && meeting?.shareStatus === SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE) ||\n isPromoted\n ) {\n // attendees in webinar should subscribe streaming for whiteboard sharing\n // while panelist still need subscribe native mode so trigger force update here\n meeting?.locusInfo?.updateMediaShares(meeting?.locusInfo?.mediaShares, true);\n }\n\n this.updatePSDataChannel();\n },\n\n /**\n * should join practice session data channel or not\n * @returns {boolean}\n */\n isJoinPracticeSessionDataChannel() {\n return this.selfIsPanelist && this.practiceSessionEnabled;\n },\n\n /**\n * Disconnects the practice session data channel and removes its relay listener.\n * @returns {Promise<void>}\n */\n async cleanupPSDataChannel() {\n if (this._pendingOnlineListener) {\n // @ts-ignore - Fix type\n this.webex.internal.llm.off('online', this._pendingOnlineListener);\n this._pendingOnlineListener = null;\n }\n\n const meeting = this.webex.meetings.getMeetingByType(_ID_, this.meetingId);\n\n // @ts-ignore - Fix type\n await this.webex.internal.llm.disconnectLLM(\n {\n code: 3050,\n reason: 'done (permanent)',\n },\n LLM_PRACTICE_SESSION\n );\n // @ts-ignore - Fix type\n this.webex.internal.llm.off(\n `event:relay.event:${LLM_PRACTICE_SESSION}`,\n meeting?.processRelayEvent\n );\n },\n\n /**\n * Ensures practice-session token exists before registering the practice LLM channel.\n * @param {object} meeting\n * @returns {Promise<string|undefined>}\n */\n async ensurePracticeSessionDatachannelToken(meeting) {\n // @ts-ignore\n const isDataChannelTokenEnabled = await this.webex.internal.llm.isDataChannelTokenEnabled();\n\n if (!isDataChannelTokenEnabled) {\n return undefined;\n }\n\n // @ts-ignore\n const cachedToken = this.webex.internal.llm.getDatachannelToken(\n DataChannelTokenType.PracticeSession\n );\n\n if (cachedToken) {\n return cachedToken;\n }\n\n try {\n const refreshResponse = await meeting.refreshDataChannelToken();\n const {datachannelToken, dataChannelTokenType} = refreshResponse?.body ?? {};\n\n if (!datachannelToken) {\n return undefined;\n }\n\n // @ts-ignore\n this.webex.internal.llm.setDatachannelToken(\n datachannelToken,\n dataChannelTokenType || DataChannelTokenType.PracticeSession\n );\n\n return datachannelToken;\n } catch (error) {\n LoggerProxy.logger.warn(\n `Webinar:index#ensurePracticeSessionDatachannelToken --> failed to proactively refresh practice-session token: ${\n error?.message || String(error)\n }`\n );\n\n return undefined;\n }\n },\n\n /**\n * Connects to low latency mercury and reconnects if the address has changed\n * It will also disconnect if called when the meeting has ended\n * @returns {Promise}\n */\n async updatePSDataChannel() {\n this._updatePSDataChannelSequence = (this._updatePSDataChannelSequence || 0) + 1;\n const invocationSequence = this._updatePSDataChannelSequence;\n\n const meeting = this.webex.meetings.getMeetingByType(_ID_, this.meetingId);\n const isPracticeSession = meeting?.isJoined() && this.isJoinPracticeSessionDataChannel();\n\n if (!isPracticeSession) {\n await this.cleanupPSDataChannel();\n\n return undefined;\n }\n\n // @ts-ignore - Fix type\n const {url = undefined, info: {practiceSessionDatachannelUrl = undefined} = {}} =\n meeting?.locusInfo || {};\n\n // @ts-ignore\n let practiceSessionDatachannelToken = this.webex.internal.llm.getDatachannelToken(\n DataChannelTokenType.PracticeSession\n );\n\n const isCaptionBoxOn = this.webex.internal.voicea.getIsCaptionBoxOn();\n\n if (!practiceSessionDatachannelUrl) {\n return undefined;\n }\n // @ts-ignore - Fix type\n if (this.webex.internal.llm.isConnected(LLM_PRACTICE_SESSION)) {\n if (\n // @ts-ignore - Fix type\n url === this.webex.internal.llm.getLocusUrl(LLM_PRACTICE_SESSION) &&\n // @ts-ignore - Fix type\n practiceSessionDatachannelUrl ===\n this.webex.internal.llm.getDatachannelUrl(LLM_PRACTICE_SESSION)\n ) {\n return undefined;\n }\n\n await this.cleanupPSDataChannel();\n }\n\n // Ensure the default session data channel is connected before connecting the practice session.\n // Subscribe before checking isConnected() to avoid a race where the 'online' event fires\n // between the check and the subscription — Mercury does not replay missed events.\n if (!this._pendingOnlineListener) {\n const onDefaultSessionConnected = () => {\n this._pendingOnlineListener = null;\n // @ts-ignore - Fix type\n this.webex.internal.llm.off('online', onDefaultSessionConnected);\n this.updatePSDataChannel();\n };\n this._pendingOnlineListener = onDefaultSessionConnected;\n // @ts-ignore - Fix type\n this.webex.internal.llm.on('online', onDefaultSessionConnected);\n }\n\n // @ts-ignore - Fix type\n if (!this.webex.internal.llm.isConnected()) {\n LoggerProxy.logger.info(\n 'Webinar:index#updatePSDataChannel --> default session not yet connected, deferring practice session connect.'\n );\n\n return undefined;\n }\n\n // Default session is already connected — cancel the pending listener and proceed\n if (this._pendingOnlineListener) {\n // @ts-ignore - Fix type\n this.webex.internal.llm.off('online', this._pendingOnlineListener);\n this._pendingOnlineListener = null;\n }\n\n const refreshedPracticeSessionToken = await this.ensurePracticeSessionDatachannelToken(meeting);\n\n const latestPracticeSessionDatachannelUrl = get(\n meeting,\n 'locusInfo.info.practiceSessionDatachannelUrl'\n );\n const isStillPracticeSession = meeting?.isJoined() && this.isJoinPracticeSessionDataChannel();\n\n // Skip stale invocations after async refresh to avoid reconnecting a session\n // that was already updated/cleaned by a newer state transition.\n if (\n invocationSequence !== this._updatePSDataChannelSequence ||\n !isStillPracticeSession ||\n !latestPracticeSessionDatachannelUrl ||\n latestPracticeSessionDatachannelUrl !== practiceSessionDatachannelUrl\n ) {\n return undefined;\n }\n\n if (refreshedPracticeSessionToken) {\n practiceSessionDatachannelToken = refreshedPracticeSessionToken;\n }\n\n // @ts-ignore - Fix type\n return this.webex.internal.llm\n .registerAndConnect(\n url,\n practiceSessionDatachannelUrl,\n practiceSessionDatachannelToken,\n LLM_PRACTICE_SESSION\n )\n .then((registerAndConnectResult) => {\n // @ts-ignore - Fix type\n this.webex.internal.llm.off(\n `event:relay.event:${LLM_PRACTICE_SESSION}`,\n meeting?.processRelayEvent\n );\n // @ts-ignore - Fix type\n this.webex.internal.llm.on(\n `event:relay.event:${LLM_PRACTICE_SESSION}`,\n meeting?.processRelayEvent\n );\n // @ts-ignore - Fix type\n this.webex.internal.voicea?.announce?.();\n if (isCaptionBoxOn) {\n this.webex.internal.voicea.updateSubchannelSubscriptions({subscribe: ['transcription']});\n }\n LoggerProxy.logger.info(\n `Webinar:index#updatePSDataChannel --> enabled to receive relay events for default session for ${LLM_PRACTICE_SESSION}!`\n );\n\n return Promise.resolve(registerAndConnectResult);\n });\n },\n\n /**\n * start or stop practice session for webinar\n * @param {boolean} enabled\n * @returns {Promise}\n */\n setPracticeSessionState(enabled) {\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri: `${this.locusUrl}/controls`,\n body: {\n practiceSession: {\n enabled,\n },\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#setPracticeSessionState failed', error);\n throw error;\n });\n },\n\n /**\n * update practice session status\n * @param {object} payload\n * @returns {void}\n */\n updatePracticeSessionStatus(payload) {\n this.set('practiceSessionEnabled', !!payload?.enabled);\n this.updatePSDataChannel().then(() => {});\n },\n\n /**\n * start webcast mode for webinar\n * @param {object} meeting\n * @param {object} layout\n * @returns {Promise}\n */\n async startWebcast(meeting, layout) {\n if (!meeting) {\n LoggerProxy.logger.error(\n `Meeting:webinar#startWebcast failed --> meeting parameter : ${meeting}`\n );\n throw new Error('Meeting parameter does not meet expectations');\n }\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: `${this.webcastInstanceUrl}/streaming`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n [HEADERS.CONTENT_TYPE]: HEADERS.CONTENT_TYPE_VALUE.APPLICATION_JSON,\n },\n body: {\n action: 'start',\n meetingInfo: {\n locusId: meeting.locusId,\n correlationId: meeting.correlationId,\n },\n layout,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#startWebcast failed', error);\n throw error;\n });\n },\n\n /**\n * stop webcast mode for webinar\n * @returns {Promise}\n */\n async stopWebcast() {\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: `${this.webcastInstanceUrl}/streaming`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n [HEADERS.CONTENT_TYPE]: HEADERS.CONTENT_TYPE_VALUE.APPLICATION_JSON,\n },\n body: {\n action: 'stop',\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#stopWebcast failed', error);\n throw error;\n });\n },\n\n /**\n * query webcast layout for webinar\n * @returns {Promise}\n */\n async queryWebcastLayout() {\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `${this.webcastInstanceUrl}/layout`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#queryWebcastLayout failed', error);\n throw error;\n });\n },\n\n /**\n * update webcast layout for webinar\n * @param {object} layout\n * @returns {Promise}\n */\n async updateWebcastLayout(layout) {\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: `${this.webcastInstanceUrl}/layout`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n [HEADERS.CONTENT_TYPE]: HEADERS.CONTENT_TYPE_VALUE.APPLICATION_JSON,\n },\n body: {\n videoLayout: layout.videoLayout,\n contentLayout: layout.contentLayout,\n syncStageLayout: layout.syncStageLayout,\n syncStageInMeeting: layout.syncStageInMeeting,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#updateWebcastLayout failed', error);\n throw error;\n });\n },\n\n /**\n * view all webcast attendees\n * @returns {Promise}\n */\n async viewAllWebcastAttendees() {\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `${this.webcastInstanceUrl}/attendees`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#viewAllWebcastAttendees failed', error);\n throw error;\n });\n },\n\n /**\n * search webcast attendees by query string\n * @param {string} queryString\n * @returns {Promise}\n */\n async searchWebcastAttendees(queryString = '') {\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `${this.webcastInstanceUrl}/attendees?keyword=${encodeURIComponent(queryString)}`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#searchWebcastAttendees failed', error);\n throw error;\n });\n },\n\n /**\n * expel webcast attendee by participantId\n * @param {string} participantId\n * @returns {Promise}\n */\n async expelWebcastAttendee(participantId) {\n return this.request({\n method: HTTP_VERBS.DELETE,\n uri: `${this.webcastInstanceUrl}/attendees/${participantId}`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#expelWebcastAttendee failed', error);\n throw error;\n });\n },\n\n /**\n * search large scale webinar attendees\n * @param {object} payload\n * @param {string} payload.queryString\n * @param {number} payload.limit\n * @param {string} payload.next\n * @returns {Promise}\n */\n async searchLargeScaleWebinarAttendees(payload) {\n const meeting = this.webex.meetings.getMeetingByType(_ID_, this.meetingId);\n const rawParams = {\n search_text: payload?.queryString,\n limit: payload?.limit ?? DEFAULT_LARGE_SCALE_WEBINAR_ATTENDEE_SEARCH_LIMIT,\n next: payload?.next,\n };\n const attendeeSearchUrl = meeting?.locusInfo?.links?.resources?.attendeeSearch?.url;\n if (!attendeeSearchUrl) {\n LoggerProxy.logger.error(`Meeting:webinar5k#searchLargeScaleWebinarAttendees failed`);\n throw new Error('Meeting:webinar5k#Attendee search url is not available');\n }\n\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `${attendeeSearchUrl}?${new URLSearchParams(sanitizeParams(rawParams)).toString()}`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar5k#searchLargeScaleWebinarAttendees failed', error);\n throw error;\n });\n },\n});\n\nexport default Webinar;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_webexCore","require","_uuid","_interopRequireDefault","_lodash","_constants","_collection","_loggerProxy","Webinar","WebexPlugin","extend","namespace","MEETINGS","collections","webinar","WebinarCollection","props","locusUrl","webcastInstanceUrl","canManageWebcast","selfIsPanelist","selfIsAttendee","practiceSessionEnabled","meetingId","locusUrlUpdate","set","updateWebcastUrl","payload","get","updateCanManageWebcast","updateRoleChanged","oldRoles","newRoles","isPromoted","includes","SELF_ROLES","ATTENDEE","PANELIST","isDemoted","MODERATOR","updateStatusByRole","_ref","meeting","webex","meetings","getMeetingByType","_ID_","shareStatus","SHARE_STATUS","WHITEBOARD_SHARE_ACTIVE","_meeting$locusInfo","_meeting$locusInfo2","locusInfo","updateMediaShares","mediaShares","updateLLMConnection","isJoinPracticeSessionDataChannel","setPracticeSessionState","enabled","request","method","HTTP_VERBS","PATCH","uri","concat","body","practiceSession","catch","error","LoggerProxy","logger","updatePracticeSessionStatus","startWebcast","layout","_this","_asyncToGenerator2","default","_regenerator","mark","_callee","_t","_t2","_t3","_t4","_t5","_t6","_t7","_t8","wrap","_context","prev","next","Error","PUT","_defineProperty2","credentials","getUserToken","sent","config","trackingIdPrefix","uuid","v4","toString","authorization","trackingId","HEADERS","CONTENT_TYPE","CONTENT_TYPE_VALUE","APPLICATION_JSON","action","meetingInfo","locusId","correlationId","abrupt","call","headers","stop","stopWebcast","_this2","_callee2","_t9","_t0","_t1","_t10","_t11","_t12","_t13","_t14","_context2","queryWebcastLayout","_this3","_callee3","_t15","_t16","_t17","_t18","_t19","_t20","_context3","GET","updateWebcastLayout","_this4","_callee4","_t21","_t22","_t23","_t24","_t25","_t26","_t27","_t28","_context4","videoLayout","contentLayout","syncStageLayout","syncStageInMeeting","viewAllWebcastAttendees","_this5","_callee5","_t29","_t30","_t31","_t32","_t33","_t34","_context5","searchWebcastAttendees","_arguments","arguments","_this6","_callee6","queryString","_t35","_t36","_t37","_t38","_t39","_t40","_context6","length","undefined","encodeURIComponent","expelWebcastAttendee","participantId","_this7","_callee7","_t41","_t42","_t43","_t44","_t45","_t46","_context7","DELETE","version","_default","exports"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\nimport {WebexPlugin, config} from '@webex/webex-core';\nimport uuid from 'uuid';\nimport {get} from 'lodash';\nimport {_ID_, HEADERS, HTTP_VERBS, MEETINGS, SELF_ROLES, SHARE_STATUS} from '../constants';\n\nimport WebinarCollection from './collection';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\n/**\n * @class Webinar\n */\nconst Webinar = WebexPlugin.extend({\n namespace: MEETINGS,\n collections: {\n webinar: WebinarCollection,\n },\n\n props: {\n locusUrl: 'string', // appears current webinar's locus url\n webcastInstanceUrl: 'string', // current webinar's webcast instance url\n canManageWebcast: 'boolean', // appears the ability to manage webcast\n selfIsPanelist: 'boolean', // self is panelist\n selfIsAttendee: 'boolean', // self is attendee\n practiceSessionEnabled: 'boolean', // practice session enabled\n meetingId: 'string',\n },\n\n /**\n * Update the current locus url of the webinar\n * @param {string} locusUrl\n * @returns {void}\n */\n locusUrlUpdate(locusUrl) {\n this.set('locusUrl', locusUrl);\n },\n\n /**\n * Update the current webcast instance url of the meeting\n * @param {object} payload\n * @returns {void}\n */\n updateWebcastUrl(payload) {\n this.set('webcastInstanceUrl', get(payload, 'resources.webcastInstance.url'));\n },\n\n /**\n * Update whether self has capability to manage start/stop webcast (only host can manage it)\n * @param {boolean} canManageWebcast\n * @returns {void}\n */\n updateCanManageWebcast(canManageWebcast) {\n this.set('canManageWebcast', canManageWebcast);\n },\n\n /**\n * Updates user roles and manages associated state transitions\n * @param {object} payload\n * @param {string[]} payload.oldRoles - Previous roles of the user\n * @param {string[]} payload.newRoles - New roles of the user\n * @returns {{isPromoted: boolean, isDemoted: boolean}} Role transition states\n */\n updateRoleChanged(payload) {\n const oldRoles = get(payload, 'oldRoles', []);\n const newRoles = get(payload, 'newRoles', []);\n\n const isPromoted =\n oldRoles.includes(SELF_ROLES.ATTENDEE) && newRoles.includes(SELF_ROLES.PANELIST);\n const isDemoted =\n (oldRoles.includes(SELF_ROLES.PANELIST) && newRoles.includes(SELF_ROLES.ATTENDEE)) ||\n (!oldRoles.includes(SELF_ROLES.ATTENDEE) && newRoles.includes(SELF_ROLES.ATTENDEE)); // for attendee just join meeting case\n this.set('selfIsPanelist', newRoles.includes(SELF_ROLES.PANELIST));\n this.set('selfIsAttendee', newRoles.includes(SELF_ROLES.ATTENDEE));\n this.updateCanManageWebcast(newRoles.includes(SELF_ROLES.MODERATOR));\n this.updateStatusByRole({isPromoted, isDemoted});\n\n return {isPromoted, isDemoted};\n },\n\n /**\n * should join practice session data channel or not\n * @param {Object} {isPromoted: boolean, isDemoted: boolean}} Role transition states\n * @returns {void}\n */\n updateStatusByRole({isPromoted, isDemoted}) {\n const meeting = this.webex.meetings.getMeetingByType(_ID_, this.meetingId);\n\n if (\n (isDemoted && meeting?.shareStatus === SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE) ||\n isPromoted\n ) {\n // attendees in webinar should subscribe streaming for whiteboard sharing\n // while panelist still need subscribe native mode so trigger force update here\n meeting?.locusInfo?.updateMediaShares(meeting?.locusInfo?.mediaShares, true);\n }\n\n if (this.practiceSessionEnabled) {\n // may need change data channel in practice session\n meeting?.updateLLMConnection();\n }\n },\n\n /**\n * should join practice session data channel or not\n * @returns {boolean}\n */\n isJoinPracticeSessionDataChannel() {\n return this.selfIsPanelist && this.practiceSessionEnabled;\n },\n\n /**\n * start or stop practice session for webinar\n * @param {boolean} enabled\n * @returns {Promise}\n */\n setPracticeSessionState(enabled) {\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri: `${this.locusUrl}/controls`,\n body: {\n practiceSession: {\n enabled,\n },\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#setPracticeSessionState failed', error);\n throw error;\n });\n },\n\n /**\n * update practice session status\n * @param {object} payload\n * @returns {void}\n */\n updatePracticeSessionStatus(payload) {\n this.set('practiceSessionEnabled', !!payload?.enabled);\n },\n\n /**\n * start webcast mode for webinar\n * @param {object} meeting\n * @param {object} layout\n * @returns {Promise}\n */\n async startWebcast(meeting, layout) {\n if (!meeting) {\n LoggerProxy.logger.error(\n `Meeting:webinar#startWebcast failed --> meeting parameter : ${meeting}`\n );\n throw new Error('Meeting parameter does not meet expectations');\n }\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: `${this.webcastInstanceUrl}/streaming`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n [HEADERS.CONTENT_TYPE]: HEADERS.CONTENT_TYPE_VALUE.APPLICATION_JSON,\n },\n body: {\n action: 'start',\n meetingInfo: {\n locusId: meeting.locusId,\n correlationId: meeting.correlationId,\n },\n layout,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#startWebcast failed', error);\n throw error;\n });\n },\n\n /**\n * stop webcast mode for webinar\n * @returns {Promise}\n */\n async stopWebcast() {\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: `${this.webcastInstanceUrl}/streaming`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n [HEADERS.CONTENT_TYPE]: HEADERS.CONTENT_TYPE_VALUE.APPLICATION_JSON,\n },\n body: {\n action: 'stop',\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#stopWebcast failed', error);\n throw error;\n });\n },\n\n /**\n * query webcast layout for webinar\n * @returns {Promise}\n */\n async queryWebcastLayout() {\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `${this.webcastInstanceUrl}/layout`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#queryWebcastLayout failed', error);\n throw error;\n });\n },\n\n /**\n * update webcast layout for webinar\n * @param {object} layout\n * @returns {Promise}\n */\n async updateWebcastLayout(layout) {\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: `${this.webcastInstanceUrl}/layout`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n [HEADERS.CONTENT_TYPE]: HEADERS.CONTENT_TYPE_VALUE.APPLICATION_JSON,\n },\n body: {\n videoLayout: layout.videoLayout,\n contentLayout: layout.contentLayout,\n syncStageLayout: layout.syncStageLayout,\n syncStageInMeeting: layout.syncStageInMeeting,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#updateWebcastLayout failed', error);\n throw error;\n });\n },\n\n /**\n * view all webcast attendees\n * @param {string} queryString\n * @returns {Promise}\n */\n async viewAllWebcastAttendees() {\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `${this.webcastInstanceUrl}/attendees`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#viewAllWebcastAttendees failed', error);\n throw error;\n });\n },\n\n /**\n * search webcast attendees by query string\n * @param {string} queryString\n * @returns {Promise}\n */\n async searchWebcastAttendees(queryString = '') {\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `${this.webcastInstanceUrl}/attendees?keyword=${encodeURIComponent(queryString)}`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#searchWebcastAttendees failed', error);\n throw error;\n });\n },\n\n /**\n * expel webcast attendee by participantId\n * @param {string} participantId\n * @returns {Promise}\n */\n async expelWebcastAttendee(participantId) {\n return this.request({\n method: HTTP_VERBS.DELETE,\n uri: `${this.webcastInstanceUrl}/attendees/${participantId}`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#expelWebcastAttendee failed', error);\n throw error;\n });\n },\n});\n\nexport default Webinar;\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -41,15 +41,14 @@
|
|
|
41
41
|
"@types/jsdom": "^21",
|
|
42
42
|
"@webex/babel-config-legacy": "0.0.0",
|
|
43
43
|
"@webex/eslint-config-legacy": "0.0.0",
|
|
44
|
-
"@webex/event-dictionary-ts": "^1.0.2073",
|
|
45
44
|
"@webex/jest-config-legacy": "0.0.0",
|
|
46
45
|
"@webex/legacy-tools": "0.0.0",
|
|
47
|
-
"@webex/plugin-rooms": "3.12.0-
|
|
48
|
-
"@webex/test-helper-chai": "3.
|
|
49
|
-
"@webex/test-helper-mocha": "3.
|
|
50
|
-
"@webex/test-helper-mock-webex": "3.
|
|
51
|
-
"@webex/test-helper-retry": "3.
|
|
52
|
-
"@webex/test-helper-test-users": "3.
|
|
46
|
+
"@webex/plugin-rooms": "3.12.0-task-refactor.1",
|
|
47
|
+
"@webex/test-helper-chai": "3.12.0-task-refactor.1",
|
|
48
|
+
"@webex/test-helper-mocha": "3.12.0-task-refactor.1",
|
|
49
|
+
"@webex/test-helper-mock-webex": "3.12.0-task-refactor.1",
|
|
50
|
+
"@webex/test-helper-retry": "3.12.0-task-refactor.1",
|
|
51
|
+
"@webex/test-helper-test-users": "3.12.0-task-refactor.1",
|
|
53
52
|
"chai": "^4.3.4",
|
|
54
53
|
"chai-as-promised": "^7.1.1",
|
|
55
54
|
"eslint": "^8.24.0",
|
|
@@ -61,22 +60,23 @@
|
|
|
61
60
|
"typescript": "^4.7.4"
|
|
62
61
|
},
|
|
63
62
|
"dependencies": {
|
|
64
|
-
"@webex/common": "3.
|
|
65
|
-
"@webex/
|
|
66
|
-
"@webex/internal-
|
|
67
|
-
"@webex/internal-plugin-
|
|
68
|
-
"@webex/internal-plugin-
|
|
69
|
-
"@webex/internal-plugin-
|
|
70
|
-
"@webex/internal-plugin-
|
|
71
|
-
"@webex/internal-plugin-
|
|
72
|
-
"@webex/internal-plugin-
|
|
73
|
-
"@webex/internal-plugin-
|
|
74
|
-
"@webex/
|
|
75
|
-
"@webex/
|
|
76
|
-
"@webex/plugin-
|
|
63
|
+
"@webex/common": "3.12.0-task-refactor.1",
|
|
64
|
+
"@webex/event-dictionary-ts": "^1.0.1930",
|
|
65
|
+
"@webex/internal-media-core": "2.20.3",
|
|
66
|
+
"@webex/internal-plugin-conversation": "3.12.0-task-refactor.1",
|
|
67
|
+
"@webex/internal-plugin-device": "3.12.0-task-refactor.1",
|
|
68
|
+
"@webex/internal-plugin-llm": "3.12.0-task-refactor.1",
|
|
69
|
+
"@webex/internal-plugin-mercury": "3.12.0-task-refactor.1",
|
|
70
|
+
"@webex/internal-plugin-metrics": "3.12.0-task-refactor.1",
|
|
71
|
+
"@webex/internal-plugin-support": "3.12.0-task-refactor.1",
|
|
72
|
+
"@webex/internal-plugin-user": "3.12.0-task-refactor.1",
|
|
73
|
+
"@webex/internal-plugin-voicea": "3.12.0-task-refactor.1",
|
|
74
|
+
"@webex/media-helpers": "3.12.0-task-refactor.1",
|
|
75
|
+
"@webex/plugin-people": "3.12.0-task-refactor.1",
|
|
76
|
+
"@webex/plugin-rooms": "3.12.0-task-refactor.1",
|
|
77
77
|
"@webex/ts-sdp": "^1.8.1",
|
|
78
|
-
"@webex/web-capabilities": "^1.
|
|
79
|
-
"@webex/webex-core": "3.12.0-
|
|
78
|
+
"@webex/web-capabilities": "^1.7.1",
|
|
79
|
+
"@webex/webex-core": "3.12.0-task-refactor.1",
|
|
80
80
|
"ampersand-collection": "^2.0.2",
|
|
81
81
|
"bowser": "^2.11.0",
|
|
82
82
|
"btoa": "^1.2.1",
|
|
@@ -84,15 +84,13 @@
|
|
|
84
84
|
"global": "^4.4.0",
|
|
85
85
|
"ip-anonymize": "^0.1.0",
|
|
86
86
|
"javascript-state-machine": "^3.1.0",
|
|
87
|
-
"jose": "^5.8.0",
|
|
88
87
|
"jwt-decode": "3.1.2",
|
|
89
88
|
"lodash": "^4.17.21",
|
|
90
89
|
"uuid": "^3.3.2",
|
|
91
|
-
"webrtc-adapter": "^8.1.2"
|
|
92
|
-
"xxh3-ts": "^2.0.1"
|
|
90
|
+
"webrtc-adapter": "^8.1.2"
|
|
93
91
|
},
|
|
94
92
|
"//": [
|
|
95
93
|
"TODO: upgrade jwt-decode when moving to node 18"
|
|
96
94
|
],
|
|
97
|
-
"version": "3.12.0-
|
|
95
|
+
"version": "3.12.0-task-refactor.1"
|
|
98
96
|
}
|
package/src/annotation/index.ts
CHANGED
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
} from './constants';
|
|
14
14
|
|
|
15
15
|
import {StrokeData, RequestData, IAnnotationChannel, CommandRequestBody} from './annotation.types';
|
|
16
|
-
import {HTTP_VERBS
|
|
16
|
+
import {HTTP_VERBS} from '../constants';
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* @description Annotation to handle LLM and Mercury message and locus API
|
|
@@ -69,7 +69,7 @@ class AnnotationChannel extends WebexPlugin implements IAnnotationChannel {
|
|
|
69
69
|
*/
|
|
70
70
|
private eventCommandProcessor(e) {
|
|
71
71
|
if (
|
|
72
|
-
e?.data?.eventType ===
|
|
72
|
+
e?.data?.eventType === 'locus.approval_request' &&
|
|
73
73
|
e?.data?.approval?.resourceType === ANNOTATION_RESOURCE_TYPE &&
|
|
74
74
|
e?.data?.approval?.actionType
|
|
75
75
|
) {
|
|
@@ -110,18 +110,12 @@ class AnnotationChannel extends WebexPlugin implements IAnnotationChannel {
|
|
|
110
110
|
if (!this.hasSubscribedToEvents) {
|
|
111
111
|
// @ts-ignore
|
|
112
112
|
this.webex.internal.mercury.on(
|
|
113
|
-
|
|
113
|
+
'event:locus.approval_request',
|
|
114
114
|
this.eventCommandProcessor,
|
|
115
115
|
this
|
|
116
116
|
);
|
|
117
117
|
// @ts-ignore
|
|
118
118
|
this.webex.internal.llm.on('event:relay.event', this.eventDataProcessor, this);
|
|
119
|
-
// @ts-ignore
|
|
120
|
-
this.webex.internal.llm.on(
|
|
121
|
-
`event:relay.event:${LLM_PRACTICE_SESSION}`,
|
|
122
|
-
this.eventDataProcessor,
|
|
123
|
-
this
|
|
124
|
-
);
|
|
125
119
|
this.hasSubscribedToEvents = true;
|
|
126
120
|
}
|
|
127
121
|
}
|
|
@@ -133,18 +127,11 @@ class AnnotationChannel extends WebexPlugin implements IAnnotationChannel {
|
|
|
133
127
|
public deregisterEvents() {
|
|
134
128
|
if (this.hasSubscribedToEvents) {
|
|
135
129
|
// @ts-ignore
|
|
136
|
-
this.webex.internal.mercury.off(
|
|
137
|
-
`event:${LOCUSEVENT.APPROVAL_REQUEST}`,
|
|
138
|
-
this.eventCommandProcessor
|
|
139
|
-
);
|
|
130
|
+
this.webex.internal.mercury.off('event:locus.approval_request', this.eventCommandProcessor);
|
|
140
131
|
|
|
141
132
|
// @ts-ignore
|
|
142
133
|
this.webex.internal.llm.off('event:relay.event', this.eventDataProcessor);
|
|
143
|
-
|
|
144
|
-
this.webex.internal.llm.off(
|
|
145
|
-
`event:relay.event:${LLM_PRACTICE_SESSION}`,
|
|
146
|
-
this.eventDataProcessor
|
|
147
|
-
);
|
|
134
|
+
|
|
148
135
|
this.hasSubscribedToEvents = false;
|
|
149
136
|
}
|
|
150
137
|
}
|
|
@@ -316,19 +303,12 @@ class AnnotationChannel extends WebexPlugin implements IAnnotationChannel {
|
|
|
316
303
|
* @returns {void}
|
|
317
304
|
*/
|
|
318
305
|
private publishEncrypted(encryptedContent: string, strokeData: StrokeData) {
|
|
319
|
-
// @ts-ignore
|
|
320
|
-
const {llm} = this.webex.internal;
|
|
321
|
-
const isPracticeSessionConnected = llm.isConnected(LLM_PRACTICE_SESSION);
|
|
322
|
-
const socket =
|
|
323
|
-
(isPracticeSessionConnected && llm.getSocket(LLM_PRACTICE_SESSION)) || llm.socket;
|
|
324
|
-
const binding =
|
|
325
|
-
(isPracticeSessionConnected && llm.getBinding(LLM_PRACTICE_SESSION)) || llm.getBinding();
|
|
326
306
|
const data = {
|
|
327
307
|
id: `${this.seqNum}`,
|
|
328
308
|
type: 'publishRequest',
|
|
329
309
|
recipients: {
|
|
330
310
|
// @ts-ignore
|
|
331
|
-
route:
|
|
311
|
+
route: this.webex.internal.llm.getBinding(),
|
|
332
312
|
},
|
|
333
313
|
headers: {
|
|
334
314
|
to: strokeData.toUserId,
|
|
@@ -356,7 +336,7 @@ class AnnotationChannel extends WebexPlugin implements IAnnotationChannel {
|
|
|
356
336
|
};
|
|
357
337
|
|
|
358
338
|
// @ts-ignore
|
|
359
|
-
socket.send(data);
|
|
339
|
+
this.webex.internal.llm.socket.send(data);
|
|
360
340
|
this.seqNum += 1;
|
|
361
341
|
}
|
|
362
342
|
}
|
package/src/config.ts
CHANGED
|
@@ -88,7 +88,6 @@ export default {
|
|
|
88
88
|
enableAdhocMeetings: true,
|
|
89
89
|
enableTcpReachability: false,
|
|
90
90
|
enableTlsReachability: false,
|
|
91
|
-
storeLocusHashTreeEventsForDebugging: false,
|
|
92
91
|
},
|
|
93
92
|
degradationPreferences: {
|
|
94
93
|
maxMacroblocksLimit: 8192,
|
|
@@ -101,9 +100,5 @@ export default {
|
|
|
101
100
|
logUploadIntervalMultiplicationFactor: 0, // if set to 0 or undefined, logs won't be uploaded periodically, if you want periodic logs, recommended value is 1
|
|
102
101
|
stopIceGatheringAfterFirstRelayCandidate: false,
|
|
103
102
|
enableAudioTwccForMultistream: false,
|
|
104
|
-
enablePerUdpUrlReachability: false, // true: separate peer connection per each UDP URL; false: single peer connection for all URLs
|
|
105
|
-
locus: {
|
|
106
|
-
excludedDataSets: ['attendees'], // attendees data set only applies to webinar attendees and we never really need that
|
|
107
|
-
},
|
|
108
103
|
},
|
|
109
104
|
};
|
package/src/constants.ts
CHANGED
|
@@ -44,7 +44,6 @@ export const LOCAL = 'local';
|
|
|
44
44
|
export const LOCI = 'loci';
|
|
45
45
|
export const LOCUS_URL = 'locusUrl';
|
|
46
46
|
export const END = 'end';
|
|
47
|
-
export const LLM_PRACTICE_SESSION = 'llm-practice-session';
|
|
48
47
|
|
|
49
48
|
export const MAX_RANDOM_DELAY_FOR_MEETING_INFO = 3 * 60 * 1000;
|
|
50
49
|
export const MEETINGINFO = 'meetingInfo';
|
|
@@ -365,8 +364,6 @@ export const EVENT_TRIGGERS = {
|
|
|
365
364
|
MEETING_CONTROLS_VIEW_THE_PARTICIPANTS_LIST_UPDATED:
|
|
366
365
|
'meeting:controls:view-the-participants-list:updated',
|
|
367
366
|
MEETING_CONTROLS_RAISE_HAND_UPDATED: 'meeting:controls:raise-hand:updated',
|
|
368
|
-
MEETING_CONTROLS_AI_SUMMARY_NOTIFICATION_UPDATED:
|
|
369
|
-
'meeting:controls:ai-summary-notification:updated',
|
|
370
367
|
MEETING_CONTROLS_VIDEO_UPDATED: 'meeting:controls:video:updated',
|
|
371
368
|
MEETING_CONTROLS_STAGE_VIEW_UPDATED: 'meeting:controls:stage-view:updated',
|
|
372
369
|
MEETING_CONTROLS_WEBCAST_UPDATED: 'meeting:controls:webcast:updated',
|
|
@@ -390,7 +387,6 @@ export const EVENT_TRIGGERS = {
|
|
|
390
387
|
MEETING_MANUAL_CAPTION_UPDATED: 'meeting:manualCaptionControl:updated',
|
|
391
388
|
MEETING_CAPTION_RECEIVED: 'meeting:caption-received',
|
|
392
389
|
MEETING_PARTICIPANT_REASON_CHANGED: 'meeting:participant-reason-changed',
|
|
393
|
-
MEETING_AI_ENABLE_REQUEST: 'meeting:aiEnableRequest',
|
|
394
390
|
};
|
|
395
391
|
|
|
396
392
|
export const EVENT_TYPES = {
|
|
@@ -417,6 +413,7 @@ export const HEADERS = {
|
|
|
417
413
|
// Meeting actually ended
|
|
418
414
|
export const MEETING_REMOVED_REASON = {
|
|
419
415
|
SELF_REMOVED: 'SELF_REMOVED', // server or host removed you from the meeting
|
|
416
|
+
FULLSTATE_REMOVED: 'FULLSTATE_REMOVED', // meeting got dropped ? not sure
|
|
420
417
|
MEETING_INACTIVE_TERMINATING: 'MEETING_INACTIVE_TERMINATING', // Meeting got ended or everyone left the meeting
|
|
421
418
|
CLIENT_LEAVE_REQUEST: 'CLIENT_LEAVE_REQUEST', // You triggered leave meeting
|
|
422
419
|
CLIENT_LEAVE_REQUEST_TAB_CLOSED: 'CLIENT_LEAVE_REQUEST_TAB_CLOSED', // You triggered leave meeting, such as closing the browser tab directly
|
|
@@ -707,11 +704,9 @@ export const LOCUSINFO = {
|
|
|
707
704
|
CONTROLS_MEETING_LAYOUT_UPDATED: 'CONTROLS_MEETING_LAYOUT_UPDATED',
|
|
708
705
|
CONTROLS_RECORDING_UPDATED: 'CONTROLS_RECORDING_UPDATED',
|
|
709
706
|
CONTROLS_MEETING_TRANSCRIBE_UPDATED: 'CONTROLS_MEETING_TRANSCRIBE_UPDATED',
|
|
710
|
-
CONTROLS_AI_SUMMARY_NOTIFICATION_UPDATED: 'CONTROLS_AI_SUMMARY_NOTIFICATION_UPDATED',
|
|
711
707
|
CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED:
|
|
712
708
|
'CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED',
|
|
713
709
|
CONTROLS_MEETING_MANUAL_CAPTION_UPDATED: 'CONTROLS_MEETING_MANUAL_CAPTION_UPDATED',
|
|
714
|
-
CONTROLS_MEETING_HESIOD_LLM_ID_UPDATED: 'CONTROLS_MEETING_HESIOD_LLM_ID_UPDATED',
|
|
715
710
|
CONTROLS_MEETING_BREAKOUT_UPDATED: 'CONTROLS_MEETING_BREAKOUT_UPDATED',
|
|
716
711
|
CONTROLS_MEETING_CONTAINER_UPDATED: 'CONTROLS_MEETING_CONTAINER_UPDATED',
|
|
717
712
|
CONTROLS_MEETING_INTERPRETATION_UPDATED: 'CONTROLS_MEETING_INTERPRETATION_UPDATED',
|
|
@@ -754,7 +749,6 @@ export const LOCUSINFO = {
|
|
|
754
749
|
SELF_IS_SHARING_BLOCKED_CHANGE: 'SELF_IS_SHARING_BLOCKED_CHANGE',
|
|
755
750
|
SELF_MEETING_BREAKOUTS_CHANGED: 'SELF_MEETING_BREAKOUTS_CHANGED',
|
|
756
751
|
SELF_MEETING_INTERPRETATION_CHANGED: 'SELF_MEETING_INTERPRETATION_CHANGED',
|
|
757
|
-
SELF_ID_CHANGED: 'SELF_ID_CHANGED',
|
|
758
752
|
SELF_MEETING_BRB_CHANGED: 'SELF_MEETING_BRB_CHANGED',
|
|
759
753
|
MEDIA_INACTIVITY: 'MEDIA_INACTIVITY',
|
|
760
754
|
LINKS_SERVICES: 'LINKS_SERVICES',
|
|
@@ -802,8 +796,6 @@ export const LOCUSEVENT = {
|
|
|
802
796
|
|
|
803
797
|
HASH_TREE_DATA_UPDATED: 'locus.state_message',
|
|
804
798
|
|
|
805
|
-
APPROVAL_REQUEST: 'locus.approval_request',
|
|
806
|
-
|
|
807
799
|
// events generated internally by SDK
|
|
808
800
|
SDK_LOCUS_FROM_SYNC_MEETINGS: 'jsSdk.locus_from_sync_meetings', // generated for each meeting from response to GET /loci Locus API call
|
|
809
801
|
SDK_NO_EVENT: 'jsSdk.no_event', // used in cases where eventType is irrelevant
|
|
@@ -984,8 +976,6 @@ export const DISPLAY_HINTS = {
|
|
|
984
976
|
LOWER_SOMEONE_ELSES_HAND: 'LOWER_SOMEONE_ELSES_HAND',
|
|
985
977
|
LEAVE_TRANSFER_HOST_END_MEETING: 'LEAVE_TRANSFER_HOST_END_MEETING',
|
|
986
978
|
LEAVE_END_MEETING: 'LEAVE_END_MEETING',
|
|
987
|
-
END_MEETING: 'END_MEETING',
|
|
988
|
-
REQUIRE_HOST_END_MEETING_BEFORE_LEAVE: 'REQUIRE_HOST_END_MEETING_BEFORE_LEAVE',
|
|
989
979
|
STREAMING_STATUS_STARTED: 'STREAMING_STATUS_STARTED',
|
|
990
980
|
STREAMING_STATUS_STOPPED: 'STREAMING_STATUS_STOPPED',
|
|
991
981
|
CAPTION_START: 'CAPTION_START',
|
|
@@ -1089,10 +1079,6 @@ export const DISPLAY_HINTS = {
|
|
|
1089
1079
|
// Polling QA
|
|
1090
1080
|
ENABLE_ATTENDEE_START_POLLING_QA: 'ENABLE_ATTENDEE_START_POLLING_QA',
|
|
1091
1081
|
DISABLE_ATTENDEE_START_POLLING_QA: 'DISABLE_ATTENDEE_START_POLLING_QA',
|
|
1092
|
-
|
|
1093
|
-
// AI
|
|
1094
|
-
ATTENDEE_REQUEST_AI_ASSISTANT_ENABLED: 'ATTENDEE_REQUEST_AI_ASSISTANT_ENABLED',
|
|
1095
|
-
ATTENDEE_REQUEST_AI_ASSISTANT_DECLINED_ALL: 'ATTENDEE_REQUEST_AI_ASSISTANT_DECLINED_ALL',
|
|
1096
1082
|
};
|
|
1097
1083
|
|
|
1098
1084
|
export const INTERSTITIAL_DISPLAY_HINTS = [DISPLAY_HINTS.VOIP_IS_ENABLED];
|
|
@@ -1414,18 +1400,3 @@ export const STAGE_MANAGER_TYPE = {
|
|
|
1414
1400
|
BACKGROUND: 0b010,
|
|
1415
1401
|
NAME_LABEL: 0b100,
|
|
1416
1402
|
};
|
|
1417
|
-
|
|
1418
|
-
export const DEFAULT_LARGE_SCALE_WEBINAR_ATTENDEE_SEARCH_LIMIT = 50;
|
|
1419
|
-
|
|
1420
|
-
export const AI_ENABLE_REQUEST = {
|
|
1421
|
-
EVENTS: {
|
|
1422
|
-
APPROVAL_REQUEST_ARRIVED: 'APPROVAL_REQUEST_ARRIVED',
|
|
1423
|
-
},
|
|
1424
|
-
ACTION_TYPE: {
|
|
1425
|
-
REQUESTED: 'REQUESTED',
|
|
1426
|
-
ACCEPTED: 'ACCEPTED',
|
|
1427
|
-
DECLINED: 'DECLINED',
|
|
1428
|
-
DECLINED_ALL: 'DECLINED_ALL',
|
|
1429
|
-
},
|
|
1430
|
-
RESOURCE_TYPE: 'AiAssistant',
|
|
1431
|
-
};
|