@webex/plugin-meetings 3.0.0-beta.121 → 3.0.0-beta.123
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/annotation.types.js.map +1 -1
- package/dist/annotation/index.js +3 -5
- package/dist/annotation/index.js.map +1 -1
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/meeting/index.js +68 -22
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/util.js +2 -1
- package/dist/meeting/util.js.map +1 -1
- package/dist/types/annotation/annotation.types.d.ts +2 -2
- package/dist/types/meeting/index.d.ts +7 -0
- package/package.json +19 -19
- package/src/annotation/annotation.types.ts +2 -2
- package/src/annotation/index.ts +3 -5
- package/src/meeting/index.ts +26 -0
- package/src/meeting/util.ts +1 -0
- package/test/unit/spec/annotation/index.ts +7 -10
- package/test/unit/spec/meeting/index.js +37 -0
- package/test/unit/spec/meeting/utils.js +19 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["annotation.types.ts"],"sourcesContent":["/**\n * Type for an StrokeData Object\n */\ntype StrokeData = {\n
|
|
1
|
+
{"version":3,"names":[],"sources":["annotation.types.ts"],"sourcesContent":["/**\n * Type for an StrokeData Object\n */\ntype StrokeData = {\n deviceId: string;\n toUserId: string;\n requesterId: string;\n content: string;\n shareInstanceId: string;\n encryptionKeyUrl: string;\n version: string;\n};\n\ntype RequestData = {\n toUserId: string;\n toDeviceUrl: string;\n shareInstanceId: string;\n};\n\ntype CommandRequestBody = {\n actionType: string;\n resourceType: string;\n shareInstanceId: string;\n receivers?: any[];\n};\n\ninterface IAnnotationChannel {\n // === below is for presenter\n acceptRequest: (approval) => undefined | Promise<void>;\n declineRequest: (approval) => undefined | Promise<void>;\n closeAnnotation: (requestData: RequestData) => undefined | Promise<void>;\n changeAnnotationOptions: (options, meeting) => undefined | Promise<void>;\n // === below is for attendee\n approveAnnotation: (requestData: RequestData) => undefined | Promise<void>;\n cancelApproveAnnotation: (requestData: RequestData, approval) => undefined | Promise<void>;\n sendStrokeData: (strokeData: StrokeData) => void;\n // =====\n approvalUrlUpdate: (approvalUrl: string) => void;\n locusUrlUpdate: (locusUrl: string) => void;\n}\n\nexport type {StrokeData, RequestData, CommandRequestBody, IAnnotationChannel};\n"],"mappings":""}
|
package/dist/annotation/index.js
CHANGED
|
@@ -326,15 +326,13 @@ var AnnotationChannel = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
326
326
|
relayType: _constants.ANNOTATION_RELAY_TYPES.ANNOTATION_CLIENT,
|
|
327
327
|
request: {
|
|
328
328
|
value: {
|
|
329
|
-
sessionId: _uuid.default.v4(),
|
|
330
329
|
type: _constants.ANNOTATION_REQUEST_TYPE.ANNOTATION_MESSAGE,
|
|
331
|
-
locusUrl: this.locusUrl,
|
|
332
330
|
content: encryptedContent,
|
|
331
|
+
deviceId: strokeData.deviceId,
|
|
332
|
+
seq: this.seqNum,
|
|
333
|
+
requesterId: strokeData.requesterId,
|
|
333
334
|
version: strokeData.version,
|
|
334
|
-
fromUserId: strokeData.fromUserId,
|
|
335
|
-
fromDeviceUrl: strokeData.fromDeviceUrl,
|
|
336
335
|
shareInstanceId: strokeData.shareInstanceId,
|
|
337
|
-
locusId: this.locusUrl && this.locusUrl.split('/').pop(),
|
|
338
336
|
encryptionKeyUrl: strokeData.encryptionKeyUrl
|
|
339
337
|
}
|
|
340
338
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AnnotationChannel","args","ANNOTATION","actionType","requestData","body","resourceType","shareInstanceId","toUserId","receivers","participantId","deviceUrl","toDeviceUrl","request","method","HTTP_VERBS","POST","url","approvalUrl","encryptionKeyUrl","content","webex","internal","encryption","decryptText","then","res","encryptText","strokeData","llm","isConnected","encryptContent","encryptedContent","publishEncrypted","seqNum","decryptContent","decryptedContent","TriggerProxy","trigger","file","function","EVENT_TRIGGERS","ANNOTATION_STROKE_DATA","data","e","eventType","approval","ANNOTATION_RESOURCE_TYPE","ANNOTATION_COMMAND","type","payload","sequenceNumber","relayType","ANNOTATION_RELAY_TYPES","ANNOTATION_CLIENT","processStrokeMessage","hasSubscribedToEvents","mercury","on","eventCommandProcessor","eventDataProcessor","locusUrl","listenToEvents","PUT","ANNOTATION_ACTION_TYPE","ACCEPTED","DECLINED","sendAnnotationAction","REQUESTED","CANCELED","CLOSED","options","meeting","meetingRequest","changeMeetingFloor","id","recipients","route","getBinding","headers","to","value","sessionId","uuid","v4","ANNOTATION_REQUEST_TYPE","ANNOTATION_MESSAGE","version","fromUserId","fromDeviceUrl","locusId","split","pop","trackingId","config","trackingIdPrefix","toString","timestamp","Date","getTime","filterMessage","socket","send","WebexPlugin"],"sources":["index.ts"],"sourcesContent":["import uuid from 'uuid';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport {WebexPlugin, config} from '@webex/webex-core';\nimport TriggerProxy from '../common/events/trigger-proxy';\n\nimport {\n EVENT_TRIGGERS,\n ANNOTATION_RELAY_TYPES,\n ANNOTATION,\n ANNOTATION_REQUEST_TYPE,\n ANNOTATION_ACTION_TYPE,\n ANNOTATION_RESOURCE_TYPE,\n} from './constants';\n\nimport {StrokeData, RequestData, IAnnotationChannel, CommandRequestBody} from './annotation.types';\nimport {HTTP_VERBS} from '../constants';\n\n/**\n * @description Annotation to handle LLM and Mercury message and locus API\n * @class\n */\nclass AnnotationChannel extends WebexPlugin implements IAnnotationChannel {\n namespace = ANNOTATION;\n\n private seqNum: number;\n\n hasSubscribedToEvents: boolean;\n\n approvalUrl: string;\n locusUrl: string;\n deviceUrl: string;\n\n /**\n * Initializes annotation module\n */\n constructor(...args) {\n super(...args);\n this.seqNum = 1;\n }\n\n /**\n * Process Stroke Data\n * @param {request} request stroke data\n * @returns {void}\n */\n private processStrokeMessage(request) {\n this.decryptContent(request.encryptionKeyUrl, request.content).then((decryptedContent) => {\n request.content = decryptedContent;\n TriggerProxy.trigger(\n this,\n {\n file: 'annotation',\n function: 'processStrokeMessage',\n },\n EVENT_TRIGGERS.ANNOTATION_STROKE_DATA,\n {\n data: request,\n }\n );\n });\n }\n\n /** bind all events from mercury\n * @param {Object} e\n * @returns {undefined}\n */\n private eventCommandProcessor(e) {\n if (\n e?.data?.eventType === 'locus.approval_request' &&\n e?.data?.approval?.resourceType === ANNOTATION_RESOURCE_TYPE &&\n e?.data?.approval?.actionType\n ) {\n TriggerProxy.trigger(\n this,\n {\n file: 'annotation',\n function: 'approval_request',\n },\n EVENT_TRIGGERS.ANNOTATION_COMMAND,\n {\n type: e.data.approval.actionType,\n payload: e.data.approval,\n }\n );\n this.seqNum = (e?.sequenceNumber || 0) + 1;\n }\n }\n\n /** bind all events from llm\n * @param {Object} e\n * @returns {undefined}\n */\n private eventDataProcessor(e) {\n switch (e?.data?.relayType) {\n case ANNOTATION_RELAY_TYPES.ANNOTATION_CLIENT:\n this.seqNum = (e?.sequenceNumber || 0) + 1;\n this.processStrokeMessage(e.data.request);\n break;\n default:\n break;\n }\n }\n\n /**\n * Listen to websocket messages\n * @returns {undefined}\n */\n private listenToEvents() {\n if (!this.hasSubscribedToEvents) {\n // @ts-ignore\n this.webex.internal.mercury.on(\n 'event:locus.approval_request',\n this.eventCommandProcessor,\n this\n );\n // @ts-ignore\n this.webex.internal.llm.on('event:relay.event', this.eventDataProcessor, this);\n this.hasSubscribedToEvents = true;\n }\n }\n\n /**\n * set locusUrl\n * @param {string} locusUrl\n * @returns {void}\n */\n public locusUrlUpdate(locusUrl: string) {\n this.locusUrl = locusUrl;\n this.listenToEvents();\n }\n\n /**\n * set approved url\n * @param {string} approvalUrl\n * @returns {void}\n */\n public approvalUrlUpdate(approvalUrl: string) {\n this.approvalUrl = approvalUrl;\n }\n\n /**\n * accept request\n * @param {object} approval\n * @returns {Promise}\n */\n public acceptRequest(approval) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n url: approval.url,\n body: {\n resourceType: ANNOTATION_RESOURCE_TYPE,\n actionType: ANNOTATION_ACTION_TYPE.ACCEPTED,\n },\n });\n }\n\n /**\n * presenter declined request annotation\n * @param {approval} approval\n * @returns {Promise}\n */\n public declineRequest(approval) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n url: approval.url,\n body: {\n resourceType: ANNOTATION_RESOURCE_TYPE,\n actionType: ANNOTATION_ACTION_TYPE.DECLINED,\n },\n });\n }\n\n /**\n * request approved annotation\n * @param {RequestData} requestData\n * @returns {Promise}\n */\n public approveAnnotation(requestData: RequestData) {\n return this.sendAnnotationAction(ANNOTATION_ACTION_TYPE.REQUESTED, requestData);\n }\n\n /**\n * cancel approved annotation\n * @param {object} requestData\n * @param {object} approval\n * @returns {Promise}\n */\n public cancelApproveAnnotation(requestData: RequestData, approval) {\n const body: CommandRequestBody = {\n actionType: ANNOTATION_ACTION_TYPE.CANCELED,\n resourceType: 'AnnotationOnShare',\n shareInstanceId: requestData.shareInstanceId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n url: `${approval.url}`,\n body,\n });\n }\n\n /**\n * close annotation\n * @param {object} requestData\n * @returns {Promise}\n */\n public closeAnnotation(requestData: RequestData) {\n return this.sendAnnotationAction(ANNOTATION_ACTION_TYPE.CLOSED, requestData);\n }\n\n /**\n * send annotation command\n * @param {ANNOTATION_ACTION_TYPE} actionType\n * @param {RequestData} requestData\n * @returns {Promise}\n */\n private sendAnnotationAction = async (\n actionType: ANNOTATION_ACTION_TYPE,\n requestData: RequestData\n ): Promise<void> => {\n const body: CommandRequestBody = {\n actionType,\n resourceType: 'AnnotationOnShare',\n shareInstanceId: requestData.shareInstanceId,\n };\n if (requestData?.toUserId) {\n body.receivers = [{participantId: requestData.toUserId, deviceUrl: requestData.toDeviceUrl}];\n }\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n url: `${this.approvalUrl}`,\n body,\n });\n };\n\n /**\n * decrypt data\n * @param {string} encryptionKeyUrl\n * @param {string} content encrypted content\n * @returns {string} decrypted content\n */\n private decryptContent = (encryptionKeyUrl: string, content: string): Promise<any> => {\n // @ts-ignore\n return this.webex.internal.encryption.decryptText(encryptionKeyUrl, content).then((res) => {\n return res;\n });\n };\n\n /**\n * encrypt data\n * @param {string} encryptionKeyUrl\n * @param {string} content original content\n * @returns {string} encrypted content\n */\n private encryptContent = (encryptionKeyUrl: string, content: string): Promise<any> => {\n // @ts-ignore\n return this.webex.internal.encryption.encryptText(encryptionKeyUrl, content).then((res) => {\n return res;\n });\n };\n\n /**\n * Sends stroke data to presenter\n * @param {StrokeData} strokeData\n * @returns {void}\n */\n public sendStrokeData = (strokeData: StrokeData): void => {\n // @ts-ignore\n if (!this.webex.internal.llm.isConnected()) return;\n this.encryptContent(strokeData.encryptionKeyUrl, strokeData.content).then(\n (encryptedContent) => {\n this.publishEncrypted(encryptedContent, strokeData);\n }\n );\n };\n\n /**\n * Change annotation options\n * @param {object} options\n * @param {object} meeting\n * @returns {Promise}\n */\n public changeAnnotationOptions(options, meeting) {\n return meeting?.meetingRequest.changeMeetingFloor(options);\n }\n\n /**\n * private encrypted the strokes data\n * @param {string} encryptedContent\n * @param {StrokeData} strokeData\n * @returns {void}\n */\n private publishEncrypted(encryptedContent: string, strokeData: StrokeData) {\n const data = {\n id: `${this.seqNum}`,\n type: 'publishRequest',\n recipients: {\n // @ts-ignore\n route: this.webex.internal.llm.getBinding(),\n },\n headers: {\n to: strokeData.toUserId,\n },\n data: {\n eventType: 'relay.event',\n relayType: ANNOTATION_RELAY_TYPES.ANNOTATION_CLIENT,\n request: {\n value: {\n sessionId: uuid.v4(),\n type: ANNOTATION_REQUEST_TYPE.ANNOTATION_MESSAGE,\n locusUrl: this.locusUrl,\n content: encryptedContent,\n version: strokeData.version,\n fromUserId: strokeData.fromUserId,\n fromDeviceUrl: strokeData.fromDeviceUrl,\n shareInstanceId: strokeData.shareInstanceId,\n locusId: this.locusUrl && this.locusUrl.split('/').pop(),\n encryptionKeyUrl: strokeData.encryptionKeyUrl,\n },\n },\n },\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n timestamp: new Date().getTime(),\n sequenceNumber: this.seqNum,\n filterMessage: false,\n };\n\n // @ts-ignore\n this.webex.internal.llm.socket.send(data);\n this.seqNum += 1;\n }\n}\n\nexport default AnnotationChannel;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["AnnotationChannel","args","ANNOTATION","actionType","requestData","body","resourceType","shareInstanceId","toUserId","receivers","participantId","deviceUrl","toDeviceUrl","request","method","HTTP_VERBS","POST","url","approvalUrl","encryptionKeyUrl","content","webex","internal","encryption","decryptText","then","res","encryptText","strokeData","llm","isConnected","encryptContent","encryptedContent","publishEncrypted","seqNum","decryptContent","decryptedContent","TriggerProxy","trigger","file","function","EVENT_TRIGGERS","ANNOTATION_STROKE_DATA","data","e","eventType","approval","ANNOTATION_RESOURCE_TYPE","ANNOTATION_COMMAND","type","payload","sequenceNumber","relayType","ANNOTATION_RELAY_TYPES","ANNOTATION_CLIENT","processStrokeMessage","hasSubscribedToEvents","mercury","on","eventCommandProcessor","eventDataProcessor","locusUrl","listenToEvents","PUT","ANNOTATION_ACTION_TYPE","ACCEPTED","DECLINED","sendAnnotationAction","REQUESTED","CANCELED","CLOSED","options","meeting","meetingRequest","changeMeetingFloor","id","recipients","route","getBinding","headers","to","value","ANNOTATION_REQUEST_TYPE","ANNOTATION_MESSAGE","deviceId","seq","requesterId","version","trackingId","config","trackingIdPrefix","uuid","v4","toString","timestamp","Date","getTime","filterMessage","socket","send","WebexPlugin"],"sources":["index.ts"],"sourcesContent":["import uuid from 'uuid';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport {WebexPlugin, config} from '@webex/webex-core';\nimport TriggerProxy from '../common/events/trigger-proxy';\n\nimport {\n EVENT_TRIGGERS,\n ANNOTATION_RELAY_TYPES,\n ANNOTATION,\n ANNOTATION_REQUEST_TYPE,\n ANNOTATION_ACTION_TYPE,\n ANNOTATION_RESOURCE_TYPE,\n} from './constants';\n\nimport {StrokeData, RequestData, IAnnotationChannel, CommandRequestBody} from './annotation.types';\nimport {HTTP_VERBS} from '../constants';\n\n/**\n * @description Annotation to handle LLM and Mercury message and locus API\n * @class\n */\nclass AnnotationChannel extends WebexPlugin implements IAnnotationChannel {\n namespace = ANNOTATION;\n\n private seqNum: number;\n\n hasSubscribedToEvents: boolean;\n\n approvalUrl: string;\n locusUrl: string;\n deviceUrl: string;\n\n /**\n * Initializes annotation module\n */\n constructor(...args) {\n super(...args);\n this.seqNum = 1;\n }\n\n /**\n * Process Stroke Data\n * @param {request} request stroke data\n * @returns {void}\n */\n private processStrokeMessage(request) {\n this.decryptContent(request.encryptionKeyUrl, request.content).then((decryptedContent) => {\n request.content = decryptedContent;\n TriggerProxy.trigger(\n this,\n {\n file: 'annotation',\n function: 'processStrokeMessage',\n },\n EVENT_TRIGGERS.ANNOTATION_STROKE_DATA,\n {\n data: request,\n }\n );\n });\n }\n\n /** bind all events from mercury\n * @param {Object} e\n * @returns {undefined}\n */\n private eventCommandProcessor(e) {\n if (\n e?.data?.eventType === 'locus.approval_request' &&\n e?.data?.approval?.resourceType === ANNOTATION_RESOURCE_TYPE &&\n e?.data?.approval?.actionType\n ) {\n TriggerProxy.trigger(\n this,\n {\n file: 'annotation',\n function: 'approval_request',\n },\n EVENT_TRIGGERS.ANNOTATION_COMMAND,\n {\n type: e.data.approval.actionType,\n payload: e.data.approval,\n }\n );\n this.seqNum = (e?.sequenceNumber || 0) + 1;\n }\n }\n\n /** bind all events from llm\n * @param {Object} e\n * @returns {undefined}\n */\n private eventDataProcessor(e) {\n switch (e?.data?.relayType) {\n case ANNOTATION_RELAY_TYPES.ANNOTATION_CLIENT:\n this.seqNum = (e?.sequenceNumber || 0) + 1;\n this.processStrokeMessage(e.data.request);\n break;\n default:\n break;\n }\n }\n\n /**\n * Listen to websocket messages\n * @returns {undefined}\n */\n private listenToEvents() {\n if (!this.hasSubscribedToEvents) {\n // @ts-ignore\n this.webex.internal.mercury.on(\n 'event:locus.approval_request',\n this.eventCommandProcessor,\n this\n );\n // @ts-ignore\n this.webex.internal.llm.on('event:relay.event', this.eventDataProcessor, this);\n this.hasSubscribedToEvents = true;\n }\n }\n\n /**\n * set locusUrl\n * @param {string} locusUrl\n * @returns {void}\n */\n public locusUrlUpdate(locusUrl: string) {\n this.locusUrl = locusUrl;\n this.listenToEvents();\n }\n\n /**\n * set approved url\n * @param {string} approvalUrl\n * @returns {void}\n */\n public approvalUrlUpdate(approvalUrl: string) {\n this.approvalUrl = approvalUrl;\n }\n\n /**\n * accept request\n * @param {object} approval\n * @returns {Promise}\n */\n public acceptRequest(approval) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n url: approval.url,\n body: {\n resourceType: ANNOTATION_RESOURCE_TYPE,\n actionType: ANNOTATION_ACTION_TYPE.ACCEPTED,\n },\n });\n }\n\n /**\n * presenter declined request annotation\n * @param {approval} approval\n * @returns {Promise}\n */\n public declineRequest(approval) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n url: approval.url,\n body: {\n resourceType: ANNOTATION_RESOURCE_TYPE,\n actionType: ANNOTATION_ACTION_TYPE.DECLINED,\n },\n });\n }\n\n /**\n * request approved annotation\n * @param {RequestData} requestData\n * @returns {Promise}\n */\n public approveAnnotation(requestData: RequestData) {\n return this.sendAnnotationAction(ANNOTATION_ACTION_TYPE.REQUESTED, requestData);\n }\n\n /**\n * cancel approved annotation\n * @param {object} requestData\n * @param {object} approval\n * @returns {Promise}\n */\n public cancelApproveAnnotation(requestData: RequestData, approval) {\n const body: CommandRequestBody = {\n actionType: ANNOTATION_ACTION_TYPE.CANCELED,\n resourceType: 'AnnotationOnShare',\n shareInstanceId: requestData.shareInstanceId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n url: `${approval.url}`,\n body,\n });\n }\n\n /**\n * close annotation\n * @param {object} requestData\n * @returns {Promise}\n */\n public closeAnnotation(requestData: RequestData) {\n return this.sendAnnotationAction(ANNOTATION_ACTION_TYPE.CLOSED, requestData);\n }\n\n /**\n * send annotation command\n * @param {ANNOTATION_ACTION_TYPE} actionType\n * @param {RequestData} requestData\n * @returns {Promise}\n */\n private sendAnnotationAction = async (\n actionType: ANNOTATION_ACTION_TYPE,\n requestData: RequestData\n ): Promise<void> => {\n const body: CommandRequestBody = {\n actionType,\n resourceType: 'AnnotationOnShare',\n shareInstanceId: requestData.shareInstanceId,\n };\n if (requestData?.toUserId) {\n body.receivers = [{participantId: requestData.toUserId, deviceUrl: requestData.toDeviceUrl}];\n }\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n url: `${this.approvalUrl}`,\n body,\n });\n };\n\n /**\n * decrypt data\n * @param {string} encryptionKeyUrl\n * @param {string} content encrypted content\n * @returns {string} decrypted content\n */\n private decryptContent = (encryptionKeyUrl: string, content: string): Promise<any> => {\n // @ts-ignore\n return this.webex.internal.encryption.decryptText(encryptionKeyUrl, content).then((res) => {\n return res;\n });\n };\n\n /**\n * encrypt data\n * @param {string} encryptionKeyUrl\n * @param {string} content original content\n * @returns {string} encrypted content\n */\n private encryptContent = (encryptionKeyUrl: string, content: string): Promise<any> => {\n // @ts-ignore\n return this.webex.internal.encryption.encryptText(encryptionKeyUrl, content).then((res) => {\n return res;\n });\n };\n\n /**\n * Sends stroke data to presenter\n * @param {StrokeData} strokeData\n * @returns {void}\n */\n public sendStrokeData = (strokeData: StrokeData): void => {\n // @ts-ignore\n if (!this.webex.internal.llm.isConnected()) return;\n this.encryptContent(strokeData.encryptionKeyUrl, strokeData.content).then(\n (encryptedContent) => {\n this.publishEncrypted(encryptedContent, strokeData);\n }\n );\n };\n\n /**\n * Change annotation options\n * @param {object} options\n * @param {object} meeting\n * @returns {Promise}\n */\n public changeAnnotationOptions(options, meeting) {\n return meeting?.meetingRequest.changeMeetingFloor(options);\n }\n\n /**\n * private encrypted the strokes data\n * @param {string} encryptedContent\n * @param {StrokeData} strokeData\n * @returns {void}\n */\n private publishEncrypted(encryptedContent: string, strokeData: StrokeData) {\n const data = {\n id: `${this.seqNum}`,\n type: 'publishRequest',\n recipients: {\n // @ts-ignore\n route: this.webex.internal.llm.getBinding(),\n },\n headers: {\n to: strokeData.toUserId,\n },\n data: {\n eventType: 'relay.event',\n relayType: ANNOTATION_RELAY_TYPES.ANNOTATION_CLIENT,\n request: {\n value: {\n type: ANNOTATION_REQUEST_TYPE.ANNOTATION_MESSAGE,\n content: encryptedContent,\n deviceId: strokeData.deviceId,\n seq: this.seqNum,\n requesterId: strokeData.requesterId,\n version: strokeData.version,\n shareInstanceId: strokeData.shareInstanceId,\n encryptionKeyUrl: strokeData.encryptionKeyUrl,\n },\n },\n },\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n timestamp: new Date().getTime(),\n sequenceNumber: this.seqNum,\n filterMessage: false,\n };\n\n // @ts-ignore\n this.webex.internal.llm.socket.send(data);\n this.seqNum += 1;\n }\n}\n\nexport default AnnotationChannel;\n"],"mappings":"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"}
|
package/dist/breakouts/index.js
CHANGED
|
@@ -988,7 +988,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
988
988
|
this.trigger(_constants.BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);
|
|
989
989
|
}
|
|
990
990
|
},
|
|
991
|
-
version: "3.0.0-beta.
|
|
991
|
+
version: "3.0.0-beta.123"
|
|
992
992
|
});
|
|
993
993
|
var _default = Breakouts;
|
|
994
994
|
exports.default = _default;
|
package/dist/meeting/index.js
CHANGED
|
@@ -6916,6 +6916,52 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6916
6916
|
throw new Error('Webrtc media connection is missing, call addMedia() first');
|
|
6917
6917
|
}
|
|
6918
6918
|
|
|
6919
|
+
/**
|
|
6920
|
+
* Method to enable or disable the 'Music mode' effect on audio track
|
|
6921
|
+
*
|
|
6922
|
+
* @param {boolean} shouldEnableMusicMode
|
|
6923
|
+
* @returns {Promise}
|
|
6924
|
+
*/
|
|
6925
|
+
}, {
|
|
6926
|
+
key: "enableMusicMode",
|
|
6927
|
+
value: function () {
|
|
6928
|
+
var _enableMusicMode = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12(shouldEnableMusicMode) {
|
|
6929
|
+
return _regenerator.default.wrap(function _callee12$(_context12) {
|
|
6930
|
+
while (1) switch (_context12.prev = _context12.next) {
|
|
6931
|
+
case 0:
|
|
6932
|
+
this.checkMediaConnection();
|
|
6933
|
+
if (this.isMultistream) {
|
|
6934
|
+
_context12.next = 3;
|
|
6935
|
+
break;
|
|
6936
|
+
}
|
|
6937
|
+
throw new Error('enableMusicMode() only supported with multistream');
|
|
6938
|
+
case 3:
|
|
6939
|
+
if (!shouldEnableMusicMode) {
|
|
6940
|
+
_context12.next = 8;
|
|
6941
|
+
break;
|
|
6942
|
+
}
|
|
6943
|
+
_context12.next = 6;
|
|
6944
|
+
return this.mediaProperties.webrtcMediaConnection.setCodecParameters(_internalMediaCore.MediaType.AudioMain, {
|
|
6945
|
+
maxaveragebitrate: '64000',
|
|
6946
|
+
maxplaybackrate: '48000'
|
|
6947
|
+
});
|
|
6948
|
+
case 6:
|
|
6949
|
+
_context12.next = 10;
|
|
6950
|
+
break;
|
|
6951
|
+
case 8:
|
|
6952
|
+
_context12.next = 10;
|
|
6953
|
+
return this.mediaProperties.webrtcMediaConnection.deleteCodecParameters(_internalMediaCore.MediaType.AudioMain, ['maxaveragebitrate', 'maxplaybackrate']);
|
|
6954
|
+
case 10:
|
|
6955
|
+
case "end":
|
|
6956
|
+
return _context12.stop();
|
|
6957
|
+
}
|
|
6958
|
+
}, _callee12, this);
|
|
6959
|
+
}));
|
|
6960
|
+
function enableMusicMode(_x7) {
|
|
6961
|
+
return _enableMusicMode.apply(this, arguments);
|
|
6962
|
+
}
|
|
6963
|
+
return enableMusicMode;
|
|
6964
|
+
}()
|
|
6919
6965
|
/**
|
|
6920
6966
|
* Publishes specified local tracks in the meeting
|
|
6921
6967
|
*
|
|
@@ -6925,21 +6971,21 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6925
6971
|
}, {
|
|
6926
6972
|
key: "publishTracks",
|
|
6927
6973
|
value: function () {
|
|
6928
|
-
var _publishTracks = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
6974
|
+
var _publishTracks = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13(tracks) {
|
|
6929
6975
|
var _tracks$screenShare;
|
|
6930
6976
|
var _tracks$screenShare2, oldTrack, localDisplayTrack, _oldTrack, localTrack, _oldTrack2, _localTrack;
|
|
6931
|
-
return _regenerator.default.wrap(function
|
|
6932
|
-
while (1) switch (
|
|
6977
|
+
return _regenerator.default.wrap(function _callee13$(_context13) {
|
|
6978
|
+
while (1) switch (_context13.prev = _context13.next) {
|
|
6933
6979
|
case 0:
|
|
6934
6980
|
this.checkMediaConnection();
|
|
6935
6981
|
if (this.isMultistream) {
|
|
6936
|
-
|
|
6982
|
+
_context13.next = 3;
|
|
6937
6983
|
break;
|
|
6938
6984
|
}
|
|
6939
6985
|
throw new Error('publishTracks() only supported with multistream');
|
|
6940
6986
|
case 3:
|
|
6941
6987
|
if (!((_tracks$screenShare = tracks.screenShare) !== null && _tracks$screenShare !== void 0 && _tracks$screenShare.video)) {
|
|
6942
|
-
|
|
6988
|
+
_context13.next = 14;
|
|
6943
6989
|
break;
|
|
6944
6990
|
}
|
|
6945
6991
|
oldTrack = this.mediaProperties.shareTrack;
|
|
@@ -6949,15 +6995,15 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6949
6995
|
// we are starting a screen share
|
|
6950
6996
|
this.mediaProperties.setLocalShareTrack(localDisplayTrack);
|
|
6951
6997
|
localDisplayTrack.on(_mediaHelpers.LocalTrackEvents.Ended, this.handleShareTrackEnded);
|
|
6952
|
-
|
|
6998
|
+
_context13.next = 11;
|
|
6953
6999
|
return this.requestScreenShareFloor();
|
|
6954
7000
|
case 11:
|
|
6955
7001
|
this.mediaProperties.mediaDirection.sendShare = true;
|
|
6956
|
-
|
|
7002
|
+
_context13.next = 14;
|
|
6957
7003
|
return this.mediaProperties.webrtcMediaConnection.publishTrack(this.mediaProperties.shareTrack);
|
|
6958
7004
|
case 14:
|
|
6959
7005
|
if (!tracks.microphone) {
|
|
6960
|
-
|
|
7006
|
+
_context13.next = 24;
|
|
6961
7007
|
break;
|
|
6962
7008
|
}
|
|
6963
7009
|
_oldTrack = this.mediaProperties.audioTrack;
|
|
@@ -6973,11 +7019,11 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6973
7019
|
this.audio.handleLocalTrackChange(this);
|
|
6974
7020
|
}
|
|
6975
7021
|
localTrack.on(_mediaHelpers.LocalTrackEvents.Muted, this.localAudioTrackMuteStateHandler);
|
|
6976
|
-
|
|
7022
|
+
_context13.next = 24;
|
|
6977
7023
|
return this.mediaProperties.webrtcMediaConnection.publishTrack(this.mediaProperties.audioTrack);
|
|
6978
7024
|
case 24:
|
|
6979
7025
|
if (!tracks.camera) {
|
|
6980
|
-
|
|
7026
|
+
_context13.next = 34;
|
|
6981
7027
|
break;
|
|
6982
7028
|
}
|
|
6983
7029
|
_oldTrack2 = this.mediaProperties.videoTrack;
|
|
@@ -6993,15 +7039,15 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6993
7039
|
this.video.handleLocalTrackChange(this);
|
|
6994
7040
|
}
|
|
6995
7041
|
_localTrack.on(_mediaHelpers.LocalTrackEvents.Muted, this.localVideoTrackMuteStateHandler);
|
|
6996
|
-
|
|
7042
|
+
_context13.next = 34;
|
|
6997
7043
|
return this.mediaProperties.webrtcMediaConnection.publishTrack(this.mediaProperties.videoTrack);
|
|
6998
7044
|
case 34:
|
|
6999
7045
|
case "end":
|
|
7000
|
-
return
|
|
7046
|
+
return _context13.stop();
|
|
7001
7047
|
}
|
|
7002
|
-
},
|
|
7048
|
+
}, _callee13, this);
|
|
7003
7049
|
}));
|
|
7004
|
-
function publishTracks(
|
|
7050
|
+
function publishTracks(_x8) {
|
|
7005
7051
|
return _publishTracks.apply(this, arguments);
|
|
7006
7052
|
}
|
|
7007
7053
|
return publishTracks;
|
|
@@ -7015,14 +7061,14 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7015
7061
|
}, {
|
|
7016
7062
|
key: "unpublishTracks",
|
|
7017
7063
|
value: function () {
|
|
7018
|
-
var _unpublishTracks = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
7064
|
+
var _unpublishTracks = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14(tracks) {
|
|
7019
7065
|
var unpublishPromises, _iterator, _step, track;
|
|
7020
|
-
return _regenerator.default.wrap(function
|
|
7021
|
-
while (1) switch (
|
|
7066
|
+
return _regenerator.default.wrap(function _callee14$(_context14) {
|
|
7067
|
+
while (1) switch (_context14.prev = _context14.next) {
|
|
7022
7068
|
case 0:
|
|
7023
7069
|
this.checkMediaConnection();
|
|
7024
7070
|
if (this.isMultistream) {
|
|
7025
|
-
|
|
7071
|
+
_context14.next = 3;
|
|
7026
7072
|
break;
|
|
7027
7073
|
}
|
|
7028
7074
|
throw new Error('unpublishTracks() is only supported with multistream');
|
|
@@ -7059,15 +7105,15 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7059
7105
|
} finally {
|
|
7060
7106
|
_iterator.f();
|
|
7061
7107
|
}
|
|
7062
|
-
|
|
7108
|
+
_context14.next = 8;
|
|
7063
7109
|
return _promise.default.all(unpublishPromises);
|
|
7064
7110
|
case 8:
|
|
7065
7111
|
case "end":
|
|
7066
|
-
return
|
|
7112
|
+
return _context14.stop();
|
|
7067
7113
|
}
|
|
7068
|
-
},
|
|
7114
|
+
}, _callee14, this);
|
|
7069
7115
|
}));
|
|
7070
|
-
function unpublishTracks(
|
|
7116
|
+
function unpublishTracks(_x9) {
|
|
7071
7117
|
return _unpublishTracks.apply(this, arguments);
|
|
7072
7118
|
}
|
|
7073
7119
|
return unpublishTracks;
|