1 |
- {"ast":null,"code":"\"use strict\";\n\n// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT license.\n// Multi-device Conversation is a Preview feature.\nvar _asyncToGenerator = require(\"F:/workspace/202226701027/huinongbao-app/node_modules/@babel/runtime/helpers/asyncToGenerator.js\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MeetingImpl = exports.Meeting = void 0;\n/* eslint-disable max-classes-per-file */\nconst Exports_js_1 = require(\"../../common.speech/Exports.js\");\nconst Exports_js_2 = require(\"../../common/Exports.js\");\nconst Contracts_js_1 = require(\"../Contracts.js\");\nconst Exports_js_3 = require(\"../Exports.js\");\nclass Meeting {\n constructor() {\n return;\n }\n /**\n * Create a meeting\n * @param speechConfig\n * @param meetingId\n * @param cb\n * @param err\n */\n static createMeetingAsync(speechConfig, meetingId, arg3, arg4) {\n Contracts_js_1.Contracts.throwIfNullOrUndefined(speechConfig, Exports_js_1.ConversationConnectionConfig.restErrors.invalidArgs.replace(\"{arg}\", \"config\"));\n Contracts_js_1.Contracts.throwIfNullOrUndefined(speechConfig.region, Exports_js_1.ConversationConnectionConfig.restErrors.invalidArgs.replace(\"{arg}\", \"SpeechServiceConnection_Region\"));\n Contracts_js_1.Contracts.throwIfNull(meetingId, \"meetingId\");\n if (meetingId.length === 0) {\n throw new Error(\"meetingId cannot be empty\");\n }\n if (!speechConfig.subscriptionKey && !speechConfig.getProperty(Exports_js_3.PropertyId[Exports_js_3.PropertyId.SpeechServiceAuthorization_Token])) {\n Contracts_js_1.Contracts.throwIfNullOrUndefined(speechConfig.subscriptionKey, Exports_js_1.ConversationConnectionConfig.restErrors.invalidArgs.replace(\"{arg}\", \"SpeechServiceConnection_Key\"));\n }\n const meetingImpl = new MeetingImpl(speechConfig, meetingId);\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n Exports_js_2.marshalPromiseToCallbacks(_asyncToGenerator(function* () {})(), arg3, arg4);\n return meetingImpl;\n }\n}\nexports.Meeting = Meeting;\nclass MeetingImpl extends Meeting {\n /**\n * Create a Meeting impl\n * @param speechConfig\n * @param {string} id - optional conversationId\n */\n constructor(speechConfig, id) {\n super();\n this.privErrors = Exports_js_1.ConversationConnectionConfig.restErrors;\n /** websocket callbacks */\n /* eslint-disable @typescript-eslint/typedef */\n this.onConnected = e => {\n this.privIsConnected = true;\n try {\n var _this$privConversatio;\n if (!!((_this$privConversatio = this.privConversationTranslator) !== null && _this$privConversatio !== void 0 && _this$privConversatio.sessionStarted)) {\n this.privConversationTranslator.sessionStarted(this.privConversationTranslator, e);\n }\n } catch (e) {\n //\n }\n };\n this.onDisconnected = e => {\n try {\n var _this$privConversatio2;\n if (!!((_this$privConversatio2 = this.privConversationTranslator) !== null && _this$privConversatio2 !== void 0 && _this$privConversatio2.sessionStopped)) {\n this.privConversationTranslator.sessionStopped(this.privConversationTranslator, e);\n }\n } catch (e) {\n //\n } finally {\n void this.close(false);\n }\n };\n this.onCanceled = (r, e) => {\n try {\n var _this$privConversatio3;\n if (!!((_this$privConversatio3 = this.privConversationTranslator) !== null && _this$privConversatio3 !== void 0 && _this$privConversatio3.canceled)) {\n this.privConversationTranslator.canceled(this.privConversationTranslator, e);\n }\n } catch (e) {\n //\n }\n };\n this.onParticipantUpdateCommandReceived = (r, e) => {\n try {\n const updatedParticipant = this.privParticipants.getParticipant(e.id);\n if (updatedParticipant !== undefined) {\n switch (e.key) {\n case Exports_js_1.ConversationTranslatorCommandTypes.changeNickname:\n updatedParticipant.displayName = e.value;\n break;\n case Exports_js_1.ConversationTranslatorCommandTypes.setUseTTS:\n updatedParticipant.isUsingTts = e.value;\n break;\n case Exports_js_1.ConversationTranslatorCommandTypes.setProfanityFiltering:\n updatedParticipant.profanity = e.value;\n break;\n case Exports_js_1.ConversationTranslatorCommandTypes.setMute:\n updatedParticipant.isMuted = e.value;\n break;\n case Exports_js_1.ConversationTranslatorCommandTypes.setTranslateToLanguages:\n updatedParticipant.translateToLanguages = e.value;\n break;\n }\n this.privParticipants.addOrUpdateParticipant(updatedParticipant);\n if (!!this.privConversationTranslator) {\n this.privConversationTranslator.participantsChanged(this.privConversationTranslator, new Exports_js_3.ConversationParticipantsChangedEventArgs(Exports_js_3.ParticipantChangedReason.Updated, [this.toParticipant(updatedParticipant)], e.sessionId));\n }\n }\n } catch (e) {\n //\n }\n };\n this.onLockRoomCommandReceived = () => {\n // TODO\n };\n this.onMuteAllCommandReceived = (r, e) => {\n try {\n this.privParticipants.participants.forEach(p => p.isMuted = p.isHost ? false : e.isMuted);\n if (!!this.privConversationTranslator) {\n this.privConversationTranslator.participantsChanged(this.privConversationTranslator, new Exports_js_3.ConversationParticipantsChangedEventArgs(Exports_js_3.ParticipantChangedReason.Updated, this.toParticipants(false), e.sessionId));\n }\n } catch (e) {\n //\n }\n };\n this.onParticipantJoinCommandReceived = (r, e) => {\n try {\n const newParticipant = this.privParticipants.addOrUpdateParticipant(e.participant);\n if (newParticipant !== undefined) {\n if (!!this.privConversationTranslator) {\n this.privConversationTranslator.participantsChanged(this.privConversationTranslator, new Exports_js_3.ConversationParticipantsChangedEventArgs(Exports_js_3.ParticipantChangedReason.JoinedConversation, [this.toParticipant(newParticipant)], e.sessionId));\n }\n }\n } catch (e) {\n //\n }\n };\n this.onParticipantLeaveCommandReceived = (r, e) => {\n try {\n const ejectedParticipant = this.privParticipants.getParticipant(e.participant.id);\n if (ejectedParticipant !== undefined) {\n // remove the participant from the internal participants list\n this.privParticipants.deleteParticipant(e.participant.id);\n if (!!this.privConversationTranslator) {\n // notify subscribers that the participant has left the conversation\n this.privConversationTranslator.participantsChanged(this.privConversationTranslator, new Exports_js_3.ConversationParticipantsChangedEventArgs(Exports_js_3.ParticipantChangedReason.LeftConversation, [this.toParticipant(ejectedParticipant)], e.sessionId));\n }\n }\n } catch (e) {\n //\n }\n };\n this.onTranslationReceived = (r, e) => {\n try {\n switch (e.command) {\n case Exports_js_1.ConversationTranslatorMessageTypes.final:\n if (!!this.privConversationTranslator) {\n this.privConversationTranslator.transcribed(this.privConversationTranslator, new Exports_js_3.ConversationTranslationEventArgs(e.payload, undefined, e.sessionId));\n }\n break;\n case Exports_js_1.ConversationTranslatorMessageTypes.partial:\n if (!!this.privConversationTranslator) {\n this.privConversationTranslator.transcribing(this.privConversationTranslator, new Exports_js_3.ConversationTranslationEventArgs(e.payload, undefined, e.sessionId));\n }\n break;\n case Exports_js_1.ConversationTranslatorMessageTypes.instantMessage:\n if (!!this.privConversationTranslator) {\n this.privConversationTranslator.textMessageReceived(this.privConversationTranslator, new Exports_js_3.ConversationTranslationEventArgs(e.payload, undefined, e.sessionId));\n }\n break;\n }\n } catch (e) {\n //\n }\n };\n this.onParticipantsListReceived = (r, e) => {\n try {\n // check if the session token needs to be updated\n if (e.sessionToken !== undefined && e.sessionToken !== null) {\n this.privRoom.token = e.sessionToken;\n }\n // save the participants\n this.privParticipants.participants = [...e.participants];\n // enable the conversation\n if (this.privParticipants.me !== undefined) {\n this.privIsReady = true;\n }\n if (!!this.privConversationTranslator) {\n this.privConversationTranslator.participantsChanged(this.privConversationTranslator, new Exports_js_3.ConversationParticipantsChangedEventArgs(Exports_js_3.ParticipantChangedReason.JoinedConversation, this.toParticipants(true), e.sessionId));\n }\n // if this is the host, update the nickname if needed\n if (this.me.isHost) {\n var _this$privConversatio4;\n const nickname = (_this$privConversatio4 = this.privConversationTranslator) === null || _this$privConversatio4 === void 0 ? void 0 : _this$privConversatio4.properties.getProperty(Exports_js_3.PropertyId.ConversationTranslator_Name);\n if (nickname !== undefined && nickname.length > 0 && nickname !== this.me.displayName) {\n // issue a change nickname request\n this.changeNicknameAsync(nickname);\n }\n }\n } catch (e) {\n //\n }\n };\n this.onConversationExpiration = (r, e) => {\n try {\n if (!!this.privConversationTranslator) {\n this.privConversationTranslator.conversationExpiration(this.privConversationTranslator, e);\n }\n } catch (e) {\n //\n }\n };\n this.privIsConnected = false;\n this.privIsDisposed = false;\n this.privConversationId = \"\";\n this.privProperties = new Exports_js_3.PropertyCollection();\n this.privManager = new Exports_js_1.ConversationManager();\n // check the speech language\n const language = speechConfig.getProperty(Exports_js_3.PropertyId[Exports_js_3.PropertyId.SpeechServiceConnection_RecoLanguage]);\n if (!language) {\n speechConfig.setProperty(Exports_js_3.PropertyId[Exports_js_3.PropertyId.SpeechServiceConnection_RecoLanguage], Exports_js_1.ConversationConnectionConfig.defaultLanguageCode);\n }\n this.privLanguage = speechConfig.getProperty(Exports_js_3.PropertyId[Exports_js_3.PropertyId.SpeechServiceConnection_RecoLanguage]);\n this.privConversationId = id;\n // save the speech config for future usage\n this.privConfig = speechConfig;\n // save the config properties\n const configImpl = speechConfig;\n Contracts_js_1.Contracts.throwIfNull(configImpl, \"speechConfig\");\n this.privProperties = configImpl.properties.clone();\n this.privIsConnected = false;\n this.privParticipants = new Exports_js_1.InternalParticipants();\n this.privIsReady = false;\n this.privTextMessageMaxLength = 1000;\n }\n // get the internal data about a conversation\n get room() {\n return this.privRoom;\n }\n // get the wrapper for connecting to the websockets\n get connection() {\n return this.privConversationRecognizer; // this.privConnection;\n }\n // get the config\n get config() {\n return this.privConfig;\n }\n // get the meeting Id\n get meetingId() {\n return this.privRoom ? this.privRoom.roomId : this.privConversationId;\n }\n // get the properties\n get properties() {\n return this.privProperties;\n }\n // get the speech language\n get speechRecognitionLanguage() {\n return this.privLanguage;\n }\n get isMutedByHost() {\n var _this$privParticipant, _this$privParticipant2;\n return (_this$privParticipant = this.privParticipants.me) !== null && _this$privParticipant !== void 0 && _this$privParticipant.isHost ? false : (_this$privParticipant2 = this.privParticipants.me) === null || _this$privParticipant2 === void 0 ? void 0 : _this$privParticipant2.isMuted;\n }\n get isConnected() {\n return this.privIsConnected && this.privIsReady;\n }\n get participants() {\n return this.toParticipants(true);\n }\n get me() {\n return this.toParticipant(this.privParticipants.me);\n }\n get host() {\n return this.toParticipant(this.privParticipants.host);\n }\n get transcriberRecognizer() {\n return this.privTranscriberRecognizer;\n }\n get meetingInfo() {\n const convId = this.meetingId;\n const p = this.participants.map(part => ({\n id: part.id,\n preferredLanguage: part.preferredLanguage,\n voice: part.voice\n }));\n const props = {};\n for (const key of Exports_js_1.ConversationConnectionConfig.transcriptionEventKeys) {\n const val = this.properties.getProperty(key, \"\");\n if (val !== \"\") {\n props[key] = val;\n }\n }\n const info = {\n id: convId,\n participants: p,\n meetingProperties: props\n };\n return info;\n }\n get canSend() {\n var _this$privParticipant3;\n return this.privIsConnected && !((_this$privParticipant3 = this.privParticipants.me) !== null && _this$privParticipant3 !== void 0 && _this$privParticipant3.isMuted);\n }\n get canSendAsHost() {\n var _this$privParticipant4;\n return this.privIsConnected && ((_this$privParticipant4 = this.privParticipants.me) === null || _this$privParticipant4 === void 0 ? void 0 : _this$privParticipant4.isHost);\n }\n // get / set the speech auth token\n // eslint-disable-next-line @typescript-eslint/member-ordering\n get authorizationToken() {\n return this.privToken;\n }\n set authorizationToken(value) {\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(value, \"authorizationToken\");\n this.privToken = value;\n }\n /**\n * Create a new meeting as Host\n * @param cb\n * @param err\n */\n createMeetingAsync(cb, err) {\n try {\n if (!!this.privConversationRecognizer) {\n this.handleError(new Error(this.privErrors.permissionDeniedStart), err);\n }\n this.privManager.createOrJoin(this.privProperties, undefined, room => {\n if (!room) {\n this.handleError(new Error(this.privErrors.permissionDeniedConnect), err);\n }\n this.privRoom = room;\n this.handleCallback(cb, err);\n }, error => {\n this.handleError(error, err);\n });\n } catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Starts a new meeting as host.\n * @param cb\n * @param err\n */\n startMeetingAsync(cb, err) {\n try {\n // check if there is already a recognizer\n if (!!this.privConversationRecognizer) {\n this.handleError(new Error(this.privErrors.permissionDeniedStart), err);\n }\n // check if there is conversation data available\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedConnect);\n // connect to the conversation websocket\n this.privParticipants.meId = this.privRoom.participantId;\n // Because ConversationTranslator manually sets up and manages the connection, Conversation\n // has to forward serviceRecognizer connection events that usually get passed automatically\n this.privConversationRecognizer.connected = this.onConnected;\n this.privConversationRecognizer.disconnected = this.onDisconnected;\n this.privConversationRecognizer.canceled = this.onCanceled;\n this.privConversationRecognizer.participantUpdateCommandReceived = this.onParticipantUpdateCommandReceived;\n this.privConversationRecognizer.lockRoomCommandReceived = this.onLockRoomCommandReceived;\n this.privConversationRecognizer.muteAllCommandReceived = this.onMuteAllCommandReceived;\n this.privConversationRecognizer.participantJoinCommandReceived = this.onParticipantJoinCommandReceived;\n this.privConversationRecognizer.participantLeaveCommandReceived = this.onParticipantLeaveCommandReceived;\n this.privConversationRecognizer.translationReceived = this.onTranslationReceived;\n this.privConversationRecognizer.participantsListReceived = this.onParticipantsListReceived;\n this.privConversationRecognizer.conversationExpiration = this.onConversationExpiration;\n this.privConversationRecognizer.connect(this.privRoom.token, () => {\n this.handleCallback(cb, err);\n }, error => {\n this.handleError(error, err);\n });\n } catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Join a meeting as a participant.\n * @param { IParticipant } participant - participant to add\n * @param cb\n * @param err\n */\n addParticipantAsync(participant, cb, err) {\n Contracts_js_1.Contracts.throwIfNullOrUndefined(participant, \"Participant\");\n Exports_js_2.marshalPromiseToCallbacks(this.addParticipantImplAsync(participant), cb, err);\n }\n /**\n * Join a meeting as a participant.\n * @param meeting\n * @param nickname\n * @param lang\n * @param cb\n * @param err\n */\n joinMeetingAsync(meetingId, nickname, lang, cb, err) {\n try {\n // TODO\n // if (!!this.privConversationRecognizer) {\n // throw new Error(this.privErrors.permissionDeniedStart);\n // }\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(meetingId, this.privErrors.invalidArgs.replace(\"{arg}\", \"conversationId\"));\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(nickname, this.privErrors.invalidArgs.replace(\"{arg}\", \"nickname\"));\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(lang, this.privErrors.invalidArgs.replace(\"{arg}\", \"language\"));\n // join the conversation\n this.privManager.createOrJoin(this.privProperties, meetingId, room => {\n Contracts_js_1.Contracts.throwIfNullOrUndefined(room, this.privErrors.permissionDeniedConnect);\n this.privRoom = room;\n this.privConfig.authorizationToken = room.cognitiveSpeechAuthToken;\n // join callback\n if (!!cb) {\n cb(room.cognitiveSpeechAuthToken);\n }\n }, error => {\n this.handleError(error, err);\n });\n } catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Deletes a meeting\n * @param cb\n * @param err\n */\n deleteMeetingAsync(cb, err) {\n Exports_js_2.marshalPromiseToCallbacks(this.deleteMeetingImplAsync(), cb, err);\n }\n deleteMeetingImplAsync() {\n var _this = this;\n return _asyncToGenerator(function* () {\n Contracts_js_1.Contracts.throwIfNullOrUndefined(_this.privProperties, _this.privErrors.permissionDeniedConnect);\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(_this.privRoom.token, _this.privErrors.permissionDeniedConnect);\n yield _this.privManager.leave(_this.privProperties, _this.privRoom.token);\n _this.dispose();\n })();\n }\n /**\n * Issues a request to close the client websockets\n * @param cb\n * @param err\n */\n endMeetingAsync(cb, err) {\n Exports_js_2.marshalPromiseToCallbacks(this.endMeetingImplAsync(), cb, err);\n }\n endMeetingImplAsync() {\n return this.close(true);\n }\n /**\n * Issues a request to lock the conversation\n * @param cb\n * @param err\n */\n lockMeetingAsync(cb, err) {\n try {\n Contracts_js_1.Contracts.throwIfDisposed(this.privIsDisposed);\n Contracts_js_1.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\n if (!this.canSendAsHost) {\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"lock\")), err);\n }\n if (!!this.privConversationRecognizer) {\n this.privConversationRecognizer.sendRequest(this.getLockCommand(true), () => {\n this.handleCallback(cb, err);\n }, error => {\n this.handleError(error, err);\n });\n }\n } catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Issues a request to mute the meeting\n * @param cb\n * @param err\n */\n muteAllParticipantsAsync(cb, err) {\n try {\n Contracts_js_1.Contracts.throwIfDisposed(this.privIsDisposed);\n Contracts_js_1.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privConversationRecognizer, this.privErrors.permissionDeniedSend);\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\n // check the user's permissions\n if (!this.canSendAsHost) {\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"mute\")), err);\n }\n if (!!this.privConversationRecognizer) {\n this.privConversationRecognizer.sendRequest(this.getMuteAllCommand(true), () => {\n this.handleCallback(cb, err);\n }, error => {\n this.handleError(error, err);\n });\n }\n } catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Issues a request to mute a participant in the meeting\n * @param userId\n * @param cb\n * @param err\n */\n muteParticipantAsync(userId, cb, err) {\n try {\n Contracts_js_1.Contracts.throwIfDisposed(this.privIsDisposed);\n Contracts_js_1.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(userId, this.privErrors.invalidArgs.replace(\"{arg}\", \"userId\"));\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\n // check the connection is open (host + participant can perform the mute command)\n if (!this.canSend) {\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\n }\n // if not host, check the participant is not muting another participant\n if (!this.me.isHost && this.me.id !== userId) {\n this.handleError(new Error(this.privErrors.permissionDeniedParticipant.replace(\"{command}\", \"mute\")), err);\n }\n // check the user exists\n const exists = this.privParticipants.getParticipantIndex(userId);\n if (exists === -1) {\n this.handleError(new Error(this.privErrors.invalidParticipantRequest), err);\n }\n if (!!this.privConversationRecognizer) {\n this.privConversationRecognizer.sendRequest(this.getMuteCommand(userId, true), () => {\n this.handleCallback(cb, err);\n }, error => {\n this.handleError(error, err);\n });\n }\n } catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Issues a request to remove a participant from the conversation\n * @param userId\n * @param cb\n * @param err\n */\n removeParticipantAsync(userId, cb, err) {\n try {\n Contracts_js_1.Contracts.throwIfDisposed(this.privIsDisposed);\n if (!!this.privTranscriberRecognizer && userId.hasOwnProperty(\"id\")) {\n // Assume this is a transcription participant\n Exports_js_2.marshalPromiseToCallbacks(this.removeParticipantImplAsync(userId), cb, err);\n } else {\n Contracts_js_1.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\n if (!this.canSendAsHost) {\n this.handleError(new Error(this.privErrors.permissionDeniedParticipant.replace(\"{command}\", \"remove\")), err);\n }\n let participantId = \"\";\n if (typeof userId === \"string\") {\n participantId = userId;\n } else if (userId.hasOwnProperty(\"id\")) {\n const participant = userId;\n participantId = participant.id;\n } else if (userId.hasOwnProperty(\"userId\")) {\n const user = userId;\n participantId = user.userId;\n }\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(participantId, this.privErrors.invalidArgs.replace(\"{arg}\", \"userId\"));\n // check the participant exists\n const index = this.participants.findIndex(p => p.id === participantId);\n if (index === -1) {\n this.handleError(new Error(this.privErrors.invalidParticipantRequest), err);\n }\n if (!!this.privConversationRecognizer) {\n this.privConversationRecognizer.sendRequest(this.getEjectCommand(participantId), () => {\n this.handleCallback(cb, err);\n }, error => {\n this.handleError(error, err);\n });\n }\n }\n } catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Issues a request to unlock the meeting\n * @param cb\n * @param err\n */\n unlockMeetingAsync(cb, err) {\n try {\n Contracts_js_1.Contracts.throwIfDisposed(this.privIsDisposed);\n Contracts_js_1.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\n if (!this.canSendAsHost) {\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"unlock\")), err);\n }\n if (!!this.privConversationRecognizer) {\n this.privConversationRecognizer.sendRequest(this.getLockCommand(false), () => {\n this.handleCallback(cb, err);\n }, error => {\n this.handleError(error, err);\n });\n }\n } catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Issues a request to unmute all participants in the meeting\n * @param cb\n * @param err\n */\n unmuteAllParticipantsAsync(cb, err) {\n try {\n Contracts_js_1.Contracts.throwIfDisposed(this.privIsDisposed);\n Contracts_js_1.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\n if (!this.canSendAsHost) {\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"unmute all\")), err);\n }\n if (!!this.privConversationRecognizer) {\n this.privConversationRecognizer.sendRequest(this.getMuteAllCommand(false), () => {\n this.handleCallback(cb, err);\n }, error => {\n this.handleError(error, err);\n });\n }\n } catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Issues a request to unmute a participant in the meeting\n * @param userId\n * @param cb\n * @param err\n */\n unmuteParticipantAsync(userId, cb, err) {\n try {\n Contracts_js_1.Contracts.throwIfDisposed(this.privIsDisposed);\n Contracts_js_1.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(userId, this.privErrors.invalidArgs.replace(\"{arg}\", \"userId\"));\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\n // check the connection is open (host + participant can perform the mute command)\n if (!this.canSend) {\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\n }\n // if not host, check the participant is not muting another participant\n if (!this.me.isHost && this.me.id !== userId) {\n this.handleError(new Error(this.privErrors.permissionDeniedParticipant.replace(\"{command}\", \"mute\")), err);\n }\n // check the user exists\n const exists = this.privParticipants.getParticipantIndex(userId);\n if (exists === -1) {\n this.handleError(new Error(this.privErrors.invalidParticipantRequest), err);\n }\n if (!!this.privConversationRecognizer) {\n this.privConversationRecognizer.sendRequest(this.getMuteCommand(userId, false), () => {\n this.handleCallback(cb, err);\n }, error => {\n this.handleError(error, err);\n });\n }\n } catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Send a text message\n * @param message\n * @param cb\n * @param err\n */\n sendTextMessageAsync(message, cb, err) {\n try {\n Contracts_js_1.Contracts.throwIfDisposed(this.privIsDisposed);\n Contracts_js_1.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(message, this.privErrors.invalidArgs.replace(\"{arg}\", \"message\"));\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\n if (!this.canSend) {\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\n }\n // TODO: is a max length check required?\n if (message.length > this.privTextMessageMaxLength) {\n this.handleError(new Error(this.privErrors.invalidArgs.replace(\"{arg}\", \"message length\")), err);\n }\n if (!!this.privConversationRecognizer) {\n this.privConversationRecognizer.sendRequest(this.getMessageCommand(message), () => {\n this.handleCallback(cb, err);\n }, error => {\n this.handleError(error, err);\n });\n }\n } catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Set translated to languages\n * @param {string[]} languages - languages to translate to\n * @param cb\n * @param err\n */\n setTranslatedLanguagesAsync(languages, cb, err) {\n try {\n Contracts_js_1.Contracts.throwIfDisposed(this.privIsDisposed);\n Contracts_js_1.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\n Contracts_js_1.Contracts.throwIfArrayEmptyOrWhitespace(languages, this.privErrors.invalidArgs.replace(\"{arg}\", \"languages\"));\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\n if (!this.canSend) {\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\n }\n if (!!this.privConversationRecognizer) {\n this.privConversationRecognizer.sendRequest(this.getSetTranslateToLanguagesCommand(languages), () => {\n this.handleCallback(cb, err);\n }, error => {\n this.handleError(error, err);\n });\n }\n } catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Change nickname\n * @param {string} nickname - new nickname for the room\n * @param cb\n * @param err\n */\n changeNicknameAsync(nickname, cb, err) {\n try {\n Contracts_js_1.Contracts.throwIfDisposed(this.privIsDisposed);\n Contracts_js_1.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(nickname, this.privErrors.invalidArgs.replace(\"{arg}\", \"nickname\"));\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\n if (!this.canSend) {\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\n }\n if (!!this.privConversationRecognizer) {\n this.privConversationRecognizer.sendRequest(this.getChangeNicknameCommand(nickname), () => {\n this.handleCallback(cb, err);\n }, error => {\n this.handleError(error, err);\n });\n }\n } catch (error) {\n this.handleError(error, err);\n }\n }\n isDisposed() {\n return this.privIsDisposed;\n }\n dispose() {\n if (this.isDisposed) {\n return;\n }\n this.privIsDisposed = true;\n if (!!this.config) {\n this.config.close();\n }\n this.privConfig = undefined;\n this.privLanguage = undefined;\n this.privProperties = undefined;\n this.privRoom = undefined;\n this.privToken = undefined;\n this.privManager = undefined;\n this.privIsConnected = false;\n this.privIsReady = false;\n this.privParticipants = undefined;\n }\n connectTranscriberRecognizer(recognizer) {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n if (!!_this2.privTranscriberRecognizer) {\n yield _this2.privTranscriberRecognizer.close();\n }\n yield recognizer.enforceAudioGating();\n _this2.privTranscriberRecognizer = recognizer;\n _this2.privTranscriberRecognizer.meeting = _this2;\n })();\n }\n getKeepAlive() {\n const nickname = !!this.me ? this.me.displayName : \"default_nickname\";\n return JSON.stringify({\n id: \"0\",\n nickname,\n participantId: this.privRoom.participantId,\n roomId: this.privRoom.roomId,\n type: Exports_js_1.ConversationTranslatorMessageTypes.keepAlive\n });\n }\n /* eslint-enable @typescript-eslint/typedef */\n addParticipantImplAsync(participant) {\n const newParticipant = this.privParticipants.addOrUpdateParticipant(participant);\n if (newParticipant !== undefined) {\n if (!!this.privTranscriberRecognizer) {\n const meetingInfo = this.meetingInfo;\n meetingInfo.participants = [participant];\n return this.privTranscriberRecognizer.pushMeetingEvent(meetingInfo, \"join\");\n }\n }\n }\n removeParticipantImplAsync(participant) {\n this.privParticipants.deleteParticipant(participant.id);\n const meetingInfo = this.meetingInfo;\n meetingInfo.participants = [participant];\n return this.privTranscriberRecognizer.pushMeetingEvent(meetingInfo, \"leave\");\n }\n close(dispose) {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n try {\n var _this3$privConversati;\n _this3.privIsConnected = false;\n yield (_this3$privConversati = _this3.privConversationRecognizer) === null || _this3$privConversati === void 0 ? void 0 : _this3$privConversati.close();\n _this3.privConversationRecognizer = undefined;\n if (!!_this3.privConversationTranslator) {\n _this3.privConversationTranslator.dispose();\n }\n } catch (e) {\n // ignore error\n throw e;\n }\n if (dispose) {\n _this3.dispose();\n }\n })();\n }\n /** Helpers */\n handleCallback(cb, err) {\n if (!!cb) {\n try {\n cb();\n } catch (e) {\n if (!!err) {\n err(e);\n }\n }\n cb = undefined;\n }\n }\n handleError(error, err) {\n if (!!err) {\n if (error instanceof Error) {\n const typedError = error;\n err(typedError.name + \": \" + typedError.message);\n } else {\n err(error);\n }\n }\n }\n /** Participant Helpers */\n toParticipants(includeHost) {\n const participants = this.privParticipants.participants.map(p => this.toParticipant(p));\n if (!includeHost) {\n return participants.filter(p => p.isHost === false);\n } else {\n return participants;\n }\n }\n toParticipant(p) {\n return new Exports_js_3.Participant(p.id, p.avatar, p.displayName, p.isHost, p.isMuted, p.isUsingTts, p.preferredLanguage, p.voice);\n }\n getMuteAllCommand(isMuted) {\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"meetingd\");\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\n return JSON.stringify({\n command: Exports_js_1.ConversationTranslatorCommandTypes.setMuteAll,\n participantId: this.privRoom.participantId,\n roomid: this.privRoom.roomId,\n type: Exports_js_1.ConversationTranslatorMessageTypes.participantCommand,\n value: isMuted\n });\n }\n getMuteCommand(participantId, isMuted) {\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"conversationId\");\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(participantId, \"participantId\");\n return JSON.stringify({\n command: Exports_js_1.ConversationTranslatorCommandTypes.setMute,\n // eslint-disable-next-line object-shorthand\n participantId: participantId,\n roomid: this.privRoom.roomId,\n type: Exports_js_1.ConversationTranslatorMessageTypes.participantCommand,\n value: isMuted\n });\n }\n getLockCommand(isLocked) {\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"meetingId\");\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\n return JSON.stringify({\n command: Exports_js_1.ConversationTranslatorCommandTypes.setLockState,\n participantId: this.privRoom.participantId,\n roomid: this.privRoom.roomId,\n type: Exports_js_1.ConversationTranslatorMessageTypes.participantCommand,\n value: isLocked\n });\n }\n getEjectCommand(participantId) {\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"meetingId\");\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(participantId, \"participantId\");\n return JSON.stringify({\n command: Exports_js_1.ConversationTranslatorCommandTypes.ejectParticipant,\n // eslint-disable-next-line object-shorthand\n participantId: participantId,\n roomid: this.privRoom.roomId,\n type: Exports_js_1.ConversationTranslatorMessageTypes.participantCommand\n });\n }\n getSetTranslateToLanguagesCommand(languages) {\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"meetingId\");\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\n return JSON.stringify({\n command: Exports_js_1.ConversationTranslatorCommandTypes.setTranslateToLanguages,\n participantId: this.privRoom.participantId,\n roomid: this.privRoom.roomId,\n type: Exports_js_1.ConversationTranslatorMessageTypes.participantCommand,\n value: languages\n });\n }\n getChangeNicknameCommand(nickname) {\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"meetingId\");\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(nickname, \"nickname\");\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\n return JSON.stringify({\n command: Exports_js_1.ConversationTranslatorCommandTypes.changeNickname,\n nickname,\n participantId: this.privRoom.participantId,\n roomid: this.privRoom.roomId,\n type: Exports_js_1.ConversationTranslatorMessageTypes.participantCommand,\n value: nickname\n });\n }\n getMessageCommand(message) {\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"meetingId\");\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(message, \"message\");\n return JSON.stringify({\n participantId: this.privRoom.participantId,\n roomId: this.privRoom.roomId,\n text: message,\n type: Exports_js_1.ConversationTranslatorMessageTypes.instantMessage\n });\n }\n}\nexports.MeetingImpl = MeetingImpl;","map":{"version":3,"names":["_asyncToGenerator","require","default","Object","defineProperty","exports","value","MeetingImpl","Meeting","Exports_js_1","Exports_js_2","Contracts_js_1","Exports_js_3","constructor","createMeetingAsync","speechConfig","meetingId","arg3","arg4","Contracts","throwIfNullOrUndefined","ConversationConnectionConfig","restErrors","invalidArgs","replace","region","throwIfNull","length","Error","subscriptionKey","getProperty","PropertyId","SpeechServiceAuthorization_Token","meetingImpl","marshalPromiseToCallbacks","id","privErrors","onConnected","e","privIsConnected","_this$privConversatio","privConversationTranslator","sessionStarted","onDisconnected","_this$privConversatio2","sessionStopped","close","onCanceled","r","_this$privConversatio3","canceled","onParticipantUpdateCommandReceived","updatedParticipant","privParticipants","getParticipant","undefined","key","ConversationTranslatorCommandTypes","changeNickname","displayName","setUseTTS","isUsingTts","setProfanityFiltering","profanity","setMute","isMuted","setTranslateToLanguages","translateToLanguages","addOrUpdateParticipant","participantsChanged","ConversationParticipantsChangedEventArgs","ParticipantChangedReason","Updated","toParticipant","sessionId","onLockRoomCommandReceived","onMuteAllCommandReceived","participants","forEach","p","isHost","toParticipants","onParticipantJoinCommandReceived","newParticipant","participant","JoinedConversation","onParticipantLeaveCommandReceived","ejectedParticipant","deleteParticipant","LeftConversation","onTranslationReceived","command","ConversationTranslatorMessageTypes","final","transcribed","ConversationTranslationEventArgs","payload","partial","transcribing","instantMessage","textMessageReceived","onParticipantsListReceived","sessionToken","privRoom","token","me","privIsReady","_this$privConversatio4","nickname","properties","ConversationTranslator_Name","changeNicknameAsync","onConversationExpiration","conversationExpiration","privIsDisposed","privConversationId","privProperties","PropertyCollection","privManager","ConversationManager","language","SpeechServiceConnection_RecoLanguage","setProperty","defaultLanguageCode","privLanguage","privConfig","configImpl","clone","InternalParticipants","privTextMessageMaxLength","room","connection","privConversationRecognizer","config","roomId","speechRecognitionLanguage","isMutedByHost","_this$privParticipant","_this$privParticipant2","isConnected","host","transcriberRecognizer","privTranscriberRecognizer","meetingInfo","convId","map","part","preferredLanguage","voice","props","transcriptionEventKeys","val","info","meetingProperties","canSend","_this$privParticipant3","canSendAsHost","_this$privParticipant4","authorizationToken","privToken","throwIfNullOrWhitespace","cb","err","handleError","permissionDeniedStart","createOrJoin","permissionDeniedConnect","handleCallback","error","startMeetingAsync","meId","participantId","connected","disconnected","participantUpdateCommandReceived","lockRoomCommandReceived","muteAllCommandReceived","participantJoinCommandReceived","participantLeaveCommandReceived","translationReceived","participantsListReceived","connect","addParticipantAsync","addParticipantImplAsync","joinMeetingAsync","lang","cognitiveSpeechAuthToken","deleteMeetingAsync","deleteMeetingImplAsync","_this","leave","dispose","endMeetingAsync","endMeetingImplAsync","lockMeetingAsync","throwIfDisposed","isDisposed","permissionDeniedSend","permissionDeniedConversation","sendRequest","getLockCommand","muteAllParticipantsAsync","getMuteAllCommand","muteParticipantAsync","userId","permissionDeniedParticipant","exists","getParticipantIndex","invalidParticipantRequest","getMuteCommand","removeParticipantAsync","hasOwnProperty","removeParticipantImplAsync","user","index","findIndex","getEjectCommand","unlockMeetingAsync","unmuteAllParticipantsAsync","unmuteParticipantAsync","sendTextMessageAsync","message","getMessageCommand","setTranslatedLanguagesAsync","languages","throwIfArrayEmptyOrWhitespace","getSetTranslateToLanguagesCommand","getChangeNicknameCommand","connectTranscriberRecognizer","recognizer","_this2","enforceAudioGating","meeting","getKeepAlive","JSON","stringify","type","keepAlive","pushMeetingEvent","_this3","_this3$privConversati","typedError","name","includeHost","filter","Participant","avatar","setMuteAll","roomid","participantCommand","isLocked","setLockState","ejectParticipant","text"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/Meeting.js"],"sourcesContent":["\"use strict\";\n// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT license.\n// Multi-device Conversation is a Preview feature.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MeetingImpl = exports.Meeting = void 0;\n/* eslint-disable max-classes-per-file */\nconst Exports_js_1 = require(\"../../common.speech/Exports.js\");\nconst Exports_js_2 = require(\"../../common/Exports.js\");\nconst Contracts_js_1 = require(\"../Contracts.js\");\nconst Exports_js_3 = require(\"../Exports.js\");\nclass Meeting {\n constructor() {\n return;\n }\n /**\n * Create a meeting\n * @param speechConfig\n * @param meetingId\n * @param cb\n * @param err\n */\n static createMeetingAsync(speechConfig, meetingId, arg3, arg4) {\n Contracts_js_1.Contracts.throwIfNullOrUndefined(speechConfig, Exports_js_1.ConversationConnectionConfig.restErrors.invalidArgs.replace(\"{arg}\", \"config\"));\n Contracts_js_1.Contracts.throwIfNullOrUndefined(speechConfig.region, Exports_js_1.ConversationConnectionConfig.restErrors.invalidArgs.replace(\"{arg}\", \"SpeechServiceConnection_Region\"));\n Contracts_js_1.Contracts.throwIfNull(meetingId, \"meetingId\");\n if (meetingId.length === 0) {\n throw new Error(\"meetingId cannot be empty\");\n }\n if (!speechConfig.subscriptionKey && !speechConfig.getProperty(Exports_js_3.PropertyId[Exports_js_3.PropertyId.SpeechServiceAuthorization_Token])) {\n Contracts_js_1.Contracts.throwIfNullOrUndefined(speechConfig.subscriptionKey, Exports_js_1.ConversationConnectionConfig.restErrors.invalidArgs.replace(\"{arg}\", \"SpeechServiceConnection_Key\"));\n }\n const meetingImpl = new MeetingImpl(speechConfig, meetingId);\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n Exports_js_2.marshalPromiseToCallbacks((async () => { })(), arg3, arg4);\n return meetingImpl;\n }\n}\nexports.Meeting = Meeting;\nclass MeetingImpl extends Meeting {\n /**\n * Create a Meeting impl\n * @param speechConfig\n * @param {string} id - optional conversationId\n */\n constructor(speechConfig, id) {\n super();\n this.privErrors = Exports_js_1.ConversationConnectionConfig.restErrors;\n /** websocket callbacks */\n /* eslint-disable @typescript-eslint/typedef */\n this.onConnected = (e) => {\n this.privIsConnected = true;\n try {\n if (!!this.privConversationTranslator?.sessionStarted) {\n this.privConversationTranslator.sessionStarted(this.privConversationTranslator, e);\n }\n }\n catch (e) {\n //\n }\n };\n this.onDisconnected = (e) => {\n try {\n if (!!this.privConversationTranslator?.sessionStopped) {\n this.privConversationTranslator.sessionStopped(this.privConversationTranslator, e);\n }\n }\n catch (e) {\n //\n }\n finally {\n void this.close(false);\n }\n };\n this.onCanceled = (r, e) => {\n try {\n if (!!this.privConversationTranslator?.canceled) {\n this.privConversationTranslator.canceled(this.privConversationTranslator, e);\n }\n }\n catch (e) {\n //\n }\n };\n this.onParticipantUpdateCommandReceived = (r, e) => {\n try {\n const updatedParticipant = this.privParticipants.getParticipant(e.id);\n if (updatedParticipant !== undefined) {\n switch (e.key) {\n case Exports_js_1.ConversationTranslatorCommandTypes.changeNickname:\n updatedParticipant.displayName = e.value;\n break;\n case Exports_js_1.ConversationTranslatorCommandTypes.setUseTTS:\n updatedParticipant.isUsingTts = e.value;\n break;\n case Exports_js_1.ConversationTranslatorCommandTypes.setProfanityFiltering:\n updatedParticipant.profanity = e.value;\n break;\n case Exports_js_1.ConversationTranslatorCommandTypes.setMute:\n updatedParticipant.isMuted = e.value;\n break;\n case Exports_js_1.ConversationTranslatorCommandTypes.setTranslateToLanguages:\n updatedParticipant.translateToLanguages = e.value;\n break;\n }\n this.privParticipants.addOrUpdateParticipant(updatedParticipant);\n if (!!this.privConversationTranslator) {\n this.privConversationTranslator.participantsChanged(this.privConversationTranslator, new Exports_js_3.ConversationParticipantsChangedEventArgs(Exports_js_3.ParticipantChangedReason.Updated, [this.toParticipant(updatedParticipant)], e.sessionId));\n }\n }\n }\n catch (e) {\n //\n }\n };\n this.onLockRoomCommandReceived = () => {\n // TODO\n };\n this.onMuteAllCommandReceived = (r, e) => {\n try {\n this.privParticipants.participants.forEach((p) => p.isMuted = (p.isHost ? false : e.isMuted));\n if (!!this.privConversationTranslator) {\n this.privConversationTranslator.participantsChanged(this.privConversationTranslator, new Exports_js_3.ConversationParticipantsChangedEventArgs(Exports_js_3.ParticipantChangedReason.Updated, this.toParticipants(false), e.sessionId));\n }\n }\n catch (e) {\n //\n }\n };\n this.onParticipantJoinCommandReceived = (r, e) => {\n try {\n const newParticipant = this.privParticipants.addOrUpdateParticipant(e.participant);\n if (newParticipant !== undefined) {\n if (!!this.privConversationTranslator) {\n this.privConversationTranslator.participantsChanged(this.privConversationTranslator, new Exports_js_3.ConversationParticipantsChangedEventArgs(Exports_js_3.ParticipantChangedReason.JoinedConversation, [this.toParticipant(newParticipant)], e.sessionId));\n }\n }\n }\n catch (e) {\n //\n }\n };\n this.onParticipantLeaveCommandReceived = (r, e) => {\n try {\n const ejectedParticipant = this.privParticipants.getParticipant(e.participant.id);\n if (ejectedParticipant !== undefined) {\n // remove the participant from the internal participants list\n this.privParticipants.deleteParticipant(e.participant.id);\n if (!!this.privConversationTranslator) {\n // notify subscribers that the participant has left the conversation\n this.privConversationTranslator.participantsChanged(this.privConversationTranslator, new Exports_js_3.ConversationParticipantsChangedEventArgs(Exports_js_3.ParticipantChangedReason.LeftConversation, [this.toParticipant(ejectedParticipant)], e.sessionId));\n }\n }\n }\n catch (e) {\n //\n }\n };\n this.onTranslationReceived = (r, e) => {\n try {\n switch (e.command) {\n case Exports_js_1.ConversationTranslatorMessageTypes.final:\n if (!!this.privConversationTranslator) {\n this.privConversationTranslator.transcribed(this.privConversationTranslator, new Exports_js_3.ConversationTranslationEventArgs(e.payload, undefined, e.sessionId));\n }\n break;\n case Exports_js_1.ConversationTranslatorMessageTypes.partial:\n if (!!this.privConversationTranslator) {\n this.privConversationTranslator.transcribing(this.privConversationTranslator, new Exports_js_3.ConversationTranslationEventArgs(e.payload, undefined, e.sessionId));\n }\n break;\n case Exports_js_1.ConversationTranslatorMessageTypes.instantMessage:\n if (!!this.privConversationTranslator) {\n this.privConversationTranslator.textMessageReceived(this.privConversationTranslator, new Exports_js_3.ConversationTranslationEventArgs(e.payload, undefined, e.sessionId));\n }\n break;\n }\n }\n catch (e) {\n //\n }\n };\n this.onParticipantsListReceived = (r, e) => {\n try {\n // check if the session token needs to be updated\n if (e.sessionToken !== undefined && e.sessionToken !== null) {\n this.privRoom.token = e.sessionToken;\n }\n // save the participants\n this.privParticipants.participants = [...e.participants];\n // enable the conversation\n if (this.privParticipants.me !== undefined) {\n this.privIsReady = true;\n }\n if (!!this.privConversationTranslator) {\n this.privConversationTranslator.participantsChanged(this.privConversationTranslator, new Exports_js_3.ConversationParticipantsChangedEventArgs(Exports_js_3.ParticipantChangedReason.JoinedConversation, this.toParticipants(true), e.sessionId));\n }\n // if this is the host, update the nickname if needed\n if (this.me.isHost) {\n const nickname = this.privConversationTranslator?.properties.getProperty(Exports_js_3.PropertyId.ConversationTranslator_Name);\n if (nickname !== undefined && nickname.length > 0 && nickname !== this.me.displayName) {\n // issue a change nickname request\n this.changeNicknameAsync(nickname);\n }\n }\n }\n catch (e) {\n //\n }\n };\n this.onConversationExpiration = (r, e) => {\n try {\n if (!!this.privConversationTranslator) {\n this.privConversationTranslator.conversationExpiration(this.privConversationTranslator, e);\n }\n }\n catch (e) {\n //\n }\n };\n this.privIsConnected = false;\n this.privIsDisposed = false;\n this.privConversationId = \"\";\n this.privProperties = new Exports_js_3.PropertyCollection();\n this.privManager = new Exports_js_1.ConversationManager();\n // check the speech language\n const language = speechConfig.getProperty(Exports_js_3.PropertyId[Exports_js_3.PropertyId.SpeechServiceConnection_RecoLanguage]);\n if (!language) {\n speechConfig.setProperty(Exports_js_3.PropertyId[Exports_js_3.PropertyId.SpeechServiceConnection_RecoLanguage], Exports_js_1.ConversationConnectionConfig.defaultLanguageCode);\n }\n this.privLanguage = speechConfig.getProperty(Exports_js_3.PropertyId[Exports_js_3.PropertyId.SpeechServiceConnection_RecoLanguage]);\n this.privConversationId = id;\n // save the speech config for future usage\n this.privConfig = speechConfig;\n // save the config properties\n const configImpl = speechConfig;\n Contracts_js_1.Contracts.throwIfNull(configImpl, \"speechConfig\");\n this.privProperties = configImpl.properties.clone();\n this.privIsConnected = false;\n this.privParticipants = new Exports_js_1.InternalParticipants();\n this.privIsReady = false;\n this.privTextMessageMaxLength = 1000;\n }\n // get the internal data about a conversation\n get room() {\n return this.privRoom;\n }\n // get the wrapper for connecting to the websockets\n get connection() {\n return this.privConversationRecognizer; // this.privConnection;\n }\n // get the config\n get config() {\n return this.privConfig;\n }\n // get the meeting Id\n get meetingId() {\n return this.privRoom ? this.privRoom.roomId : this.privConversationId;\n }\n // get the properties\n get properties() {\n return this.privProperties;\n }\n // get the speech language\n get speechRecognitionLanguage() {\n return this.privLanguage;\n }\n get isMutedByHost() {\n return this.privParticipants.me?.isHost ? false : this.privParticipants.me?.isMuted;\n }\n get isConnected() {\n return this.privIsConnected && this.privIsReady;\n }\n get participants() {\n return this.toParticipants(true);\n }\n get me() {\n return this.toParticipant(this.privParticipants.me);\n }\n get host() {\n return this.toParticipant(this.privParticipants.host);\n }\n get transcriberRecognizer() {\n return this.privTranscriberRecognizer;\n }\n get meetingInfo() {\n const convId = this.meetingId;\n const p = this.participants.map((part) => ({\n id: part.id,\n preferredLanguage: part.preferredLanguage,\n voice: part.voice\n }));\n const props = {};\n for (const key of Exports_js_1.ConversationConnectionConfig.transcriptionEventKeys) {\n const val = this.properties.getProperty(key, \"\");\n if (val !== \"\") {\n props[key] = val;\n }\n }\n const info = { id: convId, participants: p, meetingProperties: props };\n return info;\n }\n get canSend() {\n return this.privIsConnected && !this.privParticipants.me?.isMuted;\n }\n get canSendAsHost() {\n return this.privIsConnected && this.privParticipants.me?.isHost;\n }\n // get / set the speech auth token\n // eslint-disable-next-line @typescript-eslint/member-ordering\n get authorizationToken() {\n return this.privToken;\n }\n set authorizationToken(value) {\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(value, \"authorizationToken\");\n this.privToken = value;\n }\n /**\n * Create a new meeting as Host\n * @param cb\n * @param err\n */\n createMeetingAsync(cb, err) {\n try {\n if (!!this.privConversationRecognizer) {\n this.handleError(new Error(this.privErrors.permissionDeniedStart), err);\n }\n this.privManager.createOrJoin(this.privProperties, undefined, ((room) => {\n if (!room) {\n this.handleError(new Error(this.privErrors.permissionDeniedConnect), err);\n }\n this.privRoom = room;\n this.handleCallback(cb, err);\n }), ((error) => {\n this.handleError(error, err);\n }));\n }\n catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Starts a new meeting as host.\n * @param cb\n * @param err\n */\n startMeetingAsync(cb, err) {\n try {\n // check if there is already a recognizer\n if (!!this.privConversationRecognizer) {\n this.handleError(new Error(this.privErrors.permissionDeniedStart), err);\n }\n // check if there is conversation data available\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedConnect);\n // connect to the conversation websocket\n this.privParticipants.meId = this.privRoom.participantId;\n // Because ConversationTranslator manually sets up and manages the connection, Conversation\n // has to forward serviceRecognizer connection events that usually get passed automatically\n this.privConversationRecognizer.connected = this.onConnected;\n this.privConversationRecognizer.disconnected = this.onDisconnected;\n this.privConversationRecognizer.canceled = this.onCanceled;\n this.privConversationRecognizer.participantUpdateCommandReceived = this.onParticipantUpdateCommandReceived;\n this.privConversationRecognizer.lockRoomCommandReceived = this.onLockRoomCommandReceived;\n this.privConversationRecognizer.muteAllCommandReceived = this.onMuteAllCommandReceived;\n this.privConversationRecognizer.participantJoinCommandReceived = this.onParticipantJoinCommandReceived;\n this.privConversationRecognizer.participantLeaveCommandReceived = this.onParticipantLeaveCommandReceived;\n this.privConversationRecognizer.translationReceived = this.onTranslationReceived;\n this.privConversationRecognizer.participantsListReceived = this.onParticipantsListReceived;\n this.privConversationRecognizer.conversationExpiration = this.onConversationExpiration;\n this.privConversationRecognizer.connect(this.privRoom.token, (() => {\n this.handleCallback(cb, err);\n }), ((error) => {\n this.handleError(error, err);\n }));\n }\n catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Join a meeting as a participant.\n * @param { IParticipant } participant - participant to add\n * @param cb\n * @param err\n */\n addParticipantAsync(participant, cb, err) {\n Contracts_js_1.Contracts.throwIfNullOrUndefined(participant, \"Participant\");\n Exports_js_2.marshalPromiseToCallbacks(this.addParticipantImplAsync(participant), cb, err);\n }\n /**\n * Join a meeting as a participant.\n * @param meeting\n * @param nickname\n * @param lang\n * @param cb\n * @param err\n */\n joinMeetingAsync(meetingId, nickname, lang, cb, err) {\n try {\n // TODO\n // if (!!this.privConversationRecognizer) {\n // throw new Error(this.privErrors.permissionDeniedStart);\n // }\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(meetingId, this.privErrors.invalidArgs.replace(\"{arg}\", \"conversationId\"));\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(nickname, this.privErrors.invalidArgs.replace(\"{arg}\", \"nickname\"));\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(lang, this.privErrors.invalidArgs.replace(\"{arg}\", \"language\"));\n // join the conversation\n this.privManager.createOrJoin(this.privProperties, meetingId, ((room) => {\n Contracts_js_1.Contracts.throwIfNullOrUndefined(room, this.privErrors.permissionDeniedConnect);\n this.privRoom = room;\n this.privConfig.authorizationToken = room.cognitiveSpeechAuthToken;\n // join callback\n if (!!cb) {\n cb(room.cognitiveSpeechAuthToken);\n }\n }), ((error) => {\n this.handleError(error, err);\n }));\n }\n catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Deletes a meeting\n * @param cb\n * @param err\n */\n deleteMeetingAsync(cb, err) {\n Exports_js_2.marshalPromiseToCallbacks(this.deleteMeetingImplAsync(), cb, err);\n }\n async deleteMeetingImplAsync() {\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privProperties, this.privErrors.permissionDeniedConnect);\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(this.privRoom.token, this.privErrors.permissionDeniedConnect);\n await this.privManager.leave(this.privProperties, this.privRoom.token);\n this.dispose();\n }\n /**\n * Issues a request to close the client websockets\n * @param cb\n * @param err\n */\n endMeetingAsync(cb, err) {\n Exports_js_2.marshalPromiseToCallbacks(this.endMeetingImplAsync(), cb, err);\n }\n endMeetingImplAsync() {\n return this.close(true);\n }\n /**\n * Issues a request to lock the conversation\n * @param cb\n * @param err\n */\n lockMeetingAsync(cb, err) {\n try {\n Contracts_js_1.Contracts.throwIfDisposed(this.privIsDisposed);\n Contracts_js_1.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\n if (!this.canSendAsHost) {\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"lock\")), err);\n }\n if (!!this.privConversationRecognizer) {\n this.privConversationRecognizer.sendRequest(this.getLockCommand(true), (() => {\n this.handleCallback(cb, err);\n }), ((error) => {\n this.handleError(error, err);\n }));\n }\n }\n catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Issues a request to mute the meeting\n * @param cb\n * @param err\n */\n muteAllParticipantsAsync(cb, err) {\n try {\n Contracts_js_1.Contracts.throwIfDisposed(this.privIsDisposed);\n Contracts_js_1.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privConversationRecognizer, this.privErrors.permissionDeniedSend);\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\n // check the user's permissions\n if (!this.canSendAsHost) {\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"mute\")), err);\n }\n if (!!this.privConversationRecognizer) {\n this.privConversationRecognizer.sendRequest(this.getMuteAllCommand(true), (() => {\n this.handleCallback(cb, err);\n }), ((error) => {\n this.handleError(error, err);\n }));\n }\n }\n catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Issues a request to mute a participant in the meeting\n * @param userId\n * @param cb\n * @param err\n */\n muteParticipantAsync(userId, cb, err) {\n try {\n Contracts_js_1.Contracts.throwIfDisposed(this.privIsDisposed);\n Contracts_js_1.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(userId, this.privErrors.invalidArgs.replace(\"{arg}\", \"userId\"));\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\n // check the connection is open (host + participant can perform the mute command)\n if (!this.canSend) {\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\n }\n // if not host, check the participant is not muting another participant\n if (!this.me.isHost && this.me.id !== userId) {\n this.handleError(new Error(this.privErrors.permissionDeniedParticipant.replace(\"{command}\", \"mute\")), err);\n }\n // check the user exists\n const exists = this.privParticipants.getParticipantIndex(userId);\n if (exists === -1) {\n this.handleError(new Error(this.privErrors.invalidParticipantRequest), err);\n }\n if (!!this.privConversationRecognizer) {\n this.privConversationRecognizer.sendRequest(this.getMuteCommand(userId, true), (() => {\n this.handleCallback(cb, err);\n }), ((error) => {\n this.handleError(error, err);\n }));\n }\n }\n catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Issues a request to remove a participant from the conversation\n * @param userId\n * @param cb\n * @param err\n */\n removeParticipantAsync(userId, cb, err) {\n try {\n Contracts_js_1.Contracts.throwIfDisposed(this.privIsDisposed);\n if (!!this.privTranscriberRecognizer && userId.hasOwnProperty(\"id\")) {\n // Assume this is a transcription participant\n Exports_js_2.marshalPromiseToCallbacks(this.removeParticipantImplAsync(userId), cb, err);\n }\n else {\n Contracts_js_1.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\n if (!this.canSendAsHost) {\n this.handleError(new Error(this.privErrors.permissionDeniedParticipant.replace(\"{command}\", \"remove\")), err);\n }\n let participantId = \"\";\n if (typeof userId === \"string\") {\n participantId = userId;\n }\n else if (userId.hasOwnProperty(\"id\")) {\n const participant = userId;\n participantId = participant.id;\n }\n else if (userId.hasOwnProperty(\"userId\")) {\n const user = userId;\n participantId = user.userId;\n }\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(participantId, this.privErrors.invalidArgs.replace(\"{arg}\", \"userId\"));\n // check the participant exists\n const index = this.participants.findIndex((p) => p.id === participantId);\n if (index === -1) {\n this.handleError(new Error(this.privErrors.invalidParticipantRequest), err);\n }\n if (!!this.privConversationRecognizer) {\n this.privConversationRecognizer.sendRequest(this.getEjectCommand(participantId), (() => {\n this.handleCallback(cb, err);\n }), ((error) => {\n this.handleError(error, err);\n }));\n }\n }\n }\n catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Issues a request to unlock the meeting\n * @param cb\n * @param err\n */\n unlockMeetingAsync(cb, err) {\n try {\n Contracts_js_1.Contracts.throwIfDisposed(this.privIsDisposed);\n Contracts_js_1.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\n if (!this.canSendAsHost) {\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"unlock\")), err);\n }\n if (!!this.privConversationRecognizer) {\n this.privConversationRecognizer.sendRequest(this.getLockCommand(false), (() => {\n this.handleCallback(cb, err);\n }), ((error) => {\n this.handleError(error, err);\n }));\n }\n }\n catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Issues a request to unmute all participants in the meeting\n * @param cb\n * @param err\n */\n unmuteAllParticipantsAsync(cb, err) {\n try {\n Contracts_js_1.Contracts.throwIfDisposed(this.privIsDisposed);\n Contracts_js_1.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\n if (!this.canSendAsHost) {\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"unmute all\")), err);\n }\n if (!!this.privConversationRecognizer) {\n this.privConversationRecognizer.sendRequest(this.getMuteAllCommand(false), (() => {\n this.handleCallback(cb, err);\n }), ((error) => {\n this.handleError(error, err);\n }));\n }\n }\n catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Issues a request to unmute a participant in the meeting\n * @param userId\n * @param cb\n * @param err\n */\n unmuteParticipantAsync(userId, cb, err) {\n try {\n Contracts_js_1.Contracts.throwIfDisposed(this.privIsDisposed);\n Contracts_js_1.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(userId, this.privErrors.invalidArgs.replace(\"{arg}\", \"userId\"));\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\n // check the connection is open (host + participant can perform the mute command)\n if (!this.canSend) {\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\n }\n // if not host, check the participant is not muting another participant\n if (!this.me.isHost && this.me.id !== userId) {\n this.handleError(new Error(this.privErrors.permissionDeniedParticipant.replace(\"{command}\", \"mute\")), err);\n }\n // check the user exists\n const exists = this.privParticipants.getParticipantIndex(userId);\n if (exists === -1) {\n this.handleError(new Error(this.privErrors.invalidParticipantRequest), err);\n }\n if (!!this.privConversationRecognizer) {\n this.privConversationRecognizer.sendRequest(this.getMuteCommand(userId, false), (() => {\n this.handleCallback(cb, err);\n }), ((error) => {\n this.handleError(error, err);\n }));\n }\n }\n catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Send a text message\n * @param message\n * @param cb\n * @param err\n */\n sendTextMessageAsync(message, cb, err) {\n try {\n Contracts_js_1.Contracts.throwIfDisposed(this.privIsDisposed);\n Contracts_js_1.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(message, this.privErrors.invalidArgs.replace(\"{arg}\", \"message\"));\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\n if (!this.canSend) {\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\n }\n // TODO: is a max length check required?\n if (message.length > this.privTextMessageMaxLength) {\n this.handleError(new Error(this.privErrors.invalidArgs.replace(\"{arg}\", \"message length\")), err);\n }\n if (!!this.privConversationRecognizer) {\n this.privConversationRecognizer.sendRequest(this.getMessageCommand(message), (() => {\n this.handleCallback(cb, err);\n }), ((error) => {\n this.handleError(error, err);\n }));\n }\n }\n catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Set translated to languages\n * @param {string[]} languages - languages to translate to\n * @param cb\n * @param err\n */\n setTranslatedLanguagesAsync(languages, cb, err) {\n try {\n Contracts_js_1.Contracts.throwIfDisposed(this.privIsDisposed);\n Contracts_js_1.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\n Contracts_js_1.Contracts.throwIfArrayEmptyOrWhitespace(languages, this.privErrors.invalidArgs.replace(\"{arg}\", \"languages\"));\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\n if (!this.canSend) {\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\n }\n if (!!this.privConversationRecognizer) {\n this.privConversationRecognizer.sendRequest(this.getSetTranslateToLanguagesCommand(languages), (() => {\n this.handleCallback(cb, err);\n }), ((error) => {\n this.handleError(error, err);\n }));\n }\n }\n catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Change nickname\n * @param {string} nickname - new nickname for the room\n * @param cb\n * @param err\n */\n changeNicknameAsync(nickname, cb, err) {\n try {\n Contracts_js_1.Contracts.throwIfDisposed(this.privIsDisposed);\n Contracts_js_1.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(nickname, this.privErrors.invalidArgs.replace(\"{arg}\", \"nickname\"));\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\n if (!this.canSend) {\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\n }\n if (!!this.privConversationRecognizer) {\n this.privConversationRecognizer.sendRequest(this.getChangeNicknameCommand(nickname), (() => {\n this.handleCallback(cb, err);\n }), ((error) => {\n this.handleError(error, err);\n }));\n }\n }\n catch (error) {\n this.handleError(error, err);\n }\n }\n isDisposed() {\n return this.privIsDisposed;\n }\n dispose() {\n if (this.isDisposed) {\n return;\n }\n this.privIsDisposed = true;\n if (!!this.config) {\n this.config.close();\n }\n this.privConfig = undefined;\n this.privLanguage = undefined;\n this.privProperties = undefined;\n this.privRoom = undefined;\n this.privToken = undefined;\n this.privManager = undefined;\n this.privIsConnected = false;\n this.privIsReady = false;\n this.privParticipants = undefined;\n }\n async connectTranscriberRecognizer(recognizer) {\n if (!!this.privTranscriberRecognizer) {\n await this.privTranscriberRecognizer.close();\n }\n await recognizer.enforceAudioGating();\n this.privTranscriberRecognizer = recognizer;\n this.privTranscriberRecognizer.meeting = this;\n }\n getKeepAlive() {\n const nickname = (!!this.me) ? this.me.displayName : \"default_nickname\";\n return JSON.stringify({\n id: \"0\",\n nickname,\n participantId: this.privRoom.participantId,\n roomId: this.privRoom.roomId,\n type: Exports_js_1.ConversationTranslatorMessageTypes.keepAlive\n });\n }\n /* eslint-enable @typescript-eslint/typedef */\n addParticipantImplAsync(participant) {\n const newParticipant = this.privParticipants.addOrUpdateParticipant(participant);\n if (newParticipant !== undefined) {\n if (!!this.privTranscriberRecognizer) {\n const meetingInfo = this.meetingInfo;\n meetingInfo.participants = [participant];\n return this.privTranscriberRecognizer.pushMeetingEvent(meetingInfo, \"join\");\n }\n }\n }\n removeParticipantImplAsync(participant) {\n this.privParticipants.deleteParticipant(participant.id);\n const meetingInfo = this.meetingInfo;\n meetingInfo.participants = [participant];\n return this.privTranscriberRecognizer.pushMeetingEvent(meetingInfo, \"leave\");\n }\n async close(dispose) {\n try {\n this.privIsConnected = false;\n await this.privConversationRecognizer?.close();\n this.privConversationRecognizer = undefined;\n if (!!this.privConversationTranslator) {\n this.privConversationTranslator.dispose();\n }\n }\n catch (e) {\n // ignore error\n throw e;\n }\n if (dispose) {\n this.dispose();\n }\n }\n /** Helpers */\n handleCallback(cb, err) {\n if (!!cb) {\n try {\n cb();\n }\n catch (e) {\n if (!!err) {\n err(e);\n }\n }\n cb = undefined;\n }\n }\n handleError(error, err) {\n if (!!err) {\n if (error instanceof Error) {\n const typedError = error;\n err(typedError.name + \": \" + typedError.message);\n }\n else {\n err(error);\n }\n }\n }\n /** Participant Helpers */\n toParticipants(includeHost) {\n const participants = this.privParticipants.participants.map((p) => (this.toParticipant(p)));\n if (!includeHost) {\n return participants.filter((p) => p.isHost === false);\n }\n else {\n return participants;\n }\n }\n toParticipant(p) {\n return new Exports_js_3.Participant(p.id, p.avatar, p.displayName, p.isHost, p.isMuted, p.isUsingTts, p.preferredLanguage, p.voice);\n }\n getMuteAllCommand(isMuted) {\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"meetingd\");\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\n return JSON.stringify({\n command: Exports_js_1.ConversationTranslatorCommandTypes.setMuteAll,\n participantId: this.privRoom.participantId,\n roomid: this.privRoom.roomId,\n type: Exports_js_1.ConversationTranslatorMessageTypes.participantCommand,\n value: isMuted\n });\n }\n getMuteCommand(participantId, isMuted) {\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"conversationId\");\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(participantId, \"participantId\");\n return JSON.stringify({\n command: Exports_js_1.ConversationTranslatorCommandTypes.setMute,\n // eslint-disable-next-line object-shorthand\n participantId: participantId,\n roomid: this.privRoom.roomId,\n type: Exports_js_1.ConversationTranslatorMessageTypes.participantCommand,\n value: isMuted\n });\n }\n getLockCommand(isLocked) {\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"meetingId\");\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\n return JSON.stringify({\n command: Exports_js_1.ConversationTranslatorCommandTypes.setLockState,\n participantId: this.privRoom.participantId,\n roomid: this.privRoom.roomId,\n type: Exports_js_1.ConversationTranslatorMessageTypes.participantCommand,\n value: isLocked\n });\n }\n getEjectCommand(participantId) {\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"meetingId\");\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(participantId, \"participantId\");\n return JSON.stringify({\n command: Exports_js_1.ConversationTranslatorCommandTypes.ejectParticipant,\n // eslint-disable-next-line object-shorthand\n participantId: participantId,\n roomid: this.privRoom.roomId,\n type: Exports_js_1.ConversationTranslatorMessageTypes.participantCommand,\n });\n }\n getSetTranslateToLanguagesCommand(languages) {\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"meetingId\");\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\n return JSON.stringify({\n command: Exports_js_1.ConversationTranslatorCommandTypes.setTranslateToLanguages,\n participantId: this.privRoom.participantId,\n roomid: this.privRoom.roomId,\n type: Exports_js_1.ConversationTranslatorMessageTypes.participantCommand,\n value: languages\n });\n }\n getChangeNicknameCommand(nickname) {\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"meetingId\");\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(nickname, \"nickname\");\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\n return JSON.stringify({\n command: Exports_js_1.ConversationTranslatorCommandTypes.changeNickname,\n nickname,\n participantId: this.privRoom.participantId,\n roomid: this.privRoom.roomId,\n type: Exports_js_1.ConversationTranslatorMessageTypes.participantCommand,\n value: nickname\n });\n }\n getMessageCommand(message) {\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"meetingId\");\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(message, \"message\");\n return JSON.stringify({\n participantId: this.privRoom.participantId,\n roomId: this.privRoom.roomId,\n text: message,\n type: Exports_js_1.ConversationTranslatorMessageTypes.instantMessage\n });\n }\n}\nexports.MeetingImpl = MeetingImpl;\n\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"script","externalDependencies":[]}
|