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.ConversationImpl = exports.Conversation = 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 Conversation {\n constructor() {\n return;\n }\n /**\n * Create a conversation\n * @param speechConfig\n * @param cb\n * @param err\n */\n static createConversationAsync(speechConfig, arg2, 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 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 let conversationImpl;\n let cb;\n let err;\n if (typeof arg2 === \"string\") {\n conversationImpl = new ConversationImpl(speechConfig, arg2);\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n Exports_js_2.marshalPromiseToCallbacks(_asyncToGenerator(function* () {})(), arg3, arg4);\n } else {\n conversationImpl = new ConversationImpl(speechConfig);\n cb = arg2;\n err = arg3;\n conversationImpl.createConversationAsync(() => {\n if (!!cb) {\n cb();\n }\n }, error => {\n if (!!err) {\n err(error);\n }\n });\n }\n return conversationImpl;\n }\n}\nexports.Conversation = Conversation;\nclass ConversationImpl extends Conversation {\n /**\n * Create a conversation 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 if (!id) {\n // check the target language(s)\n if (speechConfig.targetLanguages.length === 0) {\n speechConfig.addTargetLanguage(this.privLanguage);\n }\n // check the profanity setting: speech and conversationTranslator should be in sync\n const profanity = speechConfig.getProperty(Exports_js_3.PropertyId[Exports_js_3.PropertyId.SpeechServiceResponse_ProfanityOption]);\n if (!profanity) {\n speechConfig.setProfanity(Exports_js_3.ProfanityOption.Masked);\n }\n // check the nickname: it should pass this regex: ^\\w+([\\s-][\\w\\(\\)]+)*$\"\n // TODO: specify the regex required. Nicknames must be unique or get the duplicate nickname error\n // TODO: check what the max length is and if a truncation is required or if the service handles it without an error\n let hostNickname = speechConfig.getProperty(Exports_js_3.PropertyId[Exports_js_3.PropertyId.ConversationTranslator_Name]);\n if (hostNickname === undefined || hostNickname === null) {\n hostNickname = \"Host\";\n }\n Contracts_js_1.Contracts.throwIfNullOrTooLong(hostNickname, \"nickname\", 50);\n Contracts_js_1.Contracts.throwIfNullOrTooShort(hostNickname, \"nickname\", 2);\n speechConfig.setProperty(Exports_js_3.PropertyId[Exports_js_3.PropertyId.ConversationTranslator_Name], hostNickname);\n } else {\n this.privConversationId = id;\n }\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 conversation Id\n get conversationId() {\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 conversationInfo() {\n const convId = this.conversationId;\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 conversationProperties: 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 set conversationTranslator(conversationTranslator) {\n this.privConversationTranslator = conversationTranslator;\n }\n onToken(token) {\n this.privConversationTranslator.onToken(token);\n }\n /**\n * Create a new conversation as Host\n * @param cb\n * @param err\n */\n createConversationAsync(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 conversation as host.\n * @param cb\n * @param err\n */\n startConversationAsync(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 this.privConversationRecognizer = Exports_js_1.ConversationRecognizerFactory.fromConfig(this, this.privConfig);\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 conversation 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 conversation as a participant.\n * @param conversation\n * @param nickname\n * @param lang\n * @param cb\n * @param err\n */\n joinConversationAsync(conversationId, 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(conversationId, 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, conversationId, 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 conversation\n * @param cb\n * @param err\n */\n deleteConversationAsync(cb, err) {\n Exports_js_2.marshalPromiseToCallbacks(this.deleteConversationImplAsync(), cb, err);\n }\n deleteConversationImplAsync() {\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 endConversationAsync(cb, err) {\n Exports_js_2.marshalPromiseToCallbacks(this.endConversationImplAsync(), cb, err);\n }\n endConversationImplAsync() {\n return this.close(true);\n }\n /**\n * Issues a request to lock the conversation\n * @param cb\n * @param err\n */\n lockConversationAsync(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 conversation\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 conversation\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 conversation\n * @param cb\n * @param err\n */\n unlockConversationAsync(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 conversation\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 conversation\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.conversation = _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 conversationInfo = this.conversationInfo;\n conversationInfo.participants = [participant];\n return this.privTranscriberRecognizer.pushConversationEvent(conversationInfo, \"join\");\n }\n }\n }\n removeParticipantImplAsync(participant) {\n this.privParticipants.deleteParticipant(participant.id);\n const conversationInfo = this.conversationInfo;\n conversationInfo.participants = [participant];\n return this.privTranscriberRecognizer.pushConversationEvent(conversationInfo, \"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, \"conversationId\");\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, \"conversationId\");\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, \"conversationId\");\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, \"conversationId\");\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, \"conversationId\");\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, \"conversationId\");\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.ConversationImpl = ConversationImpl;","map":{"version":3,"names":["_asyncToGenerator","require","default","Object","defineProperty","exports","value","ConversationImpl","Conversation","Exports_js_1","Exports_js_2","Contracts_js_1","Exports_js_3","constructor","createConversationAsync","speechConfig","arg2","arg3","arg4","Contracts","throwIfNullOrUndefined","ConversationConnectionConfig","restErrors","invalidArgs","replace","region","subscriptionKey","getProperty","PropertyId","SpeechServiceAuthorization_Token","conversationImpl","cb","err","marshalPromiseToCallbacks","error","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","length","changeNicknameAsync","onConversationExpiration","conversationExpiration","privIsDisposed","privConversationId","privProperties","PropertyCollection","privManager","ConversationManager","language","SpeechServiceConnection_RecoLanguage","setProperty","defaultLanguageCode","privLanguage","targetLanguages","addTargetLanguage","SpeechServiceResponse_ProfanityOption","setProfanity","ProfanityOption","Masked","hostNickname","throwIfNullOrTooLong","throwIfNullOrTooShort","privConfig","configImpl","throwIfNull","clone","InternalParticipants","privTextMessageMaxLength","room","connection","privConversationRecognizer","config","conversationId","roomId","speechRecognitionLanguage","isMutedByHost","_this$privParticipant","_this$privParticipant2","isConnected","host","transcriberRecognizer","privTranscriberRecognizer","conversationInfo","convId","map","part","preferredLanguage","voice","props","transcriptionEventKeys","val","info","conversationProperties","canSend","_this$privParticipant3","canSendAsHost","_this$privParticipant4","authorizationToken","privToken","throwIfNullOrWhitespace","conversationTranslator","onToken","handleError","Error","permissionDeniedStart","createOrJoin","permissionDeniedConnect","handleCallback","startConversationAsync","meId","participantId","ConversationRecognizerFactory","fromConfig","connected","disconnected","participantUpdateCommandReceived","lockRoomCommandReceived","muteAllCommandReceived","participantJoinCommandReceived","participantLeaveCommandReceived","translationReceived","participantsListReceived","connect","addParticipantAsync","addParticipantImplAsync","joinConversationAsync","lang","cognitiveSpeechAuthToken","deleteConversationAsync","deleteConversationImplAsync","_this","leave","dispose","endConversationAsync","endConversationImplAsync","lockConversationAsync","throwIfDisposed","isDisposed","permissionDeniedSend","permissionDeniedConversation","sendRequest","getLockCommand","muteAllParticipantsAsync","getMuteAllCommand","muteParticipantAsync","userId","permissionDeniedParticipant","exists","getParticipantIndex","invalidParticipantRequest","getMuteCommand","removeParticipantAsync","hasOwnProperty","removeParticipantImplAsync","user","index","findIndex","getEjectCommand","unlockConversationAsync","unmuteAllParticipantsAsync","unmuteParticipantAsync","sendTextMessageAsync","message","getMessageCommand","setTranslatedLanguagesAsync","languages","throwIfArrayEmptyOrWhitespace","getSetTranslateToLanguagesCommand","getChangeNicknameCommand","connectTranscriberRecognizer","recognizer","_this2","enforceAudioGating","conversation","getKeepAlive","JSON","stringify","type","keepAlive","pushConversationEvent","_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/Conversation.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.ConversationImpl = exports.Conversation = 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 Conversation {\n constructor() {\n return;\n }\n /**\n * Create a conversation\n * @param speechConfig\n * @param cb\n * @param err\n */\n static createConversationAsync(speechConfig, arg2, 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 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 let conversationImpl;\n let cb;\n let err;\n if (typeof arg2 === \"string\") {\n conversationImpl = new ConversationImpl(speechConfig, arg2);\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n Exports_js_2.marshalPromiseToCallbacks((async () => { })(), arg3, arg4);\n }\n else {\n conversationImpl = new ConversationImpl(speechConfig);\n cb = arg2;\n err = arg3;\n conversationImpl.createConversationAsync((() => {\n if (!!cb) {\n cb();\n }\n }), (error) => {\n if (!!err) {\n err(error);\n }\n });\n }\n return conversationImpl;\n }\n}\nexports.Conversation = Conversation;\nclass ConversationImpl extends Conversation {\n /**\n * Create a conversation 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 if (!id) {\n // check the target language(s)\n if (speechConfig.targetLanguages.length === 0) {\n speechConfig.addTargetLanguage(this.privLanguage);\n }\n // check the profanity setting: speech and conversationTranslator should be in sync\n const profanity = speechConfig.getProperty(Exports_js_3.PropertyId[Exports_js_3.PropertyId.SpeechServiceResponse_ProfanityOption]);\n if (!profanity) {\n speechConfig.setProfanity(Exports_js_3.ProfanityOption.Masked);\n }\n // check the nickname: it should pass this regex: ^\\w+([\\s-][\\w\\(\\)]+)*$\"\n // TODO: specify the regex required. Nicknames must be unique or get the duplicate nickname error\n // TODO: check what the max length is and if a truncation is required or if the service handles it without an error\n let hostNickname = speechConfig.getProperty(Exports_js_3.PropertyId[Exports_js_3.PropertyId.ConversationTranslator_Name]);\n if (hostNickname === undefined || hostNickname === null) {\n hostNickname = \"Host\";\n }\n Contracts_js_1.Contracts.throwIfNullOrTooLong(hostNickname, \"nickname\", 50);\n Contracts_js_1.Contracts.throwIfNullOrTooShort(hostNickname, \"nickname\", 2);\n speechConfig.setProperty(Exports_js_3.PropertyId[Exports_js_3.PropertyId.ConversationTranslator_Name], hostNickname);\n }\n else {\n this.privConversationId = id;\n }\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 conversation Id\n get conversationId() {\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 conversationInfo() {\n const convId = this.conversationId;\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, conversationProperties: 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 set conversationTranslator(conversationTranslator) {\n this.privConversationTranslator = conversationTranslator;\n }\n onToken(token) {\n this.privConversationTranslator.onToken(token);\n }\n /**\n * Create a new conversation as Host\n * @param cb\n * @param err\n */\n createConversationAsync(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 conversation as host.\n * @param cb\n * @param err\n */\n startConversationAsync(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 this.privConversationRecognizer = Exports_js_1.ConversationRecognizerFactory.fromConfig(this, this.privConfig);\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 conversation 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 conversation as a participant.\n * @param conversation\n * @param nickname\n * @param lang\n * @param cb\n * @param err\n */\n joinConversationAsync(conversationId, 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(conversationId, 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, conversationId, ((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 conversation\n * @param cb\n * @param err\n */\n deleteConversationAsync(cb, err) {\n Exports_js_2.marshalPromiseToCallbacks(this.deleteConversationImplAsync(), cb, err);\n }\n async deleteConversationImplAsync() {\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 endConversationAsync(cb, err) {\n Exports_js_2.marshalPromiseToCallbacks(this.endConversationImplAsync(), cb, err);\n }\n endConversationImplAsync() {\n return this.close(true);\n }\n /**\n * Issues a request to lock the conversation\n * @param cb\n * @param err\n */\n lockConversationAsync(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 conversation\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 conversation\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 conversation\n * @param cb\n * @param err\n */\n unlockConversationAsync(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 conversation\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 conversation\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.conversation = 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 conversationInfo = this.conversationInfo;\n conversationInfo.participants = [participant];\n return this.privTranscriberRecognizer.pushConversationEvent(conversationInfo, \"join\");\n }\n }\n }\n removeParticipantImplAsync(participant) {\n this.privParticipants.deleteParticipant(participant.id);\n const conversationInfo = this.conversationInfo;\n conversationInfo.participants = [participant];\n return this.privTranscriberRecognizer.pushConversationEvent(conversationInfo, \"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, \"conversationId\");\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, \"conversationId\");\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, \"conversationId\");\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, \"conversationId\");\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, \"conversationId\");\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, \"conversationId\");\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.ConversationImpl = ConversationImpl;\n\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"script","externalDependencies":[]}
|