{"version":3,"file":"static/js/main.9bbdfc4a.js","mappings":"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I,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,KAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACAuI,EAAAxK,EAAA,MAAAiC,GACA,IAAA4gC,EAAA7iC,EAAA,MAASwB,OA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AAeG,IACf,EACA,KACA,KACA,EACA,GACAJ,EACAA,GACA,GACR,IAAK,kCACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeG,IACf,EACA,KACA,MACA,EACA,GACAJ,EACAA,GACA,GACR,IAAK,mCACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeG,IACf,EACA,KACA,MACA,EACA,GACAJ,EACAA,GACA,GACR,IAAK,gCACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeI,UACf,EACA,KACA,KACA,EACA,GACAL,EACAA,GACA,GAER,IAAK,2BACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeK,IACf,EACA,IACA,KACA,EACA,GACAN,EACA,2BACA,GACR,IAAK,4BACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeK,IACf,EACA,KACA,KACA,EACA,GACAN,EACA,4BACA,GACR,IAAK,4BACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeC,MACf,EACA,IACA,IACA,EACA,EACAF,EACA,4BACA,GACR,IAAK,2BACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeK,IACf,EACA,KACA,KACA,EACA,GACAN,EACA,4BACA,GACR,IAAK,2BACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeK,IACf,EACA,KACA,KACA,EACA,GACAN,EACA,4BACA,GACR,IAAK,0BACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeK,IACf,EACA,IACA,KACA,EACA,GACAN,EACA,2BACA,GACR,IAAK,4BACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeM,SACf,EACA,KACA,KACA,EACA,GACAP,EACAA,GACA,GACR,IAAK,4BACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeM,SACf,EACA,KACA,KACA,EACA,GACAP,EACAA,GACA,GACR,IAAK,2BACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeK,IACf,EACA,KACA,KACA,EACA,GACAN,EACA,4BACA,GACR,IAAK,4BACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeK,IACf,EACA,KACA,KACA,EACA,GACAN,EACA,4BACA,GACR,IAAK,kCACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeG,IACf,EACA,KACA,MACA,EACA,GACAJ,EACAA,GACA,GACR,IAAK,mCACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeG,IACf,EACA,KACA,MACA,EACA,GACAJ,EACAA,GACA,GACR,IAAK,4BACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeM,SACf,EACA,KACA,KACA,EACA,GACAP,EACAA,GACA,GACR,IAAK,6BACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeO,UACf,EACA,KACA,IACA,EACA,GACAR,EACAA,GACA,GACR,IAAK,6BACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeO,UACf,EACA,KACA,IACA,EACA,GACAR,EACAA,GACA,GACR,IAAK,oCACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeO,UACf,EACA,KACA,IACA,EACA,GACAR,EACAA,GACA,GACR,IAAK,qCACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeQ,KACf,EACA,KACA,IACA,EACA,GACAT,EACAA,GACA,GACR,IAAK,qCACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeQ,KACf,EACA,KACA,IACA,EACA,GACAT,EACAA,GACA,GACR,IAAK,qCACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeQ,KACf,EACA,KACA,IACA,EACA,GACAT,EACAA,GACA,GACR,IAAK,8BACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeS,KACf,EACA,KACA,KACA,EACA,GACAV,EACAA,GACA,GACR,IAAK,8BACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeS,KACf,EACA,KACA,IACA,EACA,GACAV,EACAA,GACA,GACR,IAAK,gCACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeI,UACf,EACA,KACA,KACA,EACA,GACAL,EACAA,GACA,GACR,IAAK,0BACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeU,KACf,EACA,IACA,IACA,EACA,EACAX,EACAA,GACA,GACR,IAAK,2BACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeU,KACf,EACA,IACA,IACA,EACA,EACAX,EACA,2BACA,GACR,IAAK,6BACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeK,IACf,EACA,MACA,MACA,EACA,GACAN,EACAA,GACA,GACR,IAAK,8BACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeK,IACf,EACA,MACA,MACA,EACA,GACAN,EACA,8BACA,GACR,IAAK,6BACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeK,IACf,EACA,MACA,MACA,EACA,GACAN,EACAA,GACA,GACR,IAAK,8BACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeK,IACf,EACA,MACA,MACA,EACA,GACAN,EACA,8BACA,GACR,IAAK,gBACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeW,OACf,EACA,KACA,KACA,EACA,GACAZ,EACAA,GACA,GACR,IAAK,oBACD,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeY,KACf,EACA,KACA,IACA,EACA,GACAb,EACAA,GACA,GAER,QACI,OAAO,IAAInvC,EACPlxB,EAAAsgE,eAAeK,IACf,EACA,KACA,KACA,EACA,GACA,4BACA,4BACA,GAEhB,CAEO,6BAAOvtC,GACV,OAAOlC,EAAsBC,sCACN,qBAAXxwB,OAA0B,kCAAoC,4BAC9E,CAgBA,aAAWgzC,GACP,OAAOhgD,KAAKssE,YAChB,CAQA,UAAWx8D,GACP,GAAI9P,KAAKggD,UACL,OAAOhgD,KAAKwtE,UAGpB,CASO9C,YAAAA,CAAatF,GAChB,GAAIplE,KAAKssE,aAAc,CACnB,MAAMn8D,EAAO,IAAIC,SAASpQ,KAAKwtE,YAC/Br9D,EAAKs9D,UAAU,EAAGrI,EAAcplE,KAAKwtE,WAAW57D,WAAa,GAAG,GAChEzB,EAAKs9D,UAAU,GAAIrI,GAAa,GAExC,CAQA,4BAAWtnB,GACP,OAAO99C,KAAKqs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","sources":["../node_modules/bent/src/browser.js","../node_modules/bent/src/core.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/microsoft.cognitiveservices.speech.sdk.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/ConsoleLoggingListener.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/Exports.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/FileAudioSource.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/MicAudioSource.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/PCMRecorder.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/ProxyInfo.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/ReplayableAudioNode.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/RestConfigBase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/RestMessageAdapter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/WebsocketConnection.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/WebsocketMessageAdapter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/AddedLmIntent.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/AgentConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/AvatarSynthesisAdapter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/CognitiveSubscriptionKeyAuthentication.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/CognitiveTokenAuthentication.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/ConnectionFactoryBase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/ConversationServiceRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/ConversationTranscriberConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/ConversationTranscriptionServiceRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/DialogConnectorFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/DialogServiceAdapter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/DialogServiceTurnState.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/DialogServiceTurnStateManager.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/DynamicGrammarBuilder.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/EnumTranslation.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/Exports.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/HeaderNames.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/IAuthentication.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/IntentConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/IntentServiceRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/QueryParameterNames.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/RecognitionEvents.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/RecognizerConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/RequestSession.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/ActivityResponsePayload.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/DetailedSpeechPhrase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/Enums.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/IntentResponse.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/SimpleSpeechPhrase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/SpeechDetected.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/SpeechHypothesis.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/SpeechKeyword.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/SynthesisAudioMetadata.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/TranslationHypothesis.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/TranslationPhrase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/TranslationSynthesisEnd.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/TurnStatusPayload.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/ServiceRecognizerBase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/ServiceTelemetryListener.Internal.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeakerRecognitionConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeakerRecognitionConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeakerServiceRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeechConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeechConnectionMessage.Internal.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeechContext.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeechServiceConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeechServiceRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeechSynthesisAdapter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeechSynthesisConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SynthesisAdapterBase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SynthesisContext.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SynthesisEvents.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SynthesisRestAdapter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SynthesisTurn.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SynthesizerConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/TranscriberConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/TranscriptionServiceRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationConnectionConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationConnectionMessage.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationManager.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationRequestSession.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationServiceAdapter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationTranslatorConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationTranslatorEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationTranslatorInterfaces.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationTranslatorRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationWebsocketMessageFormatter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/Exports.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/ServiceMessages/src/common.speech/Transcription/ServiceMessages/CommandResponsePayload.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/ServiceMessages/src/common.speech/Transcription/ServiceMessages/Exports.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/ServiceMessages/src/common.speech/Transcription/ServiceMessages/ParticipantResponsePayload.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/ServiceMessages/src/common.speech/Transcription/ServiceMessages/TranslationResponsePayload.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/TranscriberRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/TranslationConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/TranslationServiceRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/TranslationStatus.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/VoiceServiceRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/WebsocketMessageFormatter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/AudioSourceEvents.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/BackgroundError.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/ChunkedArrayBufferStream.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/ConnectionEvents.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/ConnectionMessage.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/ConnectionOpenResponse.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/DeferralMap.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/DialogEvents.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/Error.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/EventSource.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/Events.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/Exports.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/Guid.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/IConnection.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/List.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/OCSPEvents.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/PlatformEvent.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/Promise.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/Queue.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/RawWebsocketMessage.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/RiffPcmEncoder.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/Stream.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/StringUtils.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/Timeout.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ActivityReceivedEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/AudioConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/AudioFileWriter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/AudioInputStream.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/AudioOutputFormat.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/AudioOutputStream.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/AudioStreamFormat.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/BaseAudioPlayer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/PullAudioInputStreamCallback.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/PushAudioOutputStreamCallback.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/SpeakerAudioDestination.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/AutoDetectSourceLanguageConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/AutoDetectSourceLanguageResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/AvatarConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/AvatarEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/AvatarSynthesizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/AvatarVideoFormat.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/AvatarWebRTCConnectionResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/BotFrameworkConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/CancellationDetails.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/CancellationDetailsBase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/CancellationErrorCodes.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/CancellationEventArgsBase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/CancellationReason.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/Connection.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ConnectionEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ConnectionMessage.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ConnectionMessageEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/Contracts.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ConversationTranscriptionCanceledEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/CustomCommandsConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/Diagnostics.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/DialogServiceConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/DialogServiceConnector.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/Exports.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/IntentRecognitionCanceledEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/IntentRecognitionEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/IntentRecognitionResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/IntentRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/KeywordRecognitionModel.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/LanguageIdMode.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/LanguageUnderstandingModel.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/LogLevel.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/MeetingTranscriptionCanceledEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/NoMatchDetails.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/NoMatchReason.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/OutputFormat.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/PhraseListGrammar.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ProfanityOption.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/PronunciationAssessmentConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/PronunciationAssessmentGradingSystem.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/PronunciationAssessmentGranularity.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/PronunciationAssessmentResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/PropertyCollection.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/PropertyId.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/RecognitionEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/RecognitionResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/Recognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ResultReason.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ServiceEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ServicePropertyChannel.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SessionEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SourceLanguageConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeakerIdentificationModel.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeakerRecognitionResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeakerRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeakerVerificationModel.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechRecognitionCanceledEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechRecognitionEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechRecognitionResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechSynthesisBookmarkEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechSynthesisBoundaryType.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechSynthesisEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechSynthesisOutputFormat.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechSynthesisResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechSynthesisVisemeEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechSynthesisWordBoundaryEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechSynthesizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechTranslationConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SynthesisResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SynthesisVoicesResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/Synthesizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/Conversation.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationCommon.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationExpirationEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationParticipantsChangedEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationTranscriber.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationTranscriptionResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationTranslationCanceledEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationTranslationEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationTranslationResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationTranslator.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/Exports.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/IParticipant.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/Meeting.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/MeetingTranscriber.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/MeetingTranscriptionCanceledEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ParticipantChangedReason.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/TranslationRecognitionCanceledEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/TranslationRecognitionEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/TranslationRecognitionResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/TranslationRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/TranslationSynthesisEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/TranslationSynthesisResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/Translations.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/TurnStatusReceivedEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/VoiceInfo.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/VoiceProfile.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/VoiceProfileClient.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/VoiceProfileEnrollmentResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/VoiceProfilePhraseResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/VoiceProfileResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/VoiceProfileType.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/index.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/md5.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/native.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/nil.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/parse.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/regex.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/rng.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/sha1.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/stringify.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/v1.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/v3.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/v35.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/v4.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/v5.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/validate.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/version.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../webpack/bootstrap","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","apiService.js","../node_modules/clsx/dist/clsx.mjs","../node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","../node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","../node_modules/@mui/utils/esm/composeClasses/composeClasses.js","../node_modules/@mui/utils/esm/formatMuiErrorMessage/formatMuiErrorMessage.js","../node_modules/@mui/utils/esm/capitalize/capitalize.js","../node_modules/@mui/utils/esm/resolveProps/resolveProps.js","../node_modules/@mui/utils/esm/deepmerge/deepmerge.js","../node_modules/@mui/system/esm/createBreakpoints/createBreakpoints.js","../node_modules/@mui/system/esm/createTheme/shape.js","../node_modules/@mui/system/esm/breakpoints/breakpoints.js","../node_modules/@mui/system/esm/cssContainerQueries/cssContainerQueries.js","../node_modules/@mui/system/esm/style/style.js","../node_modules/@mui/system/esm/merge/merge.js","../node_modules/@mui/system/esm/spacing/spacing.js","../node_modules/@mui/system/esm/memoize/memoize.js","../node_modules/@mui/system/esm/createTheme/createSpacing.js","../node_modules/@mui/system/esm/compose/compose.js","../node_modules/@mui/system/esm/borders/borders.js","../node_modules/@mui/system/esm/cssGrid/cssGrid.js","../node_modules/@mui/system/esm/palette/palette.js","../node_modules/@mui/system/esm/sizing/sizing.js","../node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","../node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","../node_modules/@mui/system/esm/createTheme/applyStyles.js","../node_modules/@mui/system/esm/createTheme/createTheme.js","../node_modules/@emotion/sheet/dist/emotion-sheet.esm.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Parser.js","../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../node_modules/stylis/src/Middleware.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.esm.js","../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../node_modules/@emotion/react/dist/emotion-element-5486c51c.browser.esm.js","../node_modules/@mui/system/esm/useThemeWithoutDefault/useThemeWithoutDefault.js","../node_modules/@mui/system/esm/useTheme/useTheme.js","../node_modules/@mui/system/esm/useThemeProps/useThemeProps.js","../node_modules/@mui/system/esm/useThemeProps/getThemeProps.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js","../node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js","../node_modules/@mui/styled-engine/index.js","../node_modules/@mui/system/esm/preprocessStyles.js","../node_modules/@mui/system/esm/createStyled/createStyled.js","../node_modules/@mui/system/esm/styled/styled.js","../node_modules/@mui/system/esm/Container/createContainer.js","../node_modules/@mui/material/utils/capitalize.js","../node_modules/@mui/utils/esm/clamp/clamp.js","../node_modules/@mui/system/esm/colorManipulator/colorManipulator.js","../node_modules/@mui/material/colors/common.js","../node_modules/@mui/material/colors/grey.js","../node_modules/@mui/material/colors/purple.js","../node_modules/@mui/material/colors/red.js","../node_modules/@mui/material/colors/orange.js","../node_modules/@mui/material/colors/blue.js","../node_modules/@mui/material/colors/lightBlue.js","../node_modules/@mui/material/colors/green.js","../node_modules/@mui/material/styles/createPalette.js","../node_modules/@mui/system/esm/cssVars/createGetCssVar.js","../node_modules/@mui/system/esm/cssVars/prepareTypographyVars.js","../node_modules/@mui/system/esm/cssVars/cssVarsParser.js","../node_modules/@mui/system/esm/cssVars/prepareCssVars.js","../node_modules/@mui/material/styles/createMixins.js","../node_modules/@mui/material/styles/createTypography.js","../node_modules/@mui/material/styles/shadows.js","../node_modules/@mui/material/styles/createTransitions.js","../node_modules/@mui/material/styles/zIndex.js","../node_modules/@mui/material/styles/stringifyTheme.js","../node_modules/@mui/material/styles/createThemeNoVars.js","../node_modules/@mui/material/styles/getOverlayAlpha.js","../node_modules/@mui/material/styles/createColorScheme.js","../node_modules/@mui/material/styles/shouldSkipGeneratingVar.js","../node_modules/@mui/material/styles/excludeVariablesFromRoot.js","../node_modules/@mui/material/styles/createGetSelector.js","../node_modules/@mui/material/styles/createThemeWithVars.js","../node_modules/@mui/system/esm/cssVars/getColorSchemeSelector.js","../node_modules/@mui/material/styles/createTheme.js","../node_modules/@mui/material/styles/defaultTheme.js","../node_modules/@mui/material/styles/identifier.js","../node_modules/@mui/material/styles/slotShouldForwardProp.js","../node_modules/@mui/material/styles/rootShouldForwardProp.js","../node_modules/@mui/material/styles/styled.js","../node_modules/@mui/system/esm/DefaultPropsProvider/DefaultPropsProvider.js","../node_modules/@mui/material/DefaultPropsProvider/DefaultPropsProvider.js","../node_modules/@mui/material/Container/Container.js","../node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js","../node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","../node_modules/@mui/material/Box/boxClasses.js","../node_modules/@mui/material/Box/Box.js","../node_modules/@mui/system/esm/createBox/createBox.js","../node_modules/@mui/system/esm/RtlProvider/index.js","../node_modules/@mui/utils/esm/setRef/setRef.js","../node_modules/@mui/utils/esm/useForkRef/useForkRef.js","../node_modules/@mui/utils/esm/isHostComponent/isHostComponent.js","../node_modules/@mui/utils/esm/appendOwnerState/appendOwnerState.js","../node_modules/@mui/utils/esm/extractEventHandlers/extractEventHandlers.js","../node_modules/@mui/utils/esm/omitEventHandlers/omitEventHandlers.js","../node_modules/@mui/utils/esm/mergeSlotProps/mergeSlotProps.js","../node_modules/@mui/utils/esm/resolveComponentProps/resolveComponentProps.js","../node_modules/@mui/utils/esm/useSlotProps/useSlotProps.js","../node_modules/@mui/material/styles/useTheme.js","../node_modules/@mui/system/esm/memoTheme.js","../node_modules/@mui/material/utils/memoTheme.js","../node_modules/@mui/utils/esm/debounce/debounce.js","../node_modules/@mui/material/utils/debounce.js","../node_modules/@mui/material/internal/animate.js","../node_modules/@mui/utils/esm/useEnhancedEffect/useEnhancedEffect.js","../node_modules/@mui/material/utils/useEnhancedEffect.js","../node_modules/@mui/utils/esm/ownerDocument/ownerDocument.js","../node_modules/@mui/utils/esm/ownerWindow/ownerWindow.js","../node_modules/@mui/material/utils/ownerWindow.js","../node_modules/@mui/material/Tabs/ScrollbarSize.js","../node_modules/@mui/material/SvgIcon/svgIconClasses.js","../node_modules/@mui/material/SvgIcon/SvgIcon.js","../node_modules/@mui/material/utils/createSvgIcon.js","../node_modules/@mui/material/internal/svg-icons/KeyboardArrowLeft.js","../node_modules/@mui/material/internal/svg-icons/KeyboardArrowRight.js","../node_modules/@mui/utils/esm/isFocusVisible/isFocusVisible.js","../node_modules/@mui/material/utils/useForkRef.js","../node_modules/@mui/utils/esm/useEventCallback/useEventCallback.js","../node_modules/@mui/material/utils/useEventCallback.js","../node_modules/@mui/utils/esm/useLazyRef/useLazyRef.js","../node_modules/@mui/material/useLazyRipple/useLazyRipple.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@mui/utils/esm/useOnMount/useOnMount.js","../node_modules/@mui/utils/esm/useTimeout/useTimeout.js","../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../node_modules/@mui/material/ButtonBase/Ripple.js","../node_modules/@mui/material/ButtonBase/touchRippleClasses.js","../node_modules/@mui/material/ButtonBase/TouchRipple.js","../node_modules/@mui/material/ButtonBase/buttonBaseClasses.js","../node_modules/@mui/material/ButtonBase/ButtonBase.js","../node_modules/@mui/material/TabScrollButton/tabScrollButtonClasses.js","../node_modules/@mui/material/TabScrollButton/TabScrollButton.js","../node_modules/@mui/material/Tabs/tabsClasses.js","../node_modules/@mui/material/utils/ownerDocument.js","../node_modules/@mui/material/Tabs/Tabs.js","../node_modules/@mui/material/Tab/tabClasses.js","../node_modules/@mui/material/Tab/Tab.js","../node_modules/@mui/styled-engine/GlobalStyles/GlobalStyles.js","../node_modules/@mui/system/esm/GlobalStyles/GlobalStyles.js","../node_modules/@mui/material/GlobalStyles/GlobalStyles.js","../node_modules/@mui/material/utils/createSimplePaletteValueFilter.js","../node_modules/@mui/material/Typography/typographyClasses.js","../node_modules/@mui/material/Typography/Typography.js","../node_modules/@mui/material/zero-styled/index.js","../node_modules/@mui/utils/esm/useId/useId.js","../node_modules/@mui/material/TextareaAutosize/TextareaAutosize.js","../node_modules/@mui/material/utils/isHostComponent.js","../node_modules/@mui/material/FormControl/formControlState.js","../node_modules/@mui/material/FormControl/FormControlContext.js","../node_modules/@mui/material/FormControl/useFormControl.js","../node_modules/@mui/material/InputBase/utils.js","../node_modules/@mui/material/InputBase/inputBaseClasses.js","../node_modules/@mui/material/InputBase/InputBase.js","../node_modules/@mui/material/Input/inputClasses.js","../node_modules/@mui/material/Input/Input.js","../node_modules/@mui/material/FilledInput/filledInputClasses.js","../node_modules/@mui/material/FilledInput/FilledInput.js","../node_modules/@mui/material/OutlinedInput/NotchedOutline.js","../node_modules/@mui/material/OutlinedInput/outlinedInputClasses.js","../node_modules/@mui/material/OutlinedInput/OutlinedInput.js","../node_modules/@mui/material/FormLabel/formLabelClasses.js","../node_modules/@mui/material/FormLabel/FormLabel.js","../node_modules/@mui/material/InputLabel/inputLabelClasses.js","../node_modules/@mui/material/InputLabel/InputLabel.js","../node_modules/@mui/material/utils/isMuiElement.js","../node_modules/@mui/utils/esm/isMuiElement/isMuiElement.js","../node_modules/@mui/material/FormControl/formControlClasses.js","../node_modules/@mui/material/FormControl/FormControl.js","../node_modules/@mui/material/FormHelperText/formHelperTextClasses.js","../node_modules/@mui/material/FormHelperText/FormHelperText.js","../node_modules/@mui/utils/esm/getReactElementRef/getReactElementRef.js","../node_modules/@mui/material/List/ListContext.js","../node_modules/@mui/material/List/listClasses.js","../node_modules/@mui/material/List/List.js","../node_modules/@mui/utils/esm/getScrollbarSize/getScrollbarSize.js","../node_modules/@mui/material/utils/getScrollbarSize.js","../node_modules/@mui/material/MenuList/MenuList.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/@mui/material/transitions/utils.js","../node_modules/@mui/material/Grow/Grow.js","../node_modules/@mui/material/Unstable_TrapFocus/FocusTrap.js","../node_modules/@mui/material/Portal/Portal.js","../node_modules/@mui/material/utils/useSlot.js","../node_modules/@mui/material/Fade/Fade.js","../node_modules/@mui/material/Backdrop/backdropClasses.js","../node_modules/@mui/material/Backdrop/Backdrop.js","../node_modules/@mui/utils/esm/createChainedFunction/createChainedFunction.js","../node_modules/@mui/material/Modal/ModalManager.js","../node_modules/@mui/material/Modal/useModal.js","../node_modules/@mui/material/Modal/modalClasses.js","../node_modules/@mui/material/Modal/Modal.js","../node_modules/@mui/material/Paper/paperClasses.js","../node_modules/@mui/material/Paper/Paper.js","../node_modules/@mui/material/Popover/popoverClasses.js","../node_modules/@mui/material/Popover/Popover.js","../node_modules/@mui/material/Menu/menuClasses.js","../node_modules/@mui/material/Menu/Menu.js","../node_modules/@mui/material/NativeSelect/nativeSelectClasses.js","../node_modules/@mui/material/NativeSelect/NativeSelectInput.js","../node_modules/@mui/material/utils/useControlled.js","../node_modules/@mui/utils/esm/useControlled/useControlled.js","../node_modules/@mui/material/Select/selectClasses.js","../node_modules/@mui/material/Select/SelectInput.js","../node_modules/@mui/material/internal/svg-icons/ArrowDropDown.js","../node_modules/@mui/material/Select/Select.js","../node_modules/@mui/material/TextField/textFieldClasses.js","../node_modules/@mui/material/TextField/TextField.js","../node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../node_modules/@mui/material/CircularProgress/CircularProgress.js","../node_modules/@mui/material/Button/buttonClasses.js","../node_modules/@mui/material/ButtonGroup/ButtonGroupContext.js","../node_modules/@mui/material/ButtonGroup/ButtonGroupButtonContext.js","../node_modules/@mui/material/Button/Button.js","../node_modules/@mui/material/Divider/dividerClasses.js","../node_modules/@mui/material/ListItemIcon/listItemIconClasses.js","../node_modules/@mui/material/ListItemText/listItemTextClasses.js","../node_modules/@mui/material/MenuItem/menuItemClasses.js","../node_modules/@mui/material/MenuItem/MenuItem.js","../node_modules/@mui/material/Grid/GridContext.js","../node_modules/@mui/material/Grid/gridClasses.js","../node_modules/@mui/material/Grid/Grid.js","../node_modules/@mui/material/IconButton/iconButtonClasses.js","../node_modules/@mui/material/IconButton/IconButton.js","../node_modules/@mui/material/Collapse/collapseClasses.js","../node_modules/@mui/material/Collapse/Collapse.js","../node_modules/@mui/material/Accordion/AccordionContext.js","../node_modules/@mui/material/Accordion/accordionClasses.js","../node_modules/@mui/material/Accordion/Accordion.js","../node_modules/@mui/material/AccordionSummary/accordionSummaryClasses.js","../node_modules/@mui/material/AccordionSummary/AccordionSummary.js","../node_modules/@mui/material/AccordionDetails/accordionDetailsClasses.js","../node_modules/@mui/material/AccordionDetails/AccordionDetails.js","../node_modules/@mui/material/Dialog/dialogClasses.js","../node_modules/@mui/material/Dialog/DialogContext.js","../node_modules/@mui/material/Dialog/Dialog.js","../node_modules/@mui/material/DialogTitle/dialogTitleClasses.js","../node_modules/@mui/material/DialogTitle/DialogTitle.js","../node_modules/@mui/material/DialogContent/dialogContentClasses.js","../node_modules/@mui/material/DialogContent/DialogContent.js","../node_modules/@mui/material/DialogActions/dialogActionsClasses.js","../node_modules/@mui/material/DialogActions/DialogActions.js","../node_modules/@mui/icons-material/esm/Add.js","../node_modules/@mui/icons-material/esm/Mic.js","../node_modules/@mui/icons-material/esm/Edit.js","../node_modules/@mui/icons-material/esm/Delete.js","../node_modules/@mui/icons-material/esm/ExpandMore.js","App.js","reportWebVitals.js","index.js"],"sourcesContent":["'use strict'\n/* global fetch, btoa, Headers */\nconst core = require('./core')\n\nclass StatusError extends Error {\n constructor (res, ...params) {\n super(...params)\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, StatusError)\n }\n\n this.name = 'StatusError'\n this.message = res.statusMessage\n this.statusCode = res.status\n this.res = res\n this.json = res.json.bind(res)\n this.text = res.text.bind(res)\n this.arrayBuffer = res.arrayBuffer.bind(res)\n let buffer\n const get = () => {\n if (!buffer) buffer = this.arrayBuffer()\n return buffer\n }\n Object.defineProperty(this, 'responseBody', { get })\n // match Node.js headers object\n this.headers = {}\n for (const [key, value] of res.headers.entries()) {\n this.headers[key.toLowerCase()] = value\n }\n }\n}\n\nconst mkrequest = (statusCodes, method, encoding, headers, baseurl) => async (_url, body, _headers = {}) => {\n _url = baseurl + (_url || '')\n let parsed = new URL(_url)\n\n if (!headers) headers = {}\n if (parsed.username) {\n headers.Authorization = 'Basic ' + btoa(parsed.username + ':' + parsed.password)\n parsed = new URL(parsed.protocol + '//' + parsed.host + parsed.pathname + parsed.search)\n }\n if (parsed.protocol !== 'https:' && parsed.protocol !== 'http:') {\n throw new Error(`Unknown protocol, ${parsed.protocol}`)\n }\n\n if (body) {\n if (body instanceof ArrayBuffer ||\n ArrayBuffer.isView(body) ||\n typeof body === 'string'\n ) {\n // noop\n } else if (typeof body === 'object') {\n body = JSON.stringify(body)\n headers['Content-Type'] = 'application/json'\n } else {\n throw new Error('Unknown body type.')\n }\n }\n\n _headers = new Headers({ ...(headers || {}), ..._headers })\n\n const resp = await fetch(parsed, { method, headers: _headers, body })\n resp.statusCode = resp.status\n\n if (!statusCodes.has(resp.status)) {\n throw new StatusError(resp)\n }\n\n if (encoding === 'json') return resp.json()\n else if (encoding === 'buffer') return resp.arrayBuffer()\n else if (encoding === 'string') return resp.text()\n else return resp\n}\n\nmodule.exports = core(mkrequest)\n","'use strict'\nconst encodings = new Set(['json', 'buffer', 'string'])\n\nmodule.exports = mkrequest => (...args) => {\n const statusCodes = new Set()\n let method\n let encoding\n let headers\n let baseurl = ''\n\n args.forEach(arg => {\n if (typeof arg === 'string') {\n if (arg.toUpperCase() === arg) {\n if (method) {\n const msg = `Can't set method to ${arg}, already set to ${method}.`\n throw new Error(msg)\n } else {\n method = arg\n }\n } else if (arg.startsWith('http:') || arg.startsWith('https:')) {\n baseurl = arg\n } else {\n if (encodings.has(arg)) {\n encoding = arg\n } else {\n throw new Error(`Unknown encoding, ${arg}`)\n }\n }\n } else if (typeof arg === 'number') {\n statusCodes.add(arg)\n } else if (typeof arg === 'object') {\n if (Array.isArray(arg) || arg instanceof Set) {\n arg.forEach(code => statusCodes.add(code))\n } else {\n if (headers) {\n throw new Error('Cannot set headers twice.')\n }\n headers = arg\n }\n } else {\n throw new Error(`Unknown type: ${typeof arg}`)\n }\n })\n\n if (!method) method = 'GET'\n if (statusCodes.size === 0) {\n statusCodes.add(200)\n }\n\n return mkrequest(statusCodes, method, encoding, headers, baseurl)\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\nimport { AgentConfig } from \"./src/common.speech/Exports.js\";\r\n\r\n// Note: this instantiation ensures the above import isn't\r\n// removed on compile. The import being absent causes an error on running\r\nvoid new AgentConfig();\r\n\r\n// Speech SDK API\r\nexport * from \"./src/sdk/Exports.js\";\r\n","/* eslint-disable @typescript-eslint/no-unsafe-assignment */\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport * as fs from \"fs\";\r\nimport { LogLevel } from \"../sdk/LogLevel.js\";\r\nimport { IEventListener, PlatformEvent } from \"../common/Exports.js\";\r\nimport { Contracts } from \"../sdk/Contracts.js\";\r\n\r\nexport class ConsoleLoggingListener implements IEventListener {\r\n private privLogLevelFilter: LogLevel;\r\n private privLogPath: fs.PathLike = undefined;\r\n private privEnableConsoleOutput: boolean = true;\r\n\r\n public logCallback: (s: string) => void;\r\n\r\n public constructor(logLevelFilter: LogLevel = LogLevel.None) { // Console output disabled by default\r\n this.privLogLevelFilter = logLevelFilter;\r\n }\r\n\r\n public set logPath(path: fs.PathLike) {\r\n Contracts.throwIfNullOrUndefined(fs.openSync, \"\\nFile System access not available\");\r\n this.privLogPath = path;\r\n }\r\n\r\n public set enableConsoleOutput(enableOutput: boolean) {\r\n this.privEnableConsoleOutput = enableOutput;\r\n }\r\n\r\n public onEvent(event: PlatformEvent): void {\r\n if (event.eventType >= this.privLogLevelFilter) {\r\n const log = this.toString(event);\r\n if (!!this.logCallback) {\r\n this.logCallback(log);\r\n }\r\n if (!!this.privLogPath) {\r\n fs.writeFileSync(this.privLogPath, log + \"\\n\", { flag: \"a+\" });\r\n }\r\n\r\n if (this.privEnableConsoleOutput) {\r\n switch (event.eventType) {\r\n case LogLevel.Debug:\r\n // eslint-disable-next-line no-console\r\n console.debug(log);\r\n break;\r\n case LogLevel.Info:\r\n // eslint-disable-next-line no-console\r\n console.info(log);\r\n break;\r\n case LogLevel.Warning:\r\n // eslint-disable-next-line no-console\r\n console.warn(log);\r\n break;\r\n case LogLevel.Error:\r\n // eslint-disable-next-line no-console\r\n console.error(log);\r\n break;\r\n default:\r\n // eslint-disable-next-line no-console\r\n console.log(log);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private toString(event: PlatformEvent): string {\r\n const logFragments = [\r\n `${event.eventTime}`,\r\n `${event.name}`,\r\n ];\r\n\r\n const e: any = event as any;\r\n for (const prop in e) {\r\n if (prop && event.hasOwnProperty(prop) &&\r\n prop !== \"eventTime\" && prop !== \"eventType\" &&\r\n prop !== \"eventId\" && prop !== \"name\" &&\r\n prop !== \"constructor\") {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\r\n const value = e[prop];\r\n let valueToLog = \"\";\r\n if (value !== undefined && value !== null) {\r\n if (typeof (value) === \"number\" || typeof (value) === \"string\") {\r\n valueToLog = value.toString();\r\n } else {\r\n valueToLog = JSON.stringify(value);\r\n }\r\n }\r\n\r\n logFragments.push(`${prop}: ${valueToLog}`);\r\n }\r\n\r\n }\r\n\r\n return logFragments.join(\" | \");\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport * from \"./ConsoleLoggingListener.js\";\r\nexport * from \"./IRecorder.js\";\r\nexport * from \"./MicAudioSource.js\";\r\nexport * from \"./FileAudioSource.js\";\r\nexport * from \"./PCMRecorder.js\";\r\nexport * from \"./WebsocketConnection.js\";\r\nexport * from \"./WebsocketMessageAdapter.js\";\r\nexport * from \"./ReplayableAudioNode.js\";\r\nexport * from \"./ProxyInfo.js\";\r\nexport * from \"./RestMessageAdapter.js\";\r\nexport * from \"./RestConfigBase.js\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n connectivity,\r\n ISpeechConfigAudioDevice,\r\n type,\r\n} from \"../common.speech/Exports.js\";\r\nimport {\r\n AudioSourceErrorEvent,\r\n AudioSourceEvent,\r\n AudioSourceInitializingEvent,\r\n AudioSourceOffEvent,\r\n AudioSourceReadyEvent,\r\n AudioStreamNodeAttachedEvent,\r\n AudioStreamNodeAttachingEvent,\r\n AudioStreamNodeDetachedEvent,\r\n AudioStreamNodeErrorEvent,\r\n ChunkedArrayBufferStream,\r\n createNoDashGuid,\r\n Deferred,\r\n Events,\r\n EventSource,\r\n IAudioSource,\r\n IAudioStreamNode,\r\n IStreamChunk,\r\n IStringDictionary,\r\n Stream,\r\n} from \"../common/Exports.js\";\r\nimport { AudioStreamFormat, AudioStreamFormatImpl } from \"../sdk/Audio/AudioStreamFormat.js\";\r\n\r\nexport class FileAudioSource implements IAudioSource {\r\n\r\n private privAudioFormatPromise: Promise;\r\n\r\n private privStreams: IStringDictionary> = {};\r\n\r\n private privId: string;\r\n\r\n private privEvents: EventSource;\r\n\r\n private privSource: Blob | Buffer;\r\n\r\n private privFilename: string;\r\n\r\n private privHeaderEnd: number = 44;\r\n\r\n public constructor(file: File | Buffer, filename?: string, audioSourceId?: string) {\r\n this.privId = audioSourceId ? audioSourceId : createNoDashGuid();\r\n this.privEvents = new EventSource();\r\n this.privSource = file;\r\n if (typeof window !== \"undefined\" && typeof Blob !== \"undefined\" && this.privSource instanceof Blob) {\r\n this.privFilename = (file as File).name;\r\n } else {\r\n this.privFilename = filename || \"unknown.wav\";\r\n }\r\n\r\n // Read the header.\r\n this.privAudioFormatPromise = this.readHeader();\r\n }\r\n\r\n public get format(): Promise {\r\n return this.privAudioFormatPromise;\r\n }\r\n\r\n public turnOn(): Promise {\r\n if (this.privFilename.lastIndexOf(\".wav\") !== this.privFilename.length - 4) {\r\n const errorMsg = this.privFilename + \" is not supported. Only WAVE files are allowed at the moment.\";\r\n this.onEvent(new AudioSourceErrorEvent(errorMsg, \"\"));\r\n return Promise.reject(errorMsg);\r\n }\r\n\r\n this.onEvent(new AudioSourceInitializingEvent(this.privId)); // no stream id\r\n this.onEvent(new AudioSourceReadyEvent(this.privId));\r\n return;\r\n }\r\n\r\n public id(): string {\r\n return this.privId;\r\n }\r\n\r\n public async attach(audioNodeId: string): Promise {\r\n this.onEvent(new AudioStreamNodeAttachingEvent(this.privId, audioNodeId));\r\n\r\n const stream: Stream = await this.upload(audioNodeId);\r\n\r\n this.onEvent(new AudioStreamNodeAttachedEvent(this.privId, audioNodeId));\r\n return Promise.resolve({\r\n detach: async (): Promise => {\r\n stream.readEnded();\r\n delete this.privStreams[audioNodeId];\r\n this.onEvent(new AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\r\n await this.turnOff();\r\n },\r\n id: (): string => audioNodeId,\r\n read: (): Promise> => stream.read(),\r\n });\r\n }\r\n\r\n public detach(audioNodeId: string): void {\r\n if (audioNodeId && this.privStreams[audioNodeId]) {\r\n this.privStreams[audioNodeId].close();\r\n delete this.privStreams[audioNodeId];\r\n this.onEvent(new AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\r\n }\r\n }\r\n\r\n public turnOff(): Promise {\r\n for (const streamId in this.privStreams) {\r\n if (streamId) {\r\n const stream = this.privStreams[streamId];\r\n if (stream && !stream.isClosed) {\r\n stream.close();\r\n }\r\n }\r\n }\r\n\r\n this.onEvent(new AudioSourceOffEvent(this.privId)); // no stream now\r\n return Promise.resolve();\r\n }\r\n\r\n public get events(): EventSource {\r\n return this.privEvents;\r\n }\r\n\r\n public get deviceInfo(): Promise {\r\n return this.privAudioFormatPromise.then((result: AudioStreamFormatImpl): Promise<{\r\n bitspersample: number;\r\n channelcount: number;\r\n connectivity: connectivity.Unknown;\r\n manufacturer: string;\r\n model: string;\r\n samplerate: number;\r\n type: type.File;\r\n }> => ( Promise.resolve({\r\n bitspersample: result.bitsPerSample,\r\n channelcount: result.channels,\r\n connectivity: connectivity.Unknown,\r\n manufacturer: \"Speech SDK\",\r\n model: \"File\",\r\n samplerate: result.samplesPerSec,\r\n type: type.File,\r\n })\r\n ));\r\n }\r\n\r\n private readHeader(): Promise {\r\n // Read the wave header.\r\n const maxHeaderSize: number = 4296;\r\n const header: Blob | Buffer = this.privSource.slice(0, maxHeaderSize);\r\n\r\n const headerResult: Deferred = new Deferred();\r\n\r\n const processHeader = (header: ArrayBuffer): void => {\r\n const view: DataView = new DataView(header);\r\n\r\n const getWord = (index: number): string => String.fromCharCode(view.getUint8(index), view.getUint8(index + 1), view.getUint8(index + 2), view.getUint8(index + 3));\r\n\r\n // RIFF 4 bytes.\r\n if (\"RIFF\" !== getWord(0)) {\r\n headerResult.reject(\"Invalid WAV header in file, RIFF was not found\");\r\n return;\r\n }\r\n\r\n // length, 4 bytes\r\n // RIFF Type & fmt 8 bytes\r\n if (\"WAVE\" !== getWord(8) || \"fmt \" !== getWord(12)) {\r\n headerResult.reject(\"Invalid WAV header in file, WAVEfmt was not found\");\r\n return;\r\n }\r\n\r\n const formatSize: number = view.getInt32(16, true);\r\n const channelCount: number = view.getUint16(22, true);\r\n const sampleRate: number = view.getUint32(24, true);\r\n const bitsPerSample: number = view.getUint16(34, true);\r\n // Confirm if header is 44 bytes long.\r\n let pos: number = 36 + Math.max(formatSize - 16, 0);\r\n for (; getWord(pos) !== \"data\"; pos += 2) {\r\n if (pos > maxHeaderSize - 8) {\r\n headerResult.reject(\"Invalid WAV header in file, data block was not found\");\r\n return;\r\n }\r\n }\r\n this.privHeaderEnd = pos + 8;\r\n headerResult.resolve(AudioStreamFormat.getWaveFormatPCM(sampleRate, bitsPerSample, channelCount) as AudioStreamFormatImpl);\r\n };\r\n\r\n if (typeof window !== \"undefined\" && typeof Blob !== \"undefined\" && header instanceof Blob) {\r\n const reader: FileReader = new FileReader();\r\n\r\n reader.onload = (event: Event): void => {\r\n const header: ArrayBuffer = (event.target as FileReader).result as ArrayBuffer;\r\n processHeader(header);\r\n };\r\n\r\n reader.readAsArrayBuffer(header);\r\n } else {\r\n const h: Buffer = header as Buffer;\r\n processHeader(h.buffer.slice(h.byteOffset, h.byteOffset + h.byteLength));\r\n }\r\n return headerResult.promise;\r\n }\r\n\r\n private async upload(audioNodeId: string): Promise> {\r\n const onerror = (error: string): void => {\r\n const errorMsg = `Error occurred while processing '${this.privFilename}'. ${error}`;\r\n this.onEvent(new AudioStreamNodeErrorEvent(this.privId, audioNodeId, errorMsg));\r\n throw new Error(errorMsg);\r\n };\r\n\r\n try {\r\n await this.turnOn();\r\n\r\n const format: AudioStreamFormatImpl = await this.privAudioFormatPromise;\r\n const stream = new ChunkedArrayBufferStream(format.avgBytesPerSec / 10, audioNodeId);\r\n\r\n this.privStreams[audioNodeId] = stream;\r\n const chunk: Blob | Buffer = this.privSource.slice(this.privHeaderEnd);\r\n\r\n const processFile = (buff: ArrayBuffer): void => {\r\n if (stream.isClosed) {\r\n return; // output stream was closed (somebody called TurnOff). We're done here.\r\n }\r\n\r\n stream.writeStreamChunk({\r\n buffer: buff,\r\n isEnd: false,\r\n timeReceived: Date.now(),\r\n });\r\n stream.close();\r\n };\r\n\r\n if (typeof window !== \"undefined\" && typeof Blob !== \"undefined\" && chunk instanceof Blob) {\r\n const reader: FileReader = new FileReader();\r\n reader.onerror = (ev: ProgressEvent): void => onerror(ev.toString());\r\n\r\n reader.onload = (event: Event): void => {\r\n const fileBuffer: ArrayBuffer = (event.target as FileReader).result as ArrayBuffer;\r\n processFile(fileBuffer);\r\n };\r\n\r\n reader.readAsArrayBuffer(chunk);\r\n } else {\r\n const c: Buffer = chunk as Buffer;\r\n processFile(c.buffer.slice(c.byteOffset, c.byteOffset + c.byteLength));\r\n }\r\n\r\n return stream;\r\n } catch (e) {\r\n onerror(e as string);\r\n }\r\n }\r\n\r\n private onEvent(event: AudioSourceEvent): void {\r\n this.privEvents.onEvent(event);\r\n Events.instance.onEvent(event);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n connectivity,\r\n ISpeechConfigAudioDevice,\r\n type\r\n} from \"../common.speech/Exports.js\";\r\nimport {\r\n AudioSourceErrorEvent,\r\n AudioSourceEvent,\r\n AudioSourceInitializingEvent,\r\n AudioSourceOffEvent,\r\n AudioSourceReadyEvent,\r\n AudioStreamNodeAttachedEvent,\r\n AudioStreamNodeAttachingEvent,\r\n AudioStreamNodeDetachedEvent,\r\n AudioStreamNodeErrorEvent,\r\n ChunkedArrayBufferStream,\r\n createNoDashGuid,\r\n Deferred,\r\n Events,\r\n EventSource,\r\n IAudioSource,\r\n IAudioStreamNode,\r\n IStringDictionary,\r\n Stream,\r\n} from \"../common/Exports.js\";\r\nimport { IStreamChunk } from \"../common/Stream.js\";\r\nimport {\r\n AudioStreamFormat,\r\n AudioStreamFormatImpl,\r\n} from \"../sdk/Audio/AudioStreamFormat.js\";\r\nimport { IRecorder } from \"./IRecorder.js\";\r\n\r\n// Extending the default definition with browser specific definitions for backward compatibility\r\ninterface INavigator extends Navigator {\r\n webkitGetUserMedia: (constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback | undefined, errorCallback: NavigatorUserMediaErrorCallback) => void;\r\n mozGetUserMedia: (constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback | undefined, errorCallback: NavigatorUserMediaErrorCallback) => void;\r\n msGetUserMedia: (constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback, errorCallback: NavigatorUserMediaErrorCallback) => void;\r\n}\r\n\r\nexport const AudioWorkletSourceURLPropertyName = \"MICROPHONE-WorkletSourceUrl\";\r\n\r\nexport class MicAudioSource implements IAudioSource {\r\n\r\n private static readonly AUDIOFORMAT: AudioStreamFormatImpl = AudioStreamFormat.getDefaultInputFormat() as AudioStreamFormatImpl;\r\n\r\n private privStreams: IStringDictionary> = {};\r\n\r\n private privId: string;\r\n\r\n private privEvents: EventSource;\r\n\r\n private privInitializeDeferral: Deferred;\r\n\r\n private privMediaStream: MediaStream;\r\n\r\n private privContext: AudioContext;\r\n\r\n private privMicrophoneLabel: string;\r\n\r\n private privOutputChunkSize: number;\r\n\r\n private privIsClosing: boolean;\r\n\r\n public constructor(\r\n private readonly privRecorder: IRecorder,\r\n private readonly deviceId?: string,\r\n audioSourceId?: string,\r\n mediaStream?: MediaStream\r\n ) {\r\n\r\n this.privOutputChunkSize = MicAudioSource.AUDIOFORMAT.avgBytesPerSec / 10;\r\n this.privId = audioSourceId ? audioSourceId : createNoDashGuid();\r\n this.privEvents = new EventSource();\r\n this.privMediaStream = mediaStream || null;\r\n this.privIsClosing = false;\r\n }\r\n\r\n public get format(): Promise {\r\n return Promise.resolve(MicAudioSource.AUDIOFORMAT);\r\n }\r\n\r\n public turnOn(): Promise {\r\n if (this.privInitializeDeferral) {\r\n return this.privInitializeDeferral.promise;\r\n }\r\n\r\n this.privInitializeDeferral = new Deferred();\r\n\r\n try {\r\n this.createAudioContext();\r\n } catch (error) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n this.privInitializeDeferral.reject(typedError.name + \": \" + typedError.message);\r\n } else {\r\n this.privInitializeDeferral.reject(error as string);\r\n }\r\n return this.privInitializeDeferral.promise;\r\n }\r\n\r\n const nav = window.navigator as INavigator;\r\n\r\n let getUserMedia = (\r\n // eslint-disable-next-line\r\n nav.getUserMedia ||\r\n nav.webkitGetUserMedia ||\r\n nav.mozGetUserMedia ||\r\n nav.msGetUserMedia\r\n );\r\n\r\n if (!!nav.mediaDevices) {\r\n getUserMedia = (constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback, errorCallback: NavigatorUserMediaErrorCallback): void => {\r\n nav.mediaDevices\r\n .getUserMedia(constraints)\r\n .then(successCallback)\r\n .catch(errorCallback);\r\n };\r\n }\r\n\r\n if (!getUserMedia) {\r\n const errorMsg = \"Browser does not support getUserMedia.\";\r\n this.privInitializeDeferral.reject(errorMsg);\r\n this.onEvent(new AudioSourceErrorEvent(errorMsg, \"\")); // mic initialized error - no streamid at this point\r\n } else {\r\n const next = (): void => {\r\n this.onEvent(new AudioSourceInitializingEvent(this.privId)); // no stream id\r\n if (this.privMediaStream && this.privMediaStream.active) {\r\n this.onEvent(new AudioSourceReadyEvent(this.privId));\r\n this.privInitializeDeferral.resolve();\r\n } else {\r\n getUserMedia(\r\n { audio: this.deviceId ? { deviceId: this.deviceId } : true, video: false },\r\n (mediaStream: MediaStream): void => {\r\n this.privMediaStream = mediaStream;\r\n this.onEvent(new AudioSourceReadyEvent(this.privId));\r\n this.privInitializeDeferral.resolve();\r\n }, (error: any): void => {\r\n const errorMsg = `Error occurred during microphone initialization: ${error as string}`;\r\n this.privInitializeDeferral.reject(errorMsg);\r\n this.onEvent(new AudioSourceErrorEvent(this.privId, errorMsg));\r\n });\r\n }\r\n };\r\n\r\n if (this.privContext.state === \"suspended\") {\r\n // NOTE: On iOS, the Web Audio API requires sounds to be triggered from an explicit user action.\r\n // https://github.com/WebAudio/web-audio-api/issues/790\r\n this.privContext.resume()\r\n .then(next)\r\n .catch((reason: any): void => {\r\n this.privInitializeDeferral.reject(`Failed to initialize audio context: ${reason as string}`);\r\n });\r\n } else {\r\n next();\r\n }\r\n }\r\n\r\n return this.privInitializeDeferral.promise;\r\n }\r\n\r\n public id(): string {\r\n return this.privId;\r\n }\r\n\r\n public attach(audioNodeId: string): Promise {\r\n this.onEvent(new AudioStreamNodeAttachingEvent(this.privId, audioNodeId));\r\n\r\n return this.listen(audioNodeId).then(\r\n (stream: Stream): IAudioStreamNode => {\r\n this.onEvent(new AudioStreamNodeAttachedEvent(this.privId, audioNodeId));\r\n return {\r\n detach: async (): Promise => {\r\n stream.readEnded();\r\n delete this.privStreams[audioNodeId];\r\n this.onEvent(new AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\r\n return this.turnOff();\r\n },\r\n id: (): string => audioNodeId,\r\n read: (): Promise> => stream.read(),\r\n };\r\n });\r\n }\r\n\r\n public detach(audioNodeId: string): void {\r\n if (audioNodeId && this.privStreams[audioNodeId]) {\r\n this.privStreams[audioNodeId].close();\r\n delete this.privStreams[audioNodeId];\r\n this.onEvent(new AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\r\n }\r\n }\r\n\r\n public async turnOff(): Promise {\r\n for (const streamId in this.privStreams) {\r\n if (streamId) {\r\n const stream = this.privStreams[streamId];\r\n if (stream) {\r\n stream.close();\r\n }\r\n }\r\n }\r\n\r\n this.onEvent(new AudioSourceOffEvent(this.privId)); // no stream now\r\n if (this.privInitializeDeferral) {\r\n // Correctly handle when browser forces mic off before turnOn() completes\r\n // eslint-disable-next-line @typescript-eslint/await-thenable\r\n await this.privInitializeDeferral;\r\n this.privInitializeDeferral = null;\r\n }\r\n\r\n await this.destroyAudioContext();\r\n\r\n return;\r\n }\r\n\r\n public get events(): EventSource {\r\n return this.privEvents;\r\n }\r\n\r\n public get deviceInfo(): Promise {\r\n return this.getMicrophoneLabel().then((label: string): ISpeechConfigAudioDevice => (\r\n {\r\n bitspersample: MicAudioSource.AUDIOFORMAT.bitsPerSample,\r\n channelcount: MicAudioSource.AUDIOFORMAT.channels,\r\n connectivity: connectivity.Unknown,\r\n manufacturer: \"Speech SDK\",\r\n model: label,\r\n samplerate: MicAudioSource.AUDIOFORMAT.samplesPerSec,\r\n type: type.Microphones,\r\n }\r\n ));\r\n }\r\n\r\n public setProperty(name: string, value: string): void {\r\n if (name === AudioWorkletSourceURLPropertyName) {\r\n this.privRecorder.setWorkletUrl(value);\r\n } else {\r\n throw new Error(\"Property '\" + name + \"' is not supported on Microphone.\");\r\n }\r\n }\r\n\r\n private getMicrophoneLabel(): Promise {\r\n const defaultMicrophoneName: string = \"microphone\";\r\n\r\n // If we did this already, return the value.\r\n if (this.privMicrophoneLabel !== undefined) {\r\n return Promise.resolve(this.privMicrophoneLabel);\r\n }\r\n\r\n // If the stream isn't currently running, we can't query devices because security.\r\n if (this.privMediaStream === undefined || !this.privMediaStream.active) {\r\n return Promise.resolve(defaultMicrophoneName);\r\n }\r\n\r\n // Setup a default\r\n this.privMicrophoneLabel = defaultMicrophoneName;\r\n\r\n // Get the id of the device running the audio track.\r\n const microphoneDeviceId: string = this.privMediaStream.getTracks()[0].getSettings().deviceId;\r\n\r\n // If the browser doesn't support getting the device ID, set a default and return.\r\n if (undefined === microphoneDeviceId) {\r\n return Promise.resolve(this.privMicrophoneLabel);\r\n }\r\n\r\n const deferred: Deferred = new Deferred();\r\n\r\n // Enumerate the media devices.\r\n navigator.mediaDevices.enumerateDevices().then((devices: MediaDeviceInfo[]): void => {\r\n for (const device of devices) {\r\n if (device.deviceId === microphoneDeviceId) {\r\n // Found the device\r\n this.privMicrophoneLabel = device.label;\r\n break;\r\n }\r\n }\r\n deferred.resolve(this.privMicrophoneLabel);\r\n }, (): Deferred => deferred.resolve(this.privMicrophoneLabel));\r\n\r\n return deferred.promise;\r\n }\r\n\r\n private async listen(audioNodeId: string): Promise> {\r\n await this.turnOn();\r\n const stream = new ChunkedArrayBufferStream(this.privOutputChunkSize, audioNodeId);\r\n this.privStreams[audioNodeId] = stream;\r\n try {\r\n this.privRecorder.record(this.privContext, this.privMediaStream, stream);\r\n } catch (error) {\r\n this.onEvent(new AudioStreamNodeErrorEvent(this.privId, audioNodeId, error as string));\r\n throw error;\r\n }\r\n const result: Stream = stream;\r\n return result;\r\n }\r\n\r\n private onEvent(event: AudioSourceEvent): void {\r\n this.privEvents.onEvent(event);\r\n Events.instance.onEvent(event);\r\n }\r\n\r\n private createAudioContext(): void {\r\n if (!!this.privContext) {\r\n return;\r\n }\r\n\r\n this.privContext = AudioStreamFormatImpl.getAudioContext(MicAudioSource.AUDIOFORMAT.samplesPerSec);\r\n }\r\n\r\n private async destroyAudioContext(): Promise {\r\n if (!this.privContext) {\r\n return;\r\n }\r\n\r\n this.privRecorder.releaseMediaResources(this.privContext);\r\n\r\n // This pattern brought to you by a bug in the TypeScript compiler where it\r\n // confuses the (\"close\" in this.privContext) with this.privContext always being null as the alternate.\r\n // https://github.com/Microsoft/TypeScript/issues/11498\r\n let hasClose: boolean = false;\r\n if (\"close\" in this.privContext) {\r\n hasClose = true;\r\n }\r\n\r\n if (hasClose) {\r\n if (!this.privIsClosing) {\r\n // The audio context close may take enough time that the close is called twice\r\n this.privIsClosing = true;\r\n await this.privContext.close();\r\n this.privContext = null;\r\n this.privIsClosing = false;\r\n }\r\n } else if (null !== this.privContext && this.privContext.state === \"running\") {\r\n // Suspend actually takes a callback, but analogous to the\r\n // resume method, it'll be only fired if suspend is called\r\n // in a direct response to a user action. The later is not always\r\n // the case, as TurnOff is also called, when we receive an\r\n // end-of-speech message from the service. So, doing a best effort\r\n // fire-and-forget here.\r\n await this.privContext.suspend();\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { RiffPcmEncoder, Stream } from \"../common/Exports\";\r\nimport { IRecorder } from \"./IRecorder\";\r\n\r\nexport class PcmRecorder implements IRecorder {\r\n private privMediaResources: IMediaResources;\r\n private privSpeechProcessorScript: string; // speech-processor.js Url\r\n private privStopInputOnRelease: boolean;\r\n\r\n public constructor(stopInputOnRelease: boolean) {\r\n this.privStopInputOnRelease = stopInputOnRelease;\r\n }\r\n\r\n public record(context: AudioContext, mediaStream: MediaStream, outputStream: Stream): void {\r\n const desiredSampleRate = 16000;\r\n\r\n const waveStreamEncoder = new RiffPcmEncoder(context.sampleRate, desiredSampleRate);\r\n\r\n const micInput = context.createMediaStreamSource(mediaStream);\r\n\r\n const attachScriptProcessor = (): void => {\r\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\r\n const scriptNode = (() => {\r\n let bufferSize = 0;\r\n try {\r\n return context.createScriptProcessor(bufferSize, 1, 1);\r\n } catch (error) {\r\n // Webkit (<= version 31) requires a valid bufferSize.\r\n bufferSize = 2048;\r\n let audioSampleRate = context.sampleRate;\r\n while (bufferSize < 16384 && audioSampleRate >= (2 * desiredSampleRate)) {\r\n bufferSize <<= 1;\r\n audioSampleRate >>= 1;\r\n }\r\n return context.createScriptProcessor(bufferSize, 1, 1);\r\n }\r\n })();\r\n scriptNode.onaudioprocess = (event: AudioProcessingEvent): void => {\r\n const inputFrame = event.inputBuffer.getChannelData(0);\r\n\r\n if (outputStream && !outputStream.isClosed) {\r\n const waveFrame = waveStreamEncoder.encode(inputFrame);\r\n if (!!waveFrame) {\r\n outputStream.writeStreamChunk({\r\n buffer: waveFrame,\r\n isEnd: false,\r\n timeReceived: Date.now(),\r\n });\r\n }\r\n }\r\n };\r\n micInput.connect(scriptNode);\r\n scriptNode.connect(context.destination);\r\n this.privMediaResources = {\r\n scriptProcessorNode: scriptNode,\r\n source: micInput,\r\n stream: mediaStream,\r\n };\r\n };\r\n\r\n // https://webaudio.github.io/web-audio-api/#audioworklet\r\n // Using AudioWorklet to improve audio quality and avoid audio glitches due to blocking the UI thread\r\n const skipAudioWorklet = !!this.privSpeechProcessorScript && this.privSpeechProcessorScript.toLowerCase() === \"ignore\";\r\n\r\n if (!!context.audioWorklet && !skipAudioWorklet) {\r\n if (!this.privSpeechProcessorScript) {\r\n const workletScript = `class SP extends AudioWorkletProcessor {\r\n constructor(options) {\r\n super(options);\r\n }\r\n process(inputs, outputs) {\r\n const input = inputs[0];\r\n const output = [];\r\n for (let channel = 0; channel < input.length; channel += 1) {\r\n output[channel] = input[channel];\r\n }\r\n this.port.postMessage(output[0]);\r\n return true;\r\n }\r\n }\r\n registerProcessor('speech-processor', SP);`;\r\n const blob = new Blob([workletScript], { type: \"application/javascript; charset=utf-8\" });\r\n this.privSpeechProcessorScript = URL.createObjectURL(blob);\r\n }\r\n\r\n context.audioWorklet\r\n .addModule(this.privSpeechProcessorScript)\r\n .then((): void => {\r\n const workletNode = new AudioWorkletNode(context, \"speech-processor\");\r\n workletNode.port.onmessage = (ev: MessageEvent): void => {\r\n const inputFrame: Float32Array = ev.data as Float32Array;\r\n\r\n if (outputStream && !outputStream.isClosed) {\r\n const waveFrame = waveStreamEncoder.encode(inputFrame);\r\n if (!!waveFrame) {\r\n outputStream.writeStreamChunk({\r\n buffer: waveFrame,\r\n isEnd: false,\r\n timeReceived: Date.now(),\r\n });\r\n }\r\n }\r\n };\r\n micInput.connect(workletNode);\r\n workletNode.connect(context.destination);\r\n this.privMediaResources = {\r\n scriptProcessorNode: workletNode,\r\n source: micInput,\r\n stream: mediaStream,\r\n };\r\n })\r\n .catch((): void => {\r\n attachScriptProcessor();\r\n });\r\n } else {\r\n try {\r\n attachScriptProcessor();\r\n } catch (err) {\r\n throw new Error(`Unable to start audio worklet node for PCMRecorder: ${err as string}`);\r\n }\r\n }\r\n }\r\n\r\n public releaseMediaResources(context: AudioContext): void {\r\n if (this.privMediaResources) {\r\n if (this.privMediaResources.scriptProcessorNode) {\r\n this.privMediaResources.scriptProcessorNode.disconnect(context.destination);\r\n this.privMediaResources.scriptProcessorNode = null;\r\n }\r\n if (this.privMediaResources.source) {\r\n this.privMediaResources.source.disconnect();\r\n if (this.privStopInputOnRelease) {\r\n this.privMediaResources.stream.getTracks().forEach((track: MediaStreamTrack): void => track.stop());\r\n }\r\n this.privMediaResources.source = null;\r\n }\r\n }\r\n }\r\n\r\n public setWorkletUrl(url: string): void {\r\n this.privSpeechProcessorScript = url;\r\n }\r\n}\r\n\r\ninterface IMediaResources {\r\n source: MediaStreamAudioSourceNode;\r\n scriptProcessorNode: ScriptProcessorNode | AudioWorkletNode;\r\n stream: MediaStream;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { RecognizerConfig } from \"../common.speech/Exports.js\";\r\nimport { PropertyCollection, PropertyId } from \"../sdk/Exports.js\";\r\n\r\nexport class ProxyInfo {\r\n private privProxyHostName: string;\r\n private privProxyPort: number;\r\n private privProxyUserName: string;\r\n private privProxyPassword: string;\r\n\r\n private constructor(proxyHostName: string, proxyPort: number, proxyUserName: string, proxyPassword: string) {\r\n this.privProxyHostName = proxyHostName;\r\n this.privProxyPort = proxyPort;\r\n this.privProxyUserName = proxyUserName;\r\n this.privProxyPassword = proxyPassword;\r\n }\r\n\r\n public static fromParameters(parameters: PropertyCollection): ProxyInfo {\r\n return new ProxyInfo(parameters.getProperty(PropertyId.SpeechServiceConnection_ProxyHostName),\r\n parseInt(parameters.getProperty(PropertyId.SpeechServiceConnection_ProxyPort), 10),\r\n parameters.getProperty(PropertyId.SpeechServiceConnection_ProxyUserName),\r\n parameters.getProperty(PropertyId.SpeechServiceConnection_ProxyPassword));\r\n }\r\n\r\n public static fromRecognizerConfig(config: RecognizerConfig): ProxyInfo {\r\n return this.fromParameters(config.parameters);\r\n }\r\n\r\n public get HostName(): string {\r\n return this.privProxyHostName;\r\n }\r\n\r\n public get Port(): number {\r\n return this.privProxyPort;\r\n }\r\n\r\n public get UserName(): string {\r\n return this.privProxyUserName;\r\n }\r\n\r\n public get Password(): string {\r\n return this.privProxyPassword;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nimport {\r\n IAudioStreamNode,\r\n IStreamChunk,\r\n} from \"../common/Exports.js\";\r\n\r\nexport class ReplayableAudioNode implements IAudioStreamNode {\r\n private privAudioNode: IAudioStreamNode;\r\n private privBytesPerSecond: number;\r\n private privBuffers: BufferEntry[] = [];\r\n private privReplayOffset: number = 0;\r\n private privLastShrinkOffset: number = 0;\r\n private privBufferStartOffset: number = 0;\r\n private privBufferSerial: number = 0;\r\n private privBufferedBytes: number = 0;\r\n private privReplay: boolean = false;\r\n private privLastChunkAcquiredTime: number = 0;\r\n\r\n public constructor(audioSource: IAudioStreamNode, bytesPerSecond: number) {\r\n this.privAudioNode = audioSource;\r\n this.privBytesPerSecond = bytesPerSecond;\r\n }\r\n\r\n public id(): string {\r\n return this.privAudioNode.id();\r\n }\r\n\r\n // Reads and returns the next chunk of audio buffer.\r\n // If replay of existing buffers are needed, read() will first seek and replay\r\n // existing content, and upoin completion it will read new content from the underlying\r\n // audio node, saving that content into the replayable buffers.\r\n public read(): Promise> {\r\n // if there is a replay request to honor.\r\n if (!!this.privReplay && this.privBuffers.length !== 0) {\r\n // Find the start point in the buffers.\r\n // Offsets are in 100ns increments.\r\n // So how many bytes do we need to seek to get the right offset?\r\n const offsetToSeek: number = this.privReplayOffset - this.privBufferStartOffset;\r\n\r\n let bytesToSeek: number = Math.round(offsetToSeek * this.privBytesPerSecond * 1e-7);\r\n if (0 !== (bytesToSeek % 2)) {\r\n bytesToSeek++;\r\n }\r\n\r\n let i: number = 0;\r\n\r\n while (i < this.privBuffers.length && bytesToSeek >= this.privBuffers[i].chunk.buffer.byteLength) {\r\n bytesToSeek -= this.privBuffers[i++].chunk.buffer.byteLength;\r\n }\r\n\r\n if (i < this.privBuffers.length) {\r\n const retVal: ArrayBuffer = this.privBuffers[i].chunk.buffer.slice(bytesToSeek);\r\n\r\n this.privReplayOffset += (retVal.byteLength / this.privBytesPerSecond) * 1e+7;\r\n\r\n // If we've reached the end of the buffers, stop replaying.\r\n if (i === this.privBuffers.length - 1) {\r\n this.privReplay = false;\r\n }\r\n\r\n return Promise.resolve>({\r\n buffer: retVal,\r\n isEnd: false,\r\n timeReceived: this.privBuffers[i].chunk.timeReceived,\r\n });\r\n }\r\n }\r\n\r\n return this.privAudioNode.read()\r\n .then((result: IStreamChunk): IStreamChunk => {\r\n if (result && result.buffer) {\r\n this.privBuffers.push(new BufferEntry(result, this.privBufferSerial++, this.privBufferedBytes));\r\n this.privBufferedBytes += result.buffer.byteLength;\r\n }\r\n return result;\r\n });\r\n }\r\n\r\n public detach(): Promise {\r\n this.privBuffers = undefined;\r\n return this.privAudioNode.detach();\r\n }\r\n\r\n public replay(): void {\r\n if (this.privBuffers && 0 !== this.privBuffers.length) {\r\n this.privReplay = true;\r\n this.privReplayOffset = this.privLastShrinkOffset;\r\n }\r\n }\r\n\r\n // Shrinks the existing audio buffers to start at the new offset, or at the\r\n // beginning of the buffer closest to the requested offset.\r\n // A replay request will start from the last shrink point.\r\n public shrinkBuffers(offset: number): void {\r\n if (this.privBuffers === undefined || this.privBuffers.length === 0) {\r\n return;\r\n }\r\n\r\n this.privLastShrinkOffset = offset;\r\n\r\n // Find the start point in the buffers.\r\n // Offsets are in 100ns increments.\r\n // So how many bytes do we need to seek to get the right offset?\r\n const offsetToSeek: number = offset - this.privBufferStartOffset;\r\n\r\n let bytesToSeek: number = Math.round(offsetToSeek * this.privBytesPerSecond * 1e-7);\r\n\r\n let i: number = 0;\r\n\r\n while (i < this.privBuffers.length && bytesToSeek >= this.privBuffers[i].chunk.buffer.byteLength) {\r\n bytesToSeek -= this.privBuffers[i++].chunk.buffer.byteLength;\r\n }\r\n this.privBufferStartOffset = Math.round(offset - ((bytesToSeek / this.privBytesPerSecond) * 1e+7));\r\n this.privBuffers = this.privBuffers.slice(i);\r\n }\r\n\r\n // Finds the time a buffer of audio was first seen by offset.\r\n public findTimeAtOffset(offset: number): number {\r\n if (offset < this.privBufferStartOffset || this.privBuffers === undefined) {\r\n return 0;\r\n }\r\n\r\n for (const value of this.privBuffers) {\r\n const startOffset: number = (value.byteOffset / this.privBytesPerSecond) * 1e7;\r\n const endOffset: number = startOffset + ((value.chunk.buffer.byteLength / this.privBytesPerSecond) * 1e7);\r\n\r\n if (offset >= startOffset && offset <= endOffset) {\r\n return value.chunk.timeReceived;\r\n }\r\n }\r\n\r\n return 0;\r\n }\r\n}\r\n\r\n// Primary use of this class is to help debugging problems with the replay\r\n// code. If the memory cost of alloc / dealloc gets too much, drop it and just use\r\n// the ArrayBuffer directly.\r\nclass BufferEntry {\r\n public chunk: IStreamChunk;\r\n public serial: number;\r\n public byteOffset: number;\r\n\r\n public constructor(chunk: IStreamChunk, serial: number, byteOffset: number) {\r\n this.chunk = chunk;\r\n this.serial = serial;\r\n this.byteOffset = byteOffset;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IErrorMessages } from \"../common/Exports.js\";\r\n/**\r\n * HTTP request helper\r\n */\r\nexport interface IRequestOptions {\r\n headers?: {[key: string]: string};\r\n ignoreCache?: boolean;\r\n timeout?: number;\r\n}\r\n\r\nexport interface IRestParams {\r\n apiVersion: string;\r\n authorization: string;\r\n clientAppId: string;\r\n contentTypeKey: string;\r\n correlationId: string;\r\n languageCode: string;\r\n nickname: string;\r\n profanity: string;\r\n requestId: string;\r\n roomId: string;\r\n sessionToken: string;\r\n subscriptionKey: string;\r\n subscriptionRegion: string;\r\n token: string;\r\n}\r\n\r\nexport class RestConfigBase {\r\n\r\n public static get requestOptions(): IRequestOptions {\r\n return RestConfigBase.privDefaultRequestOptions;\r\n }\r\n\r\n public static get configParams(): IRestParams {\r\n return RestConfigBase.privDefaultParams;\r\n }\r\n\r\n public static get restErrors(): IErrorMessages {\r\n return RestConfigBase.privRestErrors;\r\n }\r\n\r\n private static readonly privDefaultRequestOptions: IRequestOptions = {\r\n headers: {\r\n Accept: \"application/json\",\r\n },\r\n ignoreCache: false,\r\n timeout: 10000,\r\n };\r\n\r\n private static readonly privRestErrors: IErrorMessages = {\r\n authInvalidSubscriptionKey: \"You must specify either an authentication token to use, or a Cognitive Speech subscription key.\",\r\n authInvalidSubscriptionRegion: \"You must specify the Cognitive Speech region to use.\",\r\n invalidArgs: \"Required input not found: {arg}.\",\r\n invalidCreateJoinConversationResponse: \"Creating/Joining conversation failed with HTTP {status}.\",\r\n invalidParticipantRequest: \"The requested participant was not found.\",\r\n permissionDeniedConnect: \"Required credentials not found.\",\r\n permissionDeniedConversation: \"Invalid operation: only the host can {command} the conversation.\",\r\n permissionDeniedParticipant: \"Invalid operation: only the host can {command} a participant.\",\r\n permissionDeniedSend: \"Invalid operation: the conversation is not in a connected state.\",\r\n permissionDeniedStart: \"Invalid operation: there is already an active conversation.\",\r\n };\r\n\r\n private static readonly privDefaultParams: IRestParams = {\r\n apiVersion: \"api-version\",\r\n authorization: \"Authorization\",\r\n clientAppId: \"X-ClientAppId\",\r\n contentTypeKey: \"Content-Type\",\r\n correlationId: \"X-CorrelationId\",\r\n languageCode: \"language\",\r\n nickname: \"nickname\",\r\n profanity: \"profanity\",\r\n requestId: \"X-RequestId\",\r\n roomId: \"roomid\",\r\n sessionToken: \"token\",\r\n subscriptionKey: \"Ocp-Apim-Subscription-Key\",\r\n subscriptionRegion: \"Ocp-Apim-Subscription-Region\",\r\n token: \"X-CapitoToken\",\r\n };\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport bent, { BentResponse, RequestBody } from \"bent\";\r\nimport {\r\n ArgumentNullError,\r\n Deferred\r\n} from \"../common/Exports.js\";\r\nimport { IRequestOptions } from \"./Exports.js\";\r\n\r\nexport enum RestRequestType {\r\n Get = \"GET\",\r\n Post = \"POST\",\r\n Delete = \"DELETE\",\r\n File = \"file\",\r\n}\r\n\r\nexport interface IRestResponse {\r\n ok: boolean;\r\n status: number;\r\n statusText: string;\r\n data: string;\r\n json: any;\r\n headers: string;\r\n}\r\n\r\ninterface JsonError {\r\n error?: {\r\n message: string;\r\n };\r\n}\r\n\r\n// accept rest operations via request method and return abstracted objects from server response\r\nexport class RestMessageAdapter {\r\n\r\n private privIgnoreCache: boolean;\r\n private privHeaders: { [key: string]: string };\r\n\r\n public constructor(\r\n configParams: IRequestOptions\r\n ) {\r\n\r\n if (!configParams) {\r\n throw new ArgumentNullError(\"configParams\");\r\n }\r\n\r\n this.privHeaders = configParams.headers;\r\n this.privIgnoreCache = configParams.ignoreCache;\r\n }\r\n\r\n public static extractHeaderValue(headerKey: string, headers: string): string {\r\n let headerValue: string = \"\";\r\n\r\n try {\r\n const arr = headers.trim().split(/[\\r\\n]+/);\r\n const headerMap: { [key: string]: string } = {};\r\n arr.forEach((line: string): void => {\r\n const parts = line.split(\": \");\r\n const header = parts.shift().toLowerCase();\r\n const value = parts.join(\": \");\r\n headerMap[header] = value;\r\n });\r\n\r\n headerValue = headerMap[headerKey.toLowerCase()];\r\n } catch (e) {\r\n // ignore the error\r\n }\r\n\r\n return headerValue;\r\n }\r\n\r\n public set options(configParams: IRequestOptions) {\r\n this.privHeaders = configParams.headers;\r\n this.privIgnoreCache = configParams.ignoreCache;\r\n }\r\n\r\n public setHeaders(key: string, value: string): void {\r\n this.privHeaders[key] = value;\r\n }\r\n\r\n public request(\r\n method: RestRequestType,\r\n uri: string,\r\n queryParams: { [key: string]: any } = {},\r\n body: any = null,\r\n ): Promise {\r\n\r\n const responseReceivedDeferral = new Deferred();\r\n\r\n const requestCommand = method === RestRequestType.File ? \"POST\" : method;\r\n const handleRestResponse = (data: BentResponse, j: JsonError = {}): IRestResponse => {\r\n const d: { statusText?: string; statusMessage?: string } = data;\r\n return {\r\n data: JSON.stringify(j),\r\n headers: JSON.stringify(data.headers),\r\n json: j,\r\n ok: data.statusCode >= 200 && data.statusCode < 300,\r\n status: data.statusCode,\r\n statusText: j.error ? j.error.message : d.statusText ? d.statusText : d.statusMessage\r\n };\r\n };\r\n\r\n const send = (postData: RequestBody): void => {\r\n const sendRequest = bent(uri, requestCommand, this.privHeaders, 200, 201, 202, 204, 400, 401, 402, 403, 404);\r\n const params = this.queryParams(queryParams) === \"\" ? \"\" : `?${this.queryParams(queryParams)}`;\r\n sendRequest(params, postData).then( async (data: BentResponse): Promise => {\r\n if (method === RestRequestType.Delete || data.statusCode === 204) {\r\n // No JSON from Delete and reset (204) operations\r\n responseReceivedDeferral.resolve(handleRestResponse(data));\r\n } else {\r\n try {\r\n const j: JsonError = await data.json() as JsonError;\r\n responseReceivedDeferral.resolve(handleRestResponse(data, j));\r\n } catch {\r\n responseReceivedDeferral.resolve(handleRestResponse(data));\r\n }\r\n }\r\n }).catch((error: string): void => {\r\n responseReceivedDeferral.reject(error);\r\n });\r\n };\r\n\r\n if (this.privIgnoreCache) {\r\n this.privHeaders[\"Cache-Control\"] = \"no-cache\";\r\n }\r\n\r\n if (method === RestRequestType.Post && body) {\r\n this.privHeaders[\"content-type\"] = \"application/json\";\r\n this.privHeaders[\"Content-Type\"] = \"application/json\";\r\n }\r\n send(body as RequestBody);\r\n return responseReceivedDeferral.promise;\r\n }\r\n\r\n private queryParams(params: { [key: string]: string } = {}): string {\r\n return Object.keys(params)\r\n .map((k: string): string => encodeURIComponent(k) + \"=\" + encodeURIComponent(params[k]))\r\n .join(\"&\");\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ArgumentNullError,\r\n ConnectionEvent,\r\n ConnectionMessage,\r\n ConnectionOpenResponse,\r\n ConnectionState,\r\n createNoDashGuid,\r\n EventSource,\r\n IConnection,\r\n IStringDictionary,\r\n IWebsocketMessageFormatter,\r\n} from \"../common/Exports.js\";\r\nimport { ProxyInfo } from \"./ProxyInfo.js\";\r\nimport { WebsocketMessageAdapter } from \"./WebsocketMessageAdapter.js\";\r\n\r\nexport class WebsocketConnection implements IConnection {\r\n\r\n private privUri: string;\r\n private privMessageFormatter: IWebsocketMessageFormatter;\r\n private privConnectionMessageAdapter: WebsocketMessageAdapter;\r\n private privId: string;\r\n private privIsDisposed: boolean = false;\r\n\r\n public constructor(\r\n uri: string,\r\n queryParameters: IStringDictionary,\r\n headers: IStringDictionary,\r\n messageFormatter: IWebsocketMessageFormatter,\r\n proxyInfo: ProxyInfo,\r\n enableCompression: boolean = false,\r\n connectionId?: string) {\r\n\r\n if (!uri) {\r\n throw new ArgumentNullError(\"uri\");\r\n }\r\n\r\n if (!messageFormatter) {\r\n throw new ArgumentNullError(\"messageFormatter\");\r\n }\r\n\r\n this.privMessageFormatter = messageFormatter;\r\n\r\n let queryParams = \"\";\r\n let i = 0;\r\n\r\n if (queryParameters) {\r\n for (const paramName in queryParameters) {\r\n if (paramName) {\r\n queryParams += ((i === 0) && (uri.indexOf(\"?\") === -1)) ? \"?\" : \"&\";\r\n\r\n const key = encodeURIComponent(paramName);\r\n queryParams += key;\r\n\r\n let val = queryParameters[paramName];\r\n if (val) {\r\n val = encodeURIComponent(val);\r\n queryParams += `=${val}`;\r\n }\r\n\r\n i++;\r\n }\r\n }\r\n }\r\n\r\n if (headers) {\r\n for (const headerName in headers) {\r\n if (headerName) {\r\n queryParams += ((i === 0) && (uri.indexOf(\"?\") === -1)) ? \"?\" : \"&\";\r\n const val = encodeURIComponent(headers[headerName]);\r\n queryParams += `${headerName}=${val}`;\r\n i++;\r\n }\r\n }\r\n }\r\n\r\n this.privUri = uri + queryParams;\r\n this.privId = connectionId ? connectionId : createNoDashGuid();\r\n\r\n this.privConnectionMessageAdapter = new WebsocketMessageAdapter(\r\n this.privUri,\r\n this.id,\r\n this.privMessageFormatter,\r\n proxyInfo,\r\n headers,\r\n enableCompression);\r\n }\r\n\r\n public async dispose(): Promise {\r\n this.privIsDisposed = true;\r\n\r\n if (this.privConnectionMessageAdapter) {\r\n await this.privConnectionMessageAdapter.close();\r\n }\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privIsDisposed;\r\n }\r\n\r\n public get id(): string {\r\n return this.privId;\r\n }\r\n\r\n public get uri(): string {\r\n return this.privUri;\r\n }\r\n\r\n public state(): ConnectionState {\r\n return this.privConnectionMessageAdapter.state;\r\n }\r\n\r\n public open(): Promise {\r\n return this.privConnectionMessageAdapter.open();\r\n }\r\n\r\n public send(message: ConnectionMessage): Promise {\r\n return this.privConnectionMessageAdapter.send(message);\r\n }\r\n\r\n public read(): Promise {\r\n return this.privConnectionMessageAdapter.read();\r\n }\r\n\r\n public get events(): EventSource {\r\n return this.privConnectionMessageAdapter.events;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n// Node.JS specific web socket / browser support.\r\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\nimport * as http from \"http\";\r\nimport * as net from \"net\";\r\nimport * as tls from \"tls\";\r\nimport Agent from \"agent-base\";\r\nimport HttpsProxyAgent from \"https-proxy-agent\";\r\n\r\nimport ws from \"ws\";\r\nimport { HeaderNames } from \"../common.speech/HeaderNames.js\";\r\nimport {\r\n ArgumentNullError,\r\n BackgroundEvent,\r\n ConnectionClosedEvent,\r\n ConnectionErrorEvent,\r\n ConnectionEstablishedEvent,\r\n ConnectionEvent,\r\n ConnectionMessage,\r\n ConnectionMessageReceivedEvent,\r\n ConnectionMessageSentEvent,\r\n ConnectionOpenResponse,\r\n ConnectionStartEvent,\r\n ConnectionState,\r\n Deferred,\r\n Events,\r\n EventSource,\r\n IWebsocketMessageFormatter,\r\n MessageType,\r\n Queue,\r\n RawWebsocketMessage,\r\n} from \"../common/Exports.js\";\r\nimport { ProxyInfo } from \"./ProxyInfo.js\";\r\n\r\ninterface ISendItem {\r\n Message: ConnectionMessage;\r\n RawWebsocketMessage: RawWebsocketMessage;\r\n sendStatusDeferral: Deferred;\r\n}\r\n\r\nexport class WebsocketMessageAdapter {\r\n private privConnectionState: ConnectionState;\r\n private privMessageFormatter: IWebsocketMessageFormatter;\r\n private privWebsocketClient: WebSocket | ws;\r\n\r\n private privSendMessageQueue: Queue;\r\n private privReceivingMessageQueue: Queue;\r\n private privConnectionEstablishDeferral: Deferred;\r\n private privCertificateValidatedDeferral: Deferred;\r\n private privDisconnectDeferral: Deferred;\r\n private privConnectionEvents: EventSource;\r\n private privConnectionId: string;\r\n private privUri: string;\r\n private proxyInfo: ProxyInfo;\r\n private privHeaders: { [key: string]: string };\r\n private privLastErrorReceived: string;\r\n private privEnableCompression: boolean;\r\n\r\n public static forceNpmWebSocket: boolean = false;\r\n\r\n public constructor(\r\n uri: string,\r\n connectionId: string,\r\n messageFormatter: IWebsocketMessageFormatter,\r\n proxyInfo: ProxyInfo,\r\n headers: { [key: string]: string },\r\n enableCompression: boolean) {\r\n\r\n if (!uri) {\r\n throw new ArgumentNullError(\"uri\");\r\n }\r\n\r\n if (!messageFormatter) {\r\n throw new ArgumentNullError(\"messageFormatter\");\r\n }\r\n\r\n this.proxyInfo = proxyInfo;\r\n this.privConnectionEvents = new EventSource();\r\n this.privConnectionId = connectionId;\r\n this.privMessageFormatter = messageFormatter;\r\n this.privConnectionState = ConnectionState.None;\r\n this.privUri = uri;\r\n this.privHeaders = headers;\r\n this.privEnableCompression = enableCompression;\r\n\r\n // Add the connection ID to the headers\r\n this.privHeaders[HeaderNames.ConnectionId] = this.privConnectionId;\r\n\r\n this.privLastErrorReceived = \"\";\r\n }\r\n\r\n public get state(): ConnectionState {\r\n return this.privConnectionState;\r\n }\r\n\r\n public open(): Promise {\r\n if (this.privConnectionState === ConnectionState.Disconnected) {\r\n return Promise.reject(`Cannot open a connection that is in ${this.privConnectionState} state`);\r\n }\r\n\r\n if (this.privConnectionEstablishDeferral) {\r\n return this.privConnectionEstablishDeferral.promise;\r\n }\r\n\r\n this.privConnectionEstablishDeferral = new Deferred();\r\n this.privCertificateValidatedDeferral = new Deferred();\r\n\r\n this.privConnectionState = ConnectionState.Connecting;\r\n\r\n try {\r\n\r\n if (typeof WebSocket !== \"undefined\" && !WebsocketMessageAdapter.forceNpmWebSocket) {\r\n // Browser handles cert checks.\r\n this.privCertificateValidatedDeferral.resolve();\r\n\r\n this.privWebsocketClient = new WebSocket(this.privUri);\r\n } else {\r\n const options: ws.ClientOptions = { headers: this.privHeaders, perMessageDeflate: this.privEnableCompression };\r\n // The ocsp library will handle validation for us and fail the connection if needed.\r\n this.privCertificateValidatedDeferral.resolve();\r\n\r\n options.agent = this.getAgent();\r\n // Workaround for https://github.com/microsoft/cognitive-services-speech-sdk-js/issues/465\r\n // Which is root caused by https://github.com/TooTallNate/node-agent-base/issues/61\r\n const uri = new URL(this.privUri);\r\n let protocol: string = uri.protocol;\r\n\r\n if (protocol?.toLocaleLowerCase() === \"wss:\") {\r\n protocol = \"https:\";\r\n } else if (protocol?.toLocaleLowerCase() === \"ws:\") {\r\n protocol = \"http:\";\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\r\n (options.agent as any).protocol = protocol;\r\n this.privWebsocketClient = new ws(this.privUri, options);\r\n }\r\n\r\n this.privWebsocketClient.binaryType = \"arraybuffer\";\r\n this.privReceivingMessageQueue = new Queue();\r\n this.privDisconnectDeferral = new Deferred();\r\n this.privSendMessageQueue = new Queue();\r\n this.processSendQueue().catch((reason: string): void => {\r\n Events.instance.onEvent(new BackgroundEvent(reason));\r\n });\r\n } catch (error) {\r\n this.privConnectionEstablishDeferral.resolve(new ConnectionOpenResponse(500, error as string));\r\n return this.privConnectionEstablishDeferral.promise;\r\n }\r\n\r\n this.onEvent(new ConnectionStartEvent(this.privConnectionId, this.privUri));\r\n\r\n this.privWebsocketClient.onopen = (): void => {\r\n this.privCertificateValidatedDeferral.promise.then((): void => {\r\n this.privConnectionState = ConnectionState.Connected;\r\n this.onEvent(new ConnectionEstablishedEvent(this.privConnectionId));\r\n this.privConnectionEstablishDeferral.resolve(new ConnectionOpenResponse(200, \"\"));\r\n }, (error: string): void => {\r\n this.privConnectionEstablishDeferral.reject(error);\r\n });\r\n };\r\n\r\n this.privWebsocketClient.onerror = (e: { error: any; message: string; type: string; target: WebSocket | ws }): void => {\r\n this.onEvent(new ConnectionErrorEvent(this.privConnectionId, e.message, e.type));\r\n this.privLastErrorReceived = e.message;\r\n };\r\n\r\n this.privWebsocketClient.onclose = (e: { wasClean: boolean; code: number; reason: string; target: WebSocket | ws }): void => {\r\n if (this.privConnectionState === ConnectionState.Connecting) {\r\n this.privConnectionState = ConnectionState.Disconnected;\r\n // this.onEvent(new ConnectionEstablishErrorEvent(this.connectionId, e.code, e.reason));\r\n this.privConnectionEstablishDeferral.resolve(new ConnectionOpenResponse(e.code, e.reason + \" \" + this.privLastErrorReceived));\r\n } else {\r\n this.privConnectionState = ConnectionState.Disconnected;\r\n this.privWebsocketClient = null;\r\n this.onEvent(new ConnectionClosedEvent(this.privConnectionId, e.code, e.reason));\r\n }\r\n\r\n this.onClose(e.code, e.reason).catch((reason: string): void => {\r\n Events.instance.onEvent(new BackgroundEvent(reason));\r\n });\r\n };\r\n\r\n this.privWebsocketClient.onmessage = (e: { data: ws.Data; type: string; target: WebSocket | ws }): void => {\r\n const networkReceivedTime = new Date().toISOString();\r\n if (this.privConnectionState === ConnectionState.Connected) {\r\n const deferred = new Deferred();\r\n // let id = ++this.idCounter;\r\n this.privReceivingMessageQueue.enqueueFromPromise(deferred.promise);\r\n if (e.data instanceof ArrayBuffer) {\r\n const rawMessage = new RawWebsocketMessage(MessageType.Binary, e.data);\r\n this.privMessageFormatter\r\n .toConnectionMessage(rawMessage)\r\n .then((connectionMessage: ConnectionMessage): void => {\r\n this.onEvent(new ConnectionMessageReceivedEvent(this.privConnectionId, networkReceivedTime, connectionMessage));\r\n deferred.resolve(connectionMessage);\r\n }, (error: string): void => {\r\n // TODO: Events for these ?\r\n deferred.reject(`Invalid binary message format. Error: ${error}`);\r\n });\r\n } else {\r\n const rawMessage = new RawWebsocketMessage(MessageType.Text, e.data);\r\n this.privMessageFormatter\r\n .toConnectionMessage(rawMessage)\r\n .then((connectionMessage: ConnectionMessage): void => {\r\n this.onEvent(new ConnectionMessageReceivedEvent(this.privConnectionId, networkReceivedTime, connectionMessage));\r\n deferred.resolve(connectionMessage);\r\n }, (error: string): void => {\r\n // TODO: Events for these ?\r\n deferred.reject(`Invalid text message format. Error: ${error}`);\r\n });\r\n }\r\n }\r\n };\r\n\r\n return this.privConnectionEstablishDeferral.promise;\r\n }\r\n\r\n public send(message: ConnectionMessage): Promise {\r\n if (this.privConnectionState !== ConnectionState.Connected) {\r\n return Promise.reject(`Cannot send on connection that is in ${ConnectionState[this.privConnectionState]} state`);\r\n }\r\n\r\n const messageSendStatusDeferral = new Deferred();\r\n const messageSendDeferral = new Deferred();\r\n\r\n this.privSendMessageQueue.enqueueFromPromise(messageSendDeferral.promise);\r\n\r\n this.privMessageFormatter\r\n .fromConnectionMessage(message)\r\n .then((rawMessage: RawWebsocketMessage): void => {\r\n messageSendDeferral.resolve({\r\n Message: message,\r\n RawWebsocketMessage: rawMessage,\r\n sendStatusDeferral: messageSendStatusDeferral,\r\n });\r\n }, (error: string): void => {\r\n messageSendDeferral.reject(`Error formatting the message. ${error}`);\r\n });\r\n\r\n return messageSendStatusDeferral.promise;\r\n }\r\n\r\n public read(): Promise {\r\n if (this.privConnectionState !== ConnectionState.Connected) {\r\n return Promise.reject(`Cannot read on connection that is in ${this.privConnectionState} state`);\r\n }\r\n\r\n return this.privReceivingMessageQueue.dequeue();\r\n }\r\n\r\n public close(reason?: string): Promise {\r\n if (this.privWebsocketClient) {\r\n if (this.privConnectionState !== ConnectionState.Disconnected) {\r\n this.privWebsocketClient.close(1000, reason ? reason : \"Normal closure by client\");\r\n }\r\n } else {\r\n return Promise.resolve();\r\n }\r\n\r\n return this.privDisconnectDeferral.promise;\r\n }\r\n\r\n public get events(): EventSource {\r\n return this.privConnectionEvents;\r\n }\r\n\r\n private sendRawMessage(sendItem: ISendItem): Promise {\r\n try {\r\n // indicates we are draining the queue and it came with no message;\r\n if (!sendItem) {\r\n return Promise.resolve();\r\n }\r\n\r\n this.onEvent(new ConnectionMessageSentEvent(this.privConnectionId, new Date().toISOString(), sendItem.Message));\r\n\r\n // add a check for the ws readystate in order to stop the red console error 'WebSocket is already in CLOSING or CLOSED state' appearing\r\n if (this.isWebsocketOpen) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n this.privWebsocketClient.send(sendItem.RawWebsocketMessage.payload);\r\n } else {\r\n return Promise.reject(\"websocket send error: Websocket not ready \" + this.privConnectionId + \" \" + sendItem.Message.id + \" \" + new Error().stack);\r\n }\r\n return Promise.resolve();\r\n\r\n } catch (e) {\r\n return Promise.reject(`websocket send error: ${e as string}`);\r\n }\r\n }\r\n\r\n private async onClose(code: number, reason: string): Promise {\r\n const closeReason = `Connection closed. ${code}: ${reason}`;\r\n this.privConnectionState = ConnectionState.Disconnected;\r\n this.privDisconnectDeferral.resolve();\r\n await this.privReceivingMessageQueue.drainAndDispose((): void => {\r\n // TODO: Events for these ?\r\n // Logger.instance.onEvent(new LoggingEvent(LogType.Warning, null, `Failed to process received message. Reason: ${closeReason}, Message: ${JSON.stringify(pendingReceiveItem)}`));\r\n }, closeReason);\r\n\r\n await this.privSendMessageQueue.drainAndDispose((pendingSendItem: ISendItem): void => {\r\n pendingSendItem.sendStatusDeferral.reject(closeReason);\r\n }, closeReason);\r\n }\r\n\r\n private async processSendQueue(): Promise {\r\n while (true) {\r\n const itemToSend: Promise = this.privSendMessageQueue.dequeue();\r\n const sendItem: ISendItem = await itemToSend;\r\n // indicates we are draining the queue and it came with no message;\r\n if (!sendItem) {\r\n return;\r\n }\r\n\r\n try {\r\n await this.sendRawMessage(sendItem);\r\n sendItem.sendStatusDeferral.resolve();\r\n } catch (sendError) {\r\n sendItem.sendStatusDeferral.reject(sendError as string);\r\n }\r\n }\r\n }\r\n\r\n private onEvent(event: ConnectionEvent): void {\r\n this.privConnectionEvents.onEvent(event);\r\n Events.instance.onEvent(event);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n private getAgent(): http.Agent {\r\n // eslint-disable-next-line @typescript-eslint/unbound-method\r\n const agent: { proxyInfo: ProxyInfo } = new Agent.Agent(this.createConnection) as unknown as { proxyInfo: ProxyInfo } ;\r\n\r\n if (this.proxyInfo !== undefined &&\r\n this.proxyInfo.HostName !== undefined &&\r\n this.proxyInfo.Port > 0) {\r\n agent.proxyInfo = this.proxyInfo;\r\n }\r\n\r\n return agent as unknown as http.Agent;\r\n }\r\n\r\n private static GetProxyAgent(proxyInfo: ProxyInfo): HttpsProxyAgent {\r\n const httpProxyOptions: HttpsProxyAgent.HttpsProxyAgentOptions = {\r\n host: proxyInfo.HostName,\r\n port: proxyInfo.Port,\r\n };\r\n\r\n if (!!proxyInfo.UserName) {\r\n httpProxyOptions.headers = {\r\n \"Proxy-Authentication\": \"Basic \" + new Buffer(`${proxyInfo.UserName}:${(proxyInfo.Password === undefined) ? \"\" : proxyInfo.Password}`).toString(\"base64\"),\r\n };\r\n } else {\r\n httpProxyOptions.headers = {};\r\n }\r\n\r\n httpProxyOptions.headers.requestOCSP = \"true\";\r\n\r\n const httpProxyAgent: HttpsProxyAgent = new HttpsProxyAgent(httpProxyOptions);\r\n return httpProxyAgent;\r\n }\r\n\r\n private createConnection(request: Agent.ClientRequest, options: Agent.RequestOptions): Promise {\r\n let socketPromise: Promise;\r\n\r\n options = {\r\n ...options,\r\n ...{\r\n requestOCSP: true,\r\n servername: options.host\r\n }\r\n };\r\n\r\n if (!!this.proxyInfo) {\r\n const httpProxyAgent: HttpsProxyAgent = WebsocketMessageAdapter.GetProxyAgent(this.proxyInfo);\r\n const baseAgent: Agent.Agent = httpProxyAgent as unknown as Agent.Agent;\r\n\r\n socketPromise = new Promise((resolve: (value: net.Socket) => void, reject: (error: string | Error) => void): void => {\r\n baseAgent.callback(request, options, (error: Error, socket: net.Socket): void => {\r\n if (!!error) {\r\n reject(error);\r\n } else {\r\n resolve(socket);\r\n }\r\n });\r\n });\r\n } else {\r\n if (!!options.secureEndpoint) {\r\n socketPromise = Promise.resolve(tls.connect(options));\r\n } else {\r\n socketPromise = Promise.resolve(net.connect(options));\r\n }\r\n }\r\n\r\n return socketPromise;\r\n }\r\n\r\n private get isWebsocketOpen(): boolean {\r\n return this.privWebsocketClient && this.privWebsocketClient.readyState === this.privWebsocketClient.OPEN;\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { LanguageUnderstandingModelImpl } from \"../sdk/LanguageUnderstandingModel.js\";\r\n\r\n/**\r\n * @class AddedLmIntent\r\n */\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class AddedLmIntent {\r\n public modelImpl: LanguageUnderstandingModelImpl;\r\n public intentName: string;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param modelImpl - The model.\r\n * @param intentName - The intent name.\r\n */\r\n public constructor(modelImpl: LanguageUnderstandingModelImpl, intentName: string) {\r\n this.modelImpl = modelImpl;\r\n this.intentName = intentName;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Represents the JSON used in the agent.config message sent to the speech service.\r\n */\r\nexport class AgentConfig {\r\n private iPrivConfig: IAgentConfig;\r\n\r\n public toJsonString(): string {\r\n return JSON.stringify(this.iPrivConfig);\r\n }\r\n\r\n public get(): IAgentConfig {\r\n return this.iPrivConfig;\r\n }\r\n\r\n /**\r\n * Setter for the agent.config object.\r\n * @param value a JSON serializable object.\r\n */\r\n public set(value: IAgentConfig): void {\r\n this.iPrivConfig = value;\r\n }\r\n}\r\n\r\nexport interface IAgentConfig {\r\n botInfo: {\r\n commType: string;\r\n connectionId: string;\r\n conversationId: string;\r\n fromId: string;\r\n commandsCulture: string;\r\n ttsAudioFormat: string;\r\n };\r\n version: number;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n AvatarConfig,\r\n AvatarEventArgs,\r\n AvatarSynthesizer,\r\n PropertyId,\r\n Synthesizer,\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n ISynthesisConnectionFactory,\r\n ISynthesisMetadata,\r\n ISynthesisSectionVideo,\r\n SynthesisAdapterBase,\r\n SynthesizerConfig\r\n} from \"./Exports.js\";\r\nimport { IAuthentication } from \"./IAuthentication.js\";\r\n\r\nexport class AvatarSynthesisAdapter extends SynthesisAdapterBase {\r\n private readonly privAvatarSynthesizer: AvatarSynthesizer;\r\n private readonly privAvatarConfig: AvatarConfig;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: ISynthesisConnectionFactory,\r\n synthesizerConfig: SynthesizerConfig,\r\n avatarSynthesizer: AvatarSynthesizer,\r\n avatarConfig: AvatarConfig,\r\n ) {\r\n\r\n super(authentication, connectionFactory,\r\n synthesizerConfig, undefined);\r\n this.privAvatarSynthesizer = avatarSynthesizer;\r\n this.privSynthesizer = avatarSynthesizer as Synthesizer;\r\n this.privAvatarConfig = avatarConfig;\r\n }\r\n\r\n protected setSynthesisContextSynthesisSection(): void {\r\n this.privSynthesisContext.setSynthesisSection(undefined);\r\n }\r\n\r\n protected setSpeechConfigSynthesisSection(): void {\r\n this.privSynthesizerConfig.synthesisVideoSection = {\r\n format: {\r\n bitrate: this.privAvatarConfig.videoFormat?.bitrate,\r\n codec: this.privAvatarConfig.videoFormat?.codec,\r\n crop: {\r\n bottomRight: {\r\n x: this.privAvatarConfig.videoFormat?.cropRange?.bottomRight?.x,\r\n y: this.privAvatarConfig.videoFormat?.cropRange?.bottomRight?.y,\r\n },\r\n topLeft: {\r\n x: this.privAvatarConfig.videoFormat?.cropRange?.topLeft?.x,\r\n y: this.privAvatarConfig.videoFormat?.cropRange?.topLeft?.y,\r\n },\r\n },\r\n resolution: {\r\n height: this.privAvatarConfig.videoFormat?.height,\r\n width: this.privAvatarConfig.videoFormat?.width,\r\n },\r\n },\r\n protocol: {\r\n name: \"WebRTC\",\r\n webrtcConfig: {\r\n clientDescription: btoa(this.privSynthesizerConfig.parameters.getProperty(PropertyId.TalkingAvatarService_WebRTC_SDP)),\r\n iceServers: this.privAvatarConfig.remoteIceServers ?? this.privAvatarSynthesizer.iceServers,\r\n },\r\n },\r\n talkingAvatar: {\r\n background: {\r\n color: this.privAvatarConfig.backgroundColor,\r\n image: {\r\n url: this.privAvatarConfig.backgroundImage?.toString(),\r\n }\r\n },\r\n character: this.privAvatarConfig.character,\r\n customized: this.privAvatarConfig.customized,\r\n style: this.privAvatarConfig.style,\r\n }\r\n } as ISynthesisSectionVideo;\r\n }\r\n\r\n\r\n protected onAvatarEvent(metadata: ISynthesisMetadata): void {\r\n if (!!this.privAvatarSynthesizer.avatarEventReceived) {\r\n const avatarEventArgs: AvatarEventArgs = new AvatarEventArgs(\r\n metadata.Data.Offset,\r\n metadata.Data.Name);\r\n try {\r\n this.privAvatarSynthesizer.avatarEventReceived(this.privAvatarSynthesizer, avatarEventArgs);\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ArgumentNullError,\r\n} from \"../common/Exports.js\";\r\nimport { HeaderNames } from \"./HeaderNames.js\";\r\nimport {\r\n AuthInfo,\r\n IAuthentication\r\n} from \"./IAuthentication.js\";\r\n\r\n/**\r\n * @class\r\n */\r\nexport class CognitiveSubscriptionKeyAuthentication implements IAuthentication {\r\n private privAuthInfo: AuthInfo;\r\n\r\n /**\r\n * Creates and initializes an instance of the CognitiveSubscriptionKeyAuthentication class.\r\n * @constructor\r\n * @param {string} subscriptionKey - The subscription key\r\n */\r\n public constructor(subscriptionKey: string) {\r\n if (!subscriptionKey) {\r\n throw new ArgumentNullError(\"subscriptionKey\");\r\n }\r\n\r\n this.privAuthInfo = new AuthInfo(HeaderNames.AuthKey, subscriptionKey);\r\n }\r\n\r\n /**\r\n * Fetches the subscription key.\r\n * @member\r\n * @function\r\n * @public\r\n * @param {string} authFetchEventId - The id to fetch.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public fetch(authFetchEventId: string): Promise {\r\n return Promise.resolve(this.privAuthInfo);\r\n }\r\n\r\n /**\r\n * Fetches the subscription key.\r\n * @member\r\n * @function\r\n * @public\r\n * @param {string} authFetchEventId - The id to fetch.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public fetchOnExpiry(authFetchEventId: string): Promise {\r\n return Promise.resolve(this.privAuthInfo);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ArgumentNullError } from \"../common/Exports.js\";\r\nimport { AuthInfo, IAuthentication } from \"./IAuthentication.js\";\r\nimport { HeaderNames } from \"./HeaderNames.js\";\r\n\r\nexport class CognitiveTokenAuthentication implements IAuthentication {\r\n private static privTokenPrefix: string = \"Bearer \";\r\n private privFetchCallback: (authFetchEventId: string) => Promise;\r\n private privFetchOnExpiryCallback: (authFetchEventId: string) => Promise;\r\n\r\n public constructor(fetchCallback: (authFetchEventId: string) => Promise, fetchOnExpiryCallback: (authFetchEventId: string) => Promise) {\r\n if (!fetchCallback) {\r\n throw new ArgumentNullError(\"fetchCallback\");\r\n }\r\n\r\n if (!fetchOnExpiryCallback) {\r\n throw new ArgumentNullError(\"fetchOnExpiryCallback\");\r\n }\r\n\r\n this.privFetchCallback = fetchCallback;\r\n this.privFetchOnExpiryCallback = fetchOnExpiryCallback;\r\n }\r\n\r\n public fetch(authFetchEventId: string): Promise {\r\n return this.privFetchCallback(authFetchEventId).then((token: string): AuthInfo => new AuthInfo(HeaderNames.Authorization, token === undefined ? undefined : CognitiveTokenAuthentication.privTokenPrefix + token));\r\n }\r\n\r\n public fetchOnExpiry(authFetchEventId: string): Promise {\r\n return this.privFetchOnExpiryCallback(authFetchEventId).then((token: string): AuthInfo => new AuthInfo(HeaderNames.Authorization, token === undefined ? undefined : CognitiveTokenAuthentication.privTokenPrefix + token));\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ServicePropertiesPropertyName,\r\n} from \"../common.speech/Exports.js\";\r\nimport { IConnection, IStringDictionary } from \"../common/Exports.js\";\r\nimport { PropertyId } from \"../sdk/Exports.js\";\r\nimport { AuthInfo, IConnectionFactory, RecognizerConfig } from \"./Exports.js\";\r\nimport { QueryParameterNames } from \"./QueryParameterNames.js\";\r\n\r\nexport abstract class ConnectionFactoryBase implements IConnectionFactory {\r\n\r\n public static getHostSuffix(region: string): string {\r\n if (!!region) {\r\n if (region.toLowerCase().startsWith(\"china\")) {\r\n return \".azure.cn\";\r\n }\r\n if (region.toLowerCase().startsWith(\"usgov\")) {\r\n return \".azure.us\";\r\n }\r\n }\r\n return \".microsoft.com\";\r\n }\r\n\r\n public abstract create(\r\n config: RecognizerConfig,\r\n authInfo: AuthInfo,\r\n connectionId?: string): IConnection;\r\n\r\n protected setCommonUrlParams(\r\n config: RecognizerConfig,\r\n queryParams: IStringDictionary,\r\n endpoint: string): void {\r\n\r\n const propertyIdToParameterMap: Map = new Map([\r\n [PropertyId.Speech_SegmentationSilenceTimeoutMs, QueryParameterNames.SegmentationSilenceTimeoutMs],\r\n [PropertyId.SpeechServiceConnection_EnableAudioLogging, QueryParameterNames.EnableAudioLogging],\r\n [PropertyId.SpeechServiceConnection_EndSilenceTimeoutMs, QueryParameterNames.EndSilenceTimeoutMs],\r\n [PropertyId.SpeechServiceConnection_InitialSilenceTimeoutMs, QueryParameterNames.InitialSilenceTimeoutMs],\r\n [PropertyId.SpeechServiceResponse_PostProcessingOption, QueryParameterNames.Postprocessing],\r\n [PropertyId.SpeechServiceResponse_ProfanityOption, QueryParameterNames.Profanity],\r\n [PropertyId.SpeechServiceResponse_RequestWordLevelTimestamps, QueryParameterNames.EnableWordLevelTimestamps],\r\n [PropertyId.SpeechServiceResponse_StablePartialResultThreshold, QueryParameterNames.StableIntermediateThreshold],\r\n ]);\r\n\r\n propertyIdToParameterMap.forEach((parameterName: string, propertyId: PropertyId): void => {\r\n this.setUrlParameter(propertyId, parameterName, config, queryParams, endpoint);\r\n });\r\n\r\n\r\n const serviceProperties: IStringDictionary = JSON.parse(config.parameters.getProperty(ServicePropertiesPropertyName, \"{}\")) as IStringDictionary;\r\n\r\n Object.keys(serviceProperties).forEach((value: string): void => {\r\n queryParams[value] = serviceProperties[value];\r\n });\r\n }\r\n\r\n protected setUrlParameter(\r\n propId: PropertyId,\r\n parameterName: string,\r\n config: RecognizerConfig,\r\n queryParams: IStringDictionary,\r\n endpoint: string): void {\r\n\r\n const value: string = config.parameters.getProperty(propId, undefined);\r\n\r\n // FIXME: The .search() check will incorrectly match parameter name anywhere in the string\r\n // including e.g. the path portion, or even as a substring of other query parameters\r\n if (value && (!endpoint || endpoint.search(parameterName) === -1)) {\r\n queryParams[parameterName] = value.toLocaleLowerCase();\r\n }\r\n }\r\n\r\n}\r\n","import { IAudioSource } from \"../common/Exports.js\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n OutputFormat,\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer,\r\n ResultReason,\r\n SpeechRecognitionResult\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n DetailedSpeechPhrase,\r\n EnumTranslation,\r\n IAuthentication,\r\n IConnectionFactory,\r\n OutputFormatPropertyName,\r\n RecognitionStatus,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SimpleSpeechPhrase,\r\n SpeechHypothesis\r\n} from \"./Exports.js\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal.js\";\r\n\r\nexport class ConversationServiceRecognizer extends ServiceRecognizerBase {\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n recognizer: Recognizer) {\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, recognizer);\r\n this.handleSpeechPhraseMessage = async (textBody: string): Promise => this.handleSpeechPhrase(textBody);\r\n this.handleSpeechHypothesisMessage = (textBody: string): void => this.handleSpeechHypothesis(textBody);\r\n }\r\n\r\n protected processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n void connectionMessage;\r\n return;\r\n }\r\n\r\n protected handleRecognizedCallback(result: SpeechRecognitionResult, offset: number, sessionId: string): void {\r\n void result;\r\n void offset;\r\n void sessionId;\r\n return;\r\n }\r\n\r\n protected handleRecognizingCallback(result: SpeechRecognitionResult, duration: number, sessionId: string): void {\r\n void result;\r\n void duration;\r\n void sessionId;\r\n return;\r\n }\r\n\r\n protected async processSpeechMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n let processed: boolean = false;\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"speech.hypothesis\":\r\n case \"speech.fragment\":\r\n if (!!this.handleSpeechHypothesisMessage) {\r\n this.handleSpeechHypothesisMessage(connectionMessage.textBody);\r\n }\r\n processed = true;\r\n break;\r\n case \"speech.phrase\":\r\n if (!!this.handleSpeechPhraseMessage) {\r\n await this.handleSpeechPhraseMessage(connectionMessage.textBody);\r\n }\r\n processed = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n return processed;\r\n }\r\n\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n // Implementing to allow inheritance\r\n void sessionId;\r\n void requestId;\r\n void cancellationReason;\r\n void errorCode;\r\n void error;\r\n }\r\n\r\n protected async handleSpeechPhrase(textBody: string): Promise {\r\n\r\n const simple: SimpleSpeechPhrase = SimpleSpeechPhrase.fromJSON(textBody);\r\n const resultReason: ResultReason = EnumTranslation.implTranslateRecognitionResult(simple.RecognitionStatus);\r\n let result: SpeechRecognitionResult;\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, textBody);\r\n const simpleOffset = simple.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n let offset = simpleOffset;\r\n\r\n this.privRequestSession.onPhraseRecognized(this.privRequestSession.currentTurnAudioOffset + simple.Offset + simple.Duration);\r\n\r\n if (ResultReason.Canceled === resultReason) {\r\n const cancelReason: CancellationReason = EnumTranslation.implTranslateCancelResult(simple.RecognitionStatus);\r\n const cancellationErrorCode: CancellationErrorCode = EnumTranslation.implTranslateCancelErrorCode(simple.RecognitionStatus);\r\n\r\n await this.cancelRecognitionLocal(\r\n cancelReason,\r\n cancellationErrorCode,\r\n EnumTranslation.implTranslateErrorDetails(cancellationErrorCode));\r\n\r\n } else {\r\n if (!(this.privRequestSession.isSpeechEnded && resultReason === ResultReason.NoMatch && simple.RecognitionStatus !== RecognitionStatus.InitialSilenceTimeout)) {\r\n if (this.privRecognizerConfig.parameters.getProperty(OutputFormatPropertyName) === OutputFormat[OutputFormat.Simple]) {\r\n result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n resultReason,\r\n simple.DisplayText,\r\n simple.Duration,\r\n simpleOffset,\r\n simple.Language,\r\n simple.LanguageDetectionConfidence,\r\n simple.SpeakerId,\r\n undefined,\r\n textBody,\r\n resultProps);\r\n } else {\r\n const detailed: DetailedSpeechPhrase = DetailedSpeechPhrase.fromJSON(textBody);\r\n const totalOffset: number = detailed.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n const offsetCorrectedJson: string = detailed.getJsonWithCorrectedOffsets(totalOffset);\r\n\r\n result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n resultReason,\r\n detailed.Text,\r\n detailed.Duration,\r\n totalOffset,\r\n detailed.Language,\r\n detailed.LanguageDetectionConfidence,\r\n detailed.SpeakerId,\r\n undefined,\r\n offsetCorrectedJson,\r\n resultProps);\r\n\r\n offset = result.offset;\r\n }\r\n\r\n this.handleRecognizedCallback(result, offset, this.privRequestSession.sessionId);\r\n }\r\n }\r\n }\r\n\r\n protected handleSpeechHypothesis(textBody: string): void {\r\n const hypothesis: SpeechHypothesis = SpeechHypothesis.fromJSON(textBody);\r\n const offset: number = hypothesis.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, textBody);\r\n\r\n const result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n ResultReason.RecognizingSpeech,\r\n hypothesis.Text,\r\n hypothesis.Duration,\r\n offset,\r\n hypothesis.Language,\r\n hypothesis.LanguageDetectionConfidence,\r\n hypothesis.SpeakerId,\r\n undefined,\r\n textBody,\r\n resultProps);\r\n\r\n this.privRequestSession.onHypothesis(offset);\r\n\r\n this.handleRecognizingCallback(result, hypothesis.Duration, this.privRequestSession.sessionId);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ProxyInfo,\r\n WebsocketConnection,\r\n} from \"../common.browser/Exports.js\";\r\nimport {\r\n IConnection,\r\n IStringDictionary\r\n} from \"../common/Exports.js\";\r\nimport {\r\n PropertyId\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n ServicePropertiesPropertyName\r\n} from \"../common.speech/Exports.js\";\r\nimport {\r\n ConnectionFactoryBase\r\n} from \"./ConnectionFactoryBase.js\";\r\nimport {\r\n AuthInfo,\r\n RecognizerConfig,\r\n WebsocketMessageFormatter\r\n} from \"./Exports.js\";\r\nimport { HeaderNames } from \"./HeaderNames.js\";\r\nimport {\r\n QueryParameterNames\r\n} from \"./QueryParameterNames.js\";\r\n\r\nexport class ConversationTranscriberConnectionFactory extends ConnectionFactoryBase {\r\n private readonly universalUri: string = \"/speech/universal/v2\";\r\n\r\n public create(\r\n config: RecognizerConfig,\r\n authInfo: AuthInfo,\r\n connectionId?: string): IConnection {\r\n\r\n let endpoint: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint, undefined);\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region, undefined);\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n const host: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Host, \"wss://\" + region + \".stt.speech\" + hostSuffix);\r\n const queryParams: IStringDictionary = {};\r\n const endpointId: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_EndpointId, undefined);\r\n const language: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage, undefined);\r\n\r\n if (endpointId) {\r\n if (!endpoint || endpoint.search(QueryParameterNames.CustomSpeechDeploymentId) === -1) {\r\n queryParams[QueryParameterNames.CustomSpeechDeploymentId] = endpointId;\r\n }\r\n } else if (language) {\r\n if (!endpoint || endpoint.search(QueryParameterNames.Language) === -1) {\r\n queryParams[QueryParameterNames.Language] = language;\r\n }\r\n }\r\n\r\n if (config.autoDetectSourceLanguages !== undefined) {\r\n queryParams[QueryParameterNames.EnableLanguageId] = \"true\";\r\n }\r\n\r\n this.setV2UrlParams(config, queryParams, endpoint);\r\n\r\n if (!endpoint) {\r\n endpoint = `${host}${this.universalUri}`;\r\n }\r\n\r\n const headers: IStringDictionary = {};\r\n if (authInfo.token !== undefined && authInfo.token !== \"\") {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n headers[HeaderNames.ConnectionId] = connectionId;\r\n\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n\r\n const webSocketConnection = new WebsocketConnection(endpoint, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n\r\n // Set the value of SpeechServiceConnection_Url to webSocketConnection.uri (and not to `endpoint`), since this value is the final\r\n // URI that was used to make the connection (including query parameters).\r\n const uri: string = webSocketConnection.uri;\r\n config.parameters.setProperty(PropertyId.SpeechServiceConnection_Url, uri);\r\n\r\n return webSocketConnection;\r\n }\r\n\r\n protected setV2UrlParams(\r\n config: RecognizerConfig,\r\n queryParams: IStringDictionary,\r\n endpoint: string): void {\r\n\r\n const propertyIdToParameterMap: Map = new Map([\r\n [PropertyId.Speech_SegmentationSilenceTimeoutMs, QueryParameterNames.SegmentationSilenceTimeoutMs],\r\n [PropertyId.SpeechServiceConnection_EnableAudioLogging, QueryParameterNames.EnableAudioLogging],\r\n [PropertyId.SpeechServiceConnection_EndSilenceTimeoutMs, QueryParameterNames.EndSilenceTimeoutMs],\r\n [PropertyId.SpeechServiceConnection_InitialSilenceTimeoutMs, QueryParameterNames.InitialSilenceTimeoutMs],\r\n [PropertyId.SpeechServiceResponse_PostProcessingOption, QueryParameterNames.Postprocessing],\r\n [PropertyId.SpeechServiceResponse_ProfanityOption, QueryParameterNames.Profanity],\r\n [PropertyId.SpeechServiceResponse_StablePartialResultThreshold, QueryParameterNames.StableIntermediateThreshold],\r\n ]);\r\n\r\n propertyIdToParameterMap.forEach((parameterName: string, propertyId: PropertyId): void => {\r\n this.setUrlParameter(propertyId, parameterName, config, queryParams, endpoint);\r\n });\r\n\r\n\r\n const serviceProperties: IStringDictionary = JSON.parse(config.parameters.getProperty(ServicePropertiesPropertyName, \"{}\")) as IStringDictionary;\r\n\r\n Object.keys(serviceProperties).forEach((value: string): void => {\r\n queryParams[value] = serviceProperties[value];\r\n });\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IAudioSource } from \"../common/Exports.js\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n OutputFormat,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n ConversationTranscriptionCanceledEventArgs,\r\n ConversationTranscriptionEventArgs,\r\n ConversationTranscriptionResult,\r\n ConversationTranscriber,\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n CancellationErrorCodePropertyName,\r\n DetailedSpeechPhrase,\r\n EnumTranslation,\r\n OutputFormatPropertyName,\r\n RecognitionStatus,\r\n ServiceRecognizerBase,\r\n SimpleSpeechPhrase,\r\n SpeechHypothesis,\r\n} from \"./Exports.js\";\r\nimport { IAuthentication } from \"./IAuthentication.js\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory.js\";\r\nimport { RecognizerConfig } from \"./RecognizerConfig.js\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal.js\";\r\nimport { PhraseDetection, SpeakerDiarization } from \"./ServiceRecognizerBase.js\";\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class ConversationTranscriptionServiceRecognizer extends ServiceRecognizerBase {\r\n\r\n private privConversationTranscriber: ConversationTranscriber;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n conversationTranscriber: ConversationTranscriber) {\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, conversationTranscriber);\r\n this.privConversationTranscriber = conversationTranscriber;\r\n this.setSpeakerDiarizationJson();\r\n }\r\n\r\n protected setSpeakerDiarizationJson(): void {\r\n if (this.privEnableSpeakerId) {\r\n const phraseDetection = this.privSpeechContext.getSection(\"phraseDetection\") as PhraseDetection;\r\n phraseDetection.mode = \"Conversation\";\r\n const speakerDiarization: SpeakerDiarization = {};\r\n speakerDiarization.mode = \"Anonymous\";\r\n speakerDiarization.audioSessionId = this.privDiarizationSessionId;\r\n speakerDiarization.audioOffsetMs = 0;\r\n speakerDiarization.diarizeIntermediates = this.privRecognizerConfig.parameters.getProperty(PropertyId.SpeechServiceResponse_DiarizeIntermediateResults, \"false\") === \"true\";\r\n phraseDetection.speakerDiarization = speakerDiarization;\r\n this.privSpeechContext.setSection(\"phraseDetection\", phraseDetection);\r\n }\r\n }\r\n\r\n protected async processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n\r\n let result: ConversationTranscriptionResult;\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, connectionMessage.textBody);\r\n let processed: boolean = false;\r\n\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"speech.hypothesis\":\r\n case \"speech.fragment\":\r\n const hypothesis: SpeechHypothesis = SpeechHypothesis.fromJSON(connectionMessage.textBody);\r\n const offset: number = hypothesis.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n\r\n result = new ConversationTranscriptionResult(\r\n this.privRequestSession.requestId,\r\n ResultReason.RecognizingSpeech,\r\n hypothesis.Text,\r\n hypothesis.Duration,\r\n offset,\r\n hypothesis.Language,\r\n hypothesis.LanguageDetectionConfidence,\r\n hypothesis.SpeakerId,\r\n undefined,\r\n connectionMessage.textBody,\r\n resultProps);\r\n\r\n this.privRequestSession.onHypothesis(offset);\r\n\r\n const ev = new ConversationTranscriptionEventArgs(result, hypothesis.Duration, this.privRequestSession.sessionId);\r\n\r\n if (!!this.privConversationTranscriber.transcribing) {\r\n try {\r\n this.privConversationTranscriber.transcribing(this.privConversationTranscriber, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n processed = true;\r\n break;\r\n case \"speech.phrase\":\r\n const simple: SimpleSpeechPhrase = SimpleSpeechPhrase.fromJSON(connectionMessage.textBody);\r\n const resultReason: ResultReason = EnumTranslation.implTranslateRecognitionResult(simple.RecognitionStatus);\r\n\r\n this.privRequestSession.onPhraseRecognized(this.privRequestSession.currentTurnAudioOffset + simple.Offset + simple.Duration);\r\n\r\n if (ResultReason.Canceled === resultReason) {\r\n const cancelReason: CancellationReason = EnumTranslation.implTranslateCancelResult(simple.RecognitionStatus);\r\n const cancellationErrorCode: CancellationErrorCode = EnumTranslation.implTranslateCancelErrorCode(simple.RecognitionStatus);\r\n\r\n await this.cancelRecognitionLocal(\r\n cancelReason,\r\n cancellationErrorCode,\r\n EnumTranslation.implTranslateErrorDetails(cancellationErrorCode));\r\n\r\n } else {\r\n if (!(this.privRequestSession.isSpeechEnded && resultReason === ResultReason.NoMatch && simple.RecognitionStatus !== RecognitionStatus.InitialSilenceTimeout)) {\r\n if (this.privRecognizerConfig.parameters.getProperty(OutputFormatPropertyName) === OutputFormat[OutputFormat.Simple]) {\r\n result = new ConversationTranscriptionResult(\r\n this.privRequestSession.requestId,\r\n resultReason,\r\n simple.DisplayText,\r\n simple.Duration,\r\n simple.Offset + this.privRequestSession.currentTurnAudioOffset,\r\n simple.Language,\r\n simple.LanguageDetectionConfidence,\r\n simple.SpeakerId,\r\n undefined,\r\n connectionMessage.textBody,\r\n resultProps);\r\n } else {\r\n const detailed: DetailedSpeechPhrase = DetailedSpeechPhrase.fromJSON(connectionMessage.textBody);\r\n const totalOffset: number = detailed.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n const offsetCorrectedJson: string = detailed.getJsonWithCorrectedOffsets(totalOffset);\r\n\r\n result = new ConversationTranscriptionResult(\r\n this.privRequestSession.requestId,\r\n resultReason,\r\n detailed.RecognitionStatus === RecognitionStatus.Success ? detailed.NBest[0].Display : undefined,\r\n detailed.Duration,\r\n totalOffset,\r\n detailed.Language,\r\n detailed.LanguageDetectionConfidence,\r\n simple.SpeakerId,\r\n undefined,\r\n offsetCorrectedJson,\r\n resultProps);\r\n }\r\n\r\n const event: ConversationTranscriptionEventArgs = new ConversationTranscriptionEventArgs(result, result.offset, this.privRequestSession.sessionId);\r\n\r\n if (!!this.privConversationTranscriber.transcribed) {\r\n try {\r\n this.privConversationTranscriber.transcribed(this.privConversationTranscriber, event);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n }\r\n }\r\n processed = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n return processed;\r\n }\r\n\r\n // Cancels recognition.\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n const properties: PropertyCollection = new PropertyCollection();\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n\r\n if (!!this.privConversationTranscriber.canceled) {\r\n const cancelEvent: ConversationTranscriptionCanceledEventArgs = new ConversationTranscriptionCanceledEventArgs(\r\n cancellationReason,\r\n error,\r\n errorCode,\r\n undefined,\r\n sessionId);\r\n try {\r\n this.privConversationTranscriber.canceled(this.privConversationTranscriber, cancelEvent);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport {\r\n ProxyInfo,\r\n WebsocketConnection,\r\n} from \"../common.browser/Exports.js\";\r\nimport { OutputFormatPropertyName } from \"../common.speech/Exports.js\";\r\nimport { IConnection, IStringDictionary } from \"../common/Exports.js\";\r\nimport { DialogServiceConfig, OutputFormat, PropertyId } from \"../sdk/Exports.js\";\r\nimport { ConnectionFactoryBase } from \"./ConnectionFactoryBase.js\";\r\nimport { AuthInfo, RecognizerConfig, WebsocketMessageFormatter } from \"./Exports.js\";\r\nimport { HeaderNames } from \"./HeaderNames.js\";\r\nimport { QueryParameterNames } from \"./QueryParameterNames.js\";\r\n\r\nexport class DialogConnectionFactory extends ConnectionFactoryBase {\r\n\r\n private static readonly ApiKey: string = \"api\";\r\n private static readonly BaseUrl: string = \"convai.speech\";\r\n\r\n public create(\r\n config: RecognizerConfig,\r\n authInfo: AuthInfo,\r\n connectionId?: string): IConnection {\r\n\r\n const applicationId: string = config.parameters.getProperty(PropertyId.Conversation_ApplicationId, \"\");\r\n const dialogType: string = config.parameters.getProperty(PropertyId.Conversation_DialogType);\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region);\r\n const language: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage, \"en-US\");\r\n const requestTurnStatus: string = config.parameters.getProperty(PropertyId.Conversation_Request_Bot_Status_Messages, \"true\");\r\n\r\n const queryParams: IStringDictionary = {};\r\n queryParams[HeaderNames.ConnectionId] = connectionId;\r\n queryParams[QueryParameterNames.Format] = config.parameters.getProperty(OutputFormatPropertyName, OutputFormat[OutputFormat.Simple]).toLowerCase();\r\n queryParams[QueryParameterNames.Language] = language;\r\n queryParams[QueryParameterNames.RequestBotStatusMessages] = requestTurnStatus;\r\n if (applicationId) {\r\n queryParams[QueryParameterNames.BotId] = applicationId;\r\n if (dialogType === DialogServiceConfig.DialogTypes.CustomCommands) {\r\n queryParams[HeaderNames.CustomCommandsAppId] = applicationId;\r\n }\r\n }\r\n\r\n const resourceInfix: string =\r\n dialogType === DialogServiceConfig.DialogTypes.CustomCommands ? \"commands/\"\r\n : \"\";\r\n const version: string =\r\n dialogType === DialogServiceConfig.DialogTypes.CustomCommands ? \"v1\"\r\n : dialogType === DialogServiceConfig.DialogTypes.BotFramework ? \"v3\"\r\n : \"v0\";\r\n\r\n const headers: IStringDictionary = {};\r\n\r\n if (authInfo.token != null && authInfo.token !== \"\") {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n\r\n // The URL used for connection is chosen in a priority order of specification:\r\n // 1. If a custom endpoint is provided, that URL is used verbatim.\r\n // 2. If a custom host is provided (e.g. \"wss://my.custom.endpoint.com:1123\"), a URL is constructed from it.\r\n // 3. If no custom connection details are provided, a URL is constructed from default values.\r\n let endpoint: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint, \"\");\r\n if (!endpoint) {\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n const host: string = config.parameters.getProperty(\r\n PropertyId.SpeechServiceConnection_Host,\r\n `wss://${region}.${DialogConnectionFactory.BaseUrl}${hostSuffix}`);\r\n const standardizedHost: string = host.endsWith(\"/\") ? host : host + \"/\";\r\n endpoint = `${standardizedHost}${resourceInfix}${DialogConnectionFactory.ApiKey}/${version}`;\r\n }\r\n\r\n this.setCommonUrlParams(config, queryParams, endpoint);\r\n\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n return new WebsocketConnection(endpoint, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ReplayableAudioNode\r\n} from \"../common.browser/Exports.js\";\r\nimport { SendingAgentContextMessageEvent } from \"../common/DialogEvents.js\";\r\nimport {\r\n BackgroundEvent,\r\n ConnectionEvent,\r\n ConnectionMessage,\r\n createGuid,\r\n createNoDashGuid,\r\n Deferred,\r\n DialogEvent,\r\n Events,\r\n EventSource,\r\n IAudioSource,\r\n IAudioStreamNode,\r\n IConnection,\r\n MessageType,\r\n ServiceEvent,\r\n} from \"../common/Exports.js\";\r\nimport { AudioOutputFormatImpl } from \"../sdk/Audio/AudioOutputFormat.js\";\r\nimport { PullAudioOutputStreamImpl } from \"../sdk/Audio/AudioOutputStream.js\";\r\nimport { AudioStreamFormatImpl } from \"../sdk/Audio/AudioStreamFormat.js\";\r\nimport {\r\n ActivityReceivedEventArgs,\r\n CancellationErrorCode,\r\n CancellationReason,\r\n DialogServiceConfig,\r\n DialogServiceConnector,\r\n PropertyCollection,\r\n PropertyId,\r\n RecognitionEventArgs,\r\n ResultReason,\r\n SessionEventArgs,\r\n SpeechRecognitionCanceledEventArgs,\r\n SpeechRecognitionEventArgs,\r\n SpeechRecognitionResult,\r\n TurnStatusReceivedEventArgs,\r\n} from \"../sdk/Exports.js\";\r\nimport { DialogServiceTurnStateManager } from \"./DialogServiceTurnStateManager.js\";\r\nimport {\r\n CancellationErrorCodePropertyName,\r\n EnumTranslation,\r\n ISpeechConfigAudioDevice,\r\n RecognitionStatus,\r\n ServiceRecognizerBase,\r\n SimpleSpeechPhrase,\r\n SpeechDetected,\r\n SpeechHypothesis,\r\n SpeechKeyword,\r\n} from \"./Exports.js\";\r\nimport { IAuthentication } from \"./IAuthentication.js\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory.js\";\r\nimport { RecognitionMode, RecognizerConfig } from \"./RecognizerConfig.js\";\r\nimport { ActivityPayloadResponse } from \"./ServiceMessages/ActivityResponsePayload.js\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal.js\";\r\n\r\nexport class DialogServiceAdapter extends ServiceRecognizerBase {\r\n private privDialogServiceConnector: DialogServiceConnector;\r\n\r\n private privDialogAudioSource: IAudioSource;\r\n\r\n private privConnectionLoop: Promise;\r\n private terminateMessageLoop: boolean;\r\n private agentConfigSent: boolean;\r\n private privLastResult: SpeechRecognitionResult;\r\n private privEvents: EventSource;\r\n\r\n // Turns are of two kinds:\r\n // 1: SR turns, end when the SR result is returned and then turn end.\r\n // 2: Service turns where an activity is sent by the service along with the audio.\r\n private privTurnStateManager: DialogServiceTurnStateManager;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n dialogServiceConnector: DialogServiceConnector) {\r\n\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, dialogServiceConnector);\r\n\r\n this.privEvents = new EventSource();\r\n this.privDialogServiceConnector = dialogServiceConnector;\r\n this.receiveMessageOverride = (): Promise => this.receiveDialogMessageOverride();\r\n this.privTurnStateManager = new DialogServiceTurnStateManager();\r\n this.recognizeOverride =\r\n (recoMode: RecognitionMode, successCallback: (e: SpeechRecognitionResult) => void, errorCallback: (e: string) => void): Promise =>\r\n this.listenOnce(recoMode, successCallback, errorCallback);\r\n this.postConnectImplOverride = (connection: Promise): Promise => this.dialogConnectImpl(connection);\r\n this.configConnectionOverride = (connection: IConnection): Promise => this.configConnection(connection);\r\n this.disconnectOverride = (): Promise => this.privDisconnect();\r\n this.privDialogAudioSource = audioSource;\r\n\r\n this.agentConfigSent = false;\r\n this.privLastResult = null;\r\n this.connectionEvents.attach((connectionEvent: ConnectionEvent): void => {\r\n if (connectionEvent.name === \"ConnectionClosedEvent\") {\r\n this.terminateMessageLoop = true;\r\n }\r\n });\r\n }\r\n\r\n public async sendMessage(message: string): Promise {\r\n const interactionGuid: string = createGuid();\r\n const requestId: string = createNoDashGuid();\r\n\r\n const agentMessage: any = {\r\n context: {\r\n interactionId: interactionGuid\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n messagePayload: JSON.parse(message),\r\n version: 0.5\r\n };\r\n\r\n const agentMessageJson = JSON.stringify(agentMessage);\r\n const connection: IConnection = await this.fetchConnection();\r\n await connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"agent\",\r\n requestId,\r\n \"application/json\",\r\n agentMessageJson));\r\n\r\n }\r\n\r\n protected async privDisconnect(): Promise {\r\n await this.cancelRecognition(this.privRequestSession.sessionId,\r\n this.privRequestSession.requestId,\r\n CancellationReason.Error,\r\n CancellationErrorCode.NoError,\r\n \"Disconnecting\");\r\n\r\n this.terminateMessageLoop = true;\r\n this.agentConfigSent = false;\r\n return;\r\n }\r\n\r\n protected processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n if (connectionMessage.messageType === MessageType.Text) {\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, connectionMessage.textBody);\r\n }\r\n\r\n let result: SpeechRecognitionResult;\r\n let processed: boolean;\r\n\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"speech.phrase\":\r\n const speechPhrase: SimpleSpeechPhrase = SimpleSpeechPhrase.fromJSON(connectionMessage.textBody);\r\n\r\n this.privRequestSession.onPhraseRecognized(this.privRequestSession.currentTurnAudioOffset + speechPhrase.Offset + speechPhrase.Duration);\r\n\r\n if (speechPhrase.RecognitionStatus !== RecognitionStatus.TooManyRequests && speechPhrase.RecognitionStatus !== RecognitionStatus.Error) {\r\n const args: SpeechRecognitionEventArgs = this.fireEventForResult(speechPhrase, resultProps);\r\n this.privLastResult = args.result;\r\n\r\n if (!!this.privDialogServiceConnector.recognized) {\r\n try {\r\n this.privDialogServiceConnector.recognized(this.privDialogServiceConnector, args);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n }\r\n processed = true;\r\n break;\r\n case \"speech.hypothesis\":\r\n const hypothesis: SpeechHypothesis = SpeechHypothesis.fromJSON(connectionMessage.textBody);\r\n const offset: number = hypothesis.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n\r\n result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n ResultReason.RecognizingSpeech,\r\n hypothesis.Text,\r\n hypothesis.Duration,\r\n offset,\r\n hypothesis.Language,\r\n hypothesis.LanguageDetectionConfidence,\r\n undefined,\r\n undefined,\r\n connectionMessage.textBody,\r\n resultProps);\r\n\r\n this.privRequestSession.onHypothesis(offset);\r\n\r\n const ev = new SpeechRecognitionEventArgs(result, hypothesis.Duration, this.privRequestSession.sessionId);\r\n\r\n if (!!this.privDialogServiceConnector.recognizing) {\r\n try {\r\n this.privDialogServiceConnector.recognizing(this.privDialogServiceConnector, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n processed = true;\r\n break;\r\n case \"speech.keyword\":\r\n const keyword: SpeechKeyword = SpeechKeyword.fromJSON(connectionMessage.textBody);\r\n\r\n result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n keyword.Status === \"Accepted\" ? ResultReason.RecognizedKeyword : ResultReason.NoMatch,\r\n keyword.Text,\r\n keyword.Duration,\r\n keyword.Offset,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n connectionMessage.textBody,\r\n resultProps);\r\n\r\n if (keyword.Status !== \"Accepted\") {\r\n this.privLastResult = result;\r\n }\r\n\r\n const event = new SpeechRecognitionEventArgs(result, result.duration, result.resultId);\r\n\r\n if (!!this.privDialogServiceConnector.recognized) {\r\n try {\r\n this.privDialogServiceConnector.recognized(this.privDialogServiceConnector, event);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n processed = true;\r\n break;\r\n case \"audio\":\r\n {\r\n const audioRequestId = connectionMessage.requestId.toUpperCase();\r\n const turn = this.privTurnStateManager.GetTurn(audioRequestId);\r\n try {\r\n // Empty binary message signals end of stream.\r\n if (!connectionMessage.binaryBody) {\r\n turn.endAudioStream();\r\n } else {\r\n turn.audioStream.write(connectionMessage.binaryBody);\r\n }\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n processed = true;\r\n break;\r\n\r\n case \"response\":\r\n {\r\n this.handleResponseMessage(connectionMessage);\r\n\r\n }\r\n processed = true;\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n const defferal = new Deferred();\r\n defferal.resolve(processed);\r\n return defferal.promise;\r\n }\r\n\r\n // Cancels recognition.\r\n protected async cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): Promise {\r\n\r\n this.terminateMessageLoop = true;\r\n\r\n if (!!this.privRequestSession.isRecognizing) {\r\n await this.privRequestSession.onStopRecognizing();\r\n }\r\n\r\n if (!!this.privDialogServiceConnector.canceled) {\r\n const properties: PropertyCollection = new PropertyCollection();\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n\r\n const cancelEvent: SpeechRecognitionCanceledEventArgs = new SpeechRecognitionCanceledEventArgs(\r\n cancellationReason,\r\n error,\r\n errorCode,\r\n undefined,\r\n sessionId);\r\n\r\n try {\r\n this.privDialogServiceConnector.canceled(this.privDialogServiceConnector, cancelEvent);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n\r\n if (!!this.privSuccessCallback) {\r\n const result: SpeechRecognitionResult = new SpeechRecognitionResult(\r\n undefined, // ResultId\r\n ResultReason.Canceled,\r\n undefined, // Text\r\n undefined, // Duration\r\n undefined, // Offset\r\n undefined, // Language\r\n undefined, // Language Detection Confidence\r\n undefined, // Speaker Id\r\n error,\r\n undefined, // Json\r\n properties);\r\n try {\r\n this.privSuccessCallback(result);\r\n this.privSuccessCallback = undefined;\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n }\r\n }\r\n\r\n protected async listenOnce(\r\n recoMode: RecognitionMode,\r\n successCallback: (e: SpeechRecognitionResult) => void,\r\n errorCallback: (e: string) => void\r\n ): Promise {\r\n this.privRecognizerConfig.recognitionMode = recoMode;\r\n\r\n this.privSuccessCallback = successCallback;\r\n this.privErrorCallback = errorCallback;\r\n\r\n this.privRequestSession.startNewRecognition();\r\n this.privRequestSession.listenForServiceTelemetry(this.privDialogAudioSource.events);\r\n\r\n this.privRecognizerConfig.parameters.setProperty(PropertyId.Speech_SessionId, this.privRequestSession.sessionId);\r\n\r\n // Start the connection to the service. The promise this will create is stored and will be used by configureConnection().\r\n const conPromise: Promise = this.connectImpl();\r\n\r\n const preAudioPromise: Promise = this.sendPreAudioMessages();\r\n\r\n const node: IAudioStreamNode = await this.privDialogAudioSource.attach(this.privRequestSession.audioNodeId);\r\n const format: AudioStreamFormatImpl = await this.privDialogAudioSource.format;\r\n const deviceInfo: ISpeechConfigAudioDevice = await this.privDialogAudioSource.deviceInfo;\r\n\r\n const audioNode = new ReplayableAudioNode(node, format.avgBytesPerSec);\r\n await this.privRequestSession.onAudioSourceAttachCompleted(audioNode, false);\r\n\r\n this.privRecognizerConfig.SpeechServiceConfig.Context.audio = { source: deviceInfo };\r\n\r\n try {\r\n await conPromise;\r\n await preAudioPromise;\r\n } catch (error) {\r\n await this.cancelRecognition(this.privRequestSession.sessionId, this.privRequestSession.requestId, CancellationReason.Error, CancellationErrorCode.ConnectionFailure, error as string);\r\n return Promise.resolve();\r\n }\r\n\r\n const sessionStartEventArgs: SessionEventArgs = new SessionEventArgs(this.privRequestSession.sessionId);\r\n\r\n if (!!this.privRecognizer.sessionStarted) {\r\n this.privRecognizer.sessionStarted(this.privRecognizer, sessionStartEventArgs);\r\n }\r\n\r\n const audioSendPromise = this.sendAudio(audioNode);\r\n\r\n // /* eslint-disable no-empty */\r\n audioSendPromise.then((): void => { /* add? return true;*/ }, async (error: string): Promise => {\r\n await this.cancelRecognition(this.privRequestSession.sessionId, this.privRequestSession.requestId, CancellationReason.Error, CancellationErrorCode.RuntimeError, error);\r\n });\r\n }\r\n\r\n // Establishes a websocket connection to the end point.\r\n private dialogConnectImpl(connection: Promise): Promise {\r\n this.privConnectionLoop = this.startMessageLoop();\r\n return connection;\r\n }\r\n\r\n private receiveDialogMessageOverride(): Promise {\r\n\r\n // we won't rely on the cascading promises of the connection since we want to continually be available to receive messages\r\n const communicationCustodian: Deferred = new Deferred();\r\n\r\n const loop = async (): Promise => {\r\n try {\r\n const isDisposed: boolean = this.isDisposed();\r\n const terminateMessageLoop = (!this.isDisposed() && this.terminateMessageLoop);\r\n if (isDisposed || terminateMessageLoop) {\r\n // We're done.\r\n communicationCustodian.resolve(undefined);\r\n return;\r\n }\r\n\r\n const connection: IConnection = await this.fetchConnection();\r\n const message: ConnectionMessage = await connection.read();\r\n\r\n if (!message) {\r\n return loop();\r\n }\r\n\r\n const connectionMessage = SpeechConnectionMessage.fromConnectionMessage(message);\r\n\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"turn.start\":\r\n {\r\n const turnRequestId = connectionMessage.requestId.toUpperCase();\r\n const audioSessionReqId = this.privRequestSession.requestId.toUpperCase();\r\n\r\n // turn started by the service\r\n if (turnRequestId !== audioSessionReqId) {\r\n this.privTurnStateManager.StartTurn(turnRequestId);\r\n } else {\r\n this.privRequestSession.onServiceTurnStartResponse();\r\n }\r\n }\r\n break;\r\n\r\n case \"speech.startdetected\":\r\n const speechStartDetected: SpeechDetected = SpeechDetected.fromJSON(connectionMessage.textBody);\r\n\r\n const speechStartEventArgs = new RecognitionEventArgs(speechStartDetected.Offset, this.privRequestSession.sessionId);\r\n\r\n if (!!this.privRecognizer.speechStartDetected) {\r\n this.privRecognizer.speechStartDetected(this.privRecognizer, speechStartEventArgs);\r\n }\r\n\r\n break;\r\n\r\n case \"speech.enddetected\":\r\n\r\n let json: string;\r\n\r\n if (connectionMessage.textBody.length > 0) {\r\n json = connectionMessage.textBody;\r\n } else {\r\n // If the request was empty, the JSON returned is empty.\r\n json = \"{ Offset: 0 }\";\r\n }\r\n\r\n const speechStopDetected: SpeechDetected = SpeechDetected.fromJSON(json);\r\n\r\n this.privRequestSession.onServiceRecognized(speechStopDetected.Offset + this.privRequestSession.currentTurnAudioOffset);\r\n\r\n const speechStopEventArgs = new RecognitionEventArgs(speechStopDetected.Offset + this.privRequestSession.currentTurnAudioOffset, this.privRequestSession.sessionId);\r\n\r\n if (!!this.privRecognizer.speechEndDetected) {\r\n this.privRecognizer.speechEndDetected(this.privRecognizer, speechStopEventArgs);\r\n }\r\n break;\r\n\r\n case \"turn.end\":\r\n {\r\n const turnEndRequestId = connectionMessage.requestId.toUpperCase();\r\n\r\n const audioSessionReqId = this.privRequestSession.requestId.toUpperCase();\r\n\r\n // turn started by the service\r\n if (turnEndRequestId !== audioSessionReqId) {\r\n this.privTurnStateManager.CompleteTurn(turnEndRequestId);\r\n } else {\r\n // Audio session turn\r\n\r\n const sessionStopEventArgs: SessionEventArgs = new SessionEventArgs(this.privRequestSession.sessionId);\r\n await this.privRequestSession.onServiceTurnEndResponse(false);\r\n\r\n if (!this.privRecognizerConfig.isContinuousRecognition || this.privRequestSession.isSpeechEnded || !this.privRequestSession.isRecognizing) {\r\n if (!!this.privRecognizer.sessionStopped) {\r\n this.privRecognizer.sessionStopped(this.privRecognizer, sessionStopEventArgs);\r\n }\r\n }\r\n\r\n // report result to promise.\r\n if (!!this.privSuccessCallback && this.privLastResult) {\r\n try {\r\n this.privSuccessCallback(this.privLastResult);\r\n this.privLastResult = null;\r\n } catch (e) {\r\n if (!!this.privErrorCallback) {\r\n this.privErrorCallback(e as string);\r\n }\r\n }\r\n // Only invoke the call back once.\r\n // and if it's successful don't invoke the\r\n // error after that.\r\n this.privSuccessCallback = undefined;\r\n this.privErrorCallback = undefined;\r\n }\r\n }\r\n }\r\n break;\r\n\r\n default:\r\n try {\r\n const processed = await this.processTypeSpecificMessages(connectionMessage);\r\n if (!processed) {\r\n if (!!this.serviceEvents) {\r\n this.serviceEvents.onEvent(new ServiceEvent(connectionMessage.path.toLowerCase(), connectionMessage.textBody));\r\n }\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n }\r\n const ret: Promise = loop();\r\n\r\n return ret;\r\n } catch (error) {\r\n this.terminateMessageLoop = true;\r\n communicationCustodian.resolve();\r\n }\r\n };\r\n\r\n loop().catch((reason: string): void => {\r\n Events.instance.onEvent(new BackgroundEvent(reason));\r\n });\r\n\r\n return communicationCustodian.promise;\r\n }\r\n\r\n private async startMessageLoop(): Promise {\r\n\r\n this.terminateMessageLoop = false;\r\n\r\n try {\r\n await this.receiveDialogMessageOverride();\r\n } catch (error) {\r\n await this.cancelRecognition(this.privRequestSession.sessionId, this.privRequestSession.requestId, CancellationReason.Error, CancellationErrorCode.RuntimeError, error as string);\r\n }\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n // Takes an established websocket connection to the endpoint and sends speech configuration information.\r\n private async configConnection(connection: IConnection): Promise {\r\n if (this.terminateMessageLoop) {\r\n this.terminateMessageLoop = false;\r\n return Promise.reject(\"Connection to service terminated.\");\r\n }\r\n\r\n await this.sendSpeechServiceConfig(connection, this.privRequestSession, this.privRecognizerConfig.SpeechServiceConfig.serialize());\r\n await this.sendAgentConfig(connection);\r\n return connection;\r\n }\r\n\r\n private async sendPreAudioMessages(): Promise {\r\n const connection: IConnection = await this.fetchConnection();\r\n this.addKeywordContextData();\r\n await this.sendSpeechContext(connection, true);\r\n await this.sendAgentContext(connection);\r\n await this.sendWaveHeader(connection);\r\n }\r\n\r\n private sendAgentConfig(connection: IConnection): Promise {\r\n if (this.agentConfig && !this.agentConfigSent) {\r\n\r\n if (this.privRecognizerConfig\r\n .parameters\r\n .getProperty(PropertyId.Conversation_DialogType) === DialogServiceConfig.DialogTypes.CustomCommands) {\r\n const config = this.agentConfig.get();\r\n config.botInfo.commandsCulture = this.privRecognizerConfig.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage, \"en-us\");\r\n this.agentConfig.set(config);\r\n }\r\n this.onEvent(new SendingAgentContextMessageEvent(this.agentConfig));\r\n\r\n const agentConfigJson = this.agentConfig.toJsonString();\r\n\r\n // guard against sending this multiple times on one connection\r\n this.agentConfigSent = true;\r\n\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"agent.config\",\r\n this.privRequestSession.requestId,\r\n \"application/json\",\r\n agentConfigJson));\r\n }\r\n\r\n return;\r\n }\r\n\r\n private sendAgentContext(connection: IConnection): Promise {\r\n const guid: string = createGuid();\r\n\r\n const speechActivityTemplate = this.privDialogServiceConnector.properties.getProperty(PropertyId.Conversation_Speech_Activity_Template);\r\n\r\n const agentContext: any = {\r\n channelData: \"\",\r\n context: {\r\n interactionId: guid\r\n },\r\n messagePayload: typeof speechActivityTemplate === undefined ? undefined : speechActivityTemplate,\r\n version: 0.5\r\n };\r\n\r\n const agentContextJson = JSON.stringify(agentContext);\r\n\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"speech.agent.context\",\r\n this.privRequestSession.requestId,\r\n \"application/json\",\r\n agentContextJson));\r\n }\r\n\r\n private fireEventForResult(serviceResult: SimpleSpeechPhrase, properties: PropertyCollection): SpeechRecognitionEventArgs {\r\n const resultReason: ResultReason = EnumTranslation.implTranslateRecognitionResult(serviceResult.RecognitionStatus);\r\n\r\n const offset: number = serviceResult.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n\r\n const result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n resultReason,\r\n serviceResult.DisplayText,\r\n serviceResult.Duration,\r\n offset,\r\n serviceResult.Language,\r\n serviceResult.LanguageDetectionConfidence,\r\n undefined,\r\n undefined,\r\n JSON.stringify(serviceResult),\r\n properties);\r\n\r\n const ev = new SpeechRecognitionEventArgs(result, offset, this.privRequestSession.sessionId);\r\n return ev;\r\n }\r\n\r\n private handleResponseMessage(responseMessage: SpeechConnectionMessage): void {\r\n // \"response\" messages can contain either \"message\" (activity) or \"MessageStatus\" data. Fire the appropriate\r\n // event according to the message type that's specified.\r\n const responsePayload: { messageType: string } = JSON.parse(responseMessage.textBody) as { messageType: string };\r\n switch (responsePayload.messageType.toLowerCase()) {\r\n case \"message\":\r\n const responseRequestId = responseMessage.requestId.toUpperCase();\r\n const activityPayload: ActivityPayloadResponse = ActivityPayloadResponse.fromJSON(responseMessage.textBody);\r\n const turn = this.privTurnStateManager.GetTurn(responseRequestId);\r\n\r\n // update the conversation Id\r\n if (activityPayload.conversationId) {\r\n const updateAgentConfig = this.agentConfig.get();\r\n updateAgentConfig.botInfo.conversationId = activityPayload.conversationId;\r\n this.agentConfig.set(updateAgentConfig);\r\n }\r\n\r\n const pullAudioOutputStream: PullAudioOutputStreamImpl = turn.processActivityPayload(\r\n activityPayload,\r\n AudioOutputFormatImpl.fromSpeechSynthesisOutputFormatString(this.privDialogServiceConnector.properties.getProperty(PropertyId.SpeechServiceConnection_SynthOutputFormat, undefined)));\r\n const activity = new ActivityReceivedEventArgs(activityPayload.messagePayload, pullAudioOutputStream);\r\n if (!!this.privDialogServiceConnector.activityReceived) {\r\n try {\r\n this.privDialogServiceConnector.activityReceived(this.privDialogServiceConnector, activity);\r\n /* eslint-disable-next-line no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n break;\r\n\r\n case \"messagestatus\":\r\n if (!!this.privDialogServiceConnector.turnStatusReceived) {\r\n try {\r\n this.privDialogServiceConnector.turnStatusReceived(\r\n this.privDialogServiceConnector,\r\n new TurnStatusReceivedEventArgs(responseMessage.textBody));\r\n /* eslint-disable-next-line no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n break;\r\n\r\n default:\r\n Events.instance.onEvent(\r\n new BackgroundEvent(`Unexpected response of type ${responsePayload.messageType}. Ignoring.`));\r\n break;\r\n }\r\n }\r\n\r\n private onEvent(event: DialogEvent): void {\r\n this.privEvents.onEvent(event);\r\n Events.instance.onEvent(event);\r\n }\r\n\r\n private addKeywordContextData(): void {\r\n const keywordPropertyValue: string = this.privRecognizerConfig.parameters.getProperty(\"SPEECH-KeywordsToDetect\");\r\n if (keywordPropertyValue === undefined) {\r\n return;\r\n }\r\n\r\n const keywordOffsetPropertyValue: string = this.privRecognizerConfig.parameters\r\n .getProperty(\"SPEECH-KeywordsToDetect-Offsets\");\r\n const keywordDurationPropertyValue: string = this.privRecognizerConfig.parameters\r\n .getProperty(\"SPEECH-KeywordsToDetect-Durations\");\r\n\r\n const keywords = keywordPropertyValue.split(\";\");\r\n const keywordOffsets = keywordOffsetPropertyValue === undefined ? [] : keywordOffsetPropertyValue.split(\";\");\r\n const keywordDurations = keywordDurationPropertyValue === undefined ? [] : keywordDurationPropertyValue.split(\";\");\r\n\r\n const keywordDefinitionArray = [];\r\n for (let i = 0; i < keywords.length; i++) {\r\n const definition: { [section: string]: any } = {};\r\n definition.text = keywords[i];\r\n if (i < keywordOffsets.length) {\r\n definition.offset = Number(keywordOffsets[i]);\r\n }\r\n if (i < keywordDurations.length) {\r\n definition.duration = Number(keywordDurations[i]);\r\n }\r\n keywordDefinitionArray.push(definition);\r\n }\r\n\r\n this.speechContext.setSection(\"invocationSource\", \"VoiceActivationWithKeyword\");\r\n this.speechContext.setSection(\"keywordDetection\", [{\r\n clientDetectedKeywords: keywordDefinitionArray,\r\n onReject: { action: \"EndOfTurn\" },\r\n type: \"startTrigger\"\r\n }]);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { AudioOutputFormatImpl } from \"../sdk/Audio/AudioOutputFormat.js\";\r\nimport { AudioOutputStream, PullAudioOutputStreamImpl } from \"../sdk/Audio/AudioOutputStream.js\";\r\nimport { DialogServiceTurnStateManager } from \"./DialogServiceTurnStateManager.js\";\r\nimport { ActivityPayloadResponse, MessageDataStreamType } from \"./ServiceMessages/ActivityResponsePayload.js\";\r\n\r\nexport class DialogServiceTurnState {\r\n private privRequestId: string;\r\n private privIsCompleted: boolean;\r\n private privAudioStream: PullAudioOutputStreamImpl;\r\n private privTimeoutToken: any;\r\n private privTurnManager: DialogServiceTurnStateManager;\r\n\r\n public constructor(manager: DialogServiceTurnStateManager, requestId: string) {\r\n this.privRequestId = requestId;\r\n this.privIsCompleted = false;\r\n this.privAudioStream = null;\r\n this.privTurnManager = manager;\r\n this.resetTurnEndTimeout();\r\n }\r\n\r\n public get audioStream(): PullAudioOutputStreamImpl {\r\n // Called when is needed to stream.\r\n this.resetTurnEndTimeout();\r\n return this.privAudioStream;\r\n }\r\n\r\n public processActivityPayload(payload: ActivityPayloadResponse, audioFormat?: AudioOutputFormatImpl): PullAudioOutputStreamImpl {\r\n if (payload.messageDataStreamType === MessageDataStreamType.TextToSpeechAudio) {\r\n this.privAudioStream = AudioOutputStream.createPullStream() as PullAudioOutputStreamImpl;\r\n this.privAudioStream.format = (audioFormat !== undefined) ? audioFormat : AudioOutputFormatImpl.getDefaultOutputFormat();\r\n }\r\n return this.privAudioStream;\r\n }\r\n\r\n public endAudioStream(): void {\r\n if (this.privAudioStream !== null && !this.privAudioStream.isClosed) {\r\n this.privAudioStream.close();\r\n }\r\n }\r\n\r\n public complete(): void {\r\n if (this.privTimeoutToken !== undefined) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n clearTimeout(this.privTimeoutToken);\r\n }\r\n this.endAudioStream();\r\n }\r\n\r\n private resetTurnEndTimeout(): void {\r\n if (this.privTimeoutToken !== undefined) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n clearTimeout(this.privTimeoutToken);\r\n }\r\n this.privTimeoutToken = setTimeout((): void => {\r\n this.privTurnManager.CompleteTurn(this.privRequestId);\r\n return;\r\n }, 2000);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { InvalidOperationError } from \"../common/Error.js\";\r\nimport { DialogServiceTurnState } from \"./DialogServiceTurnState.js\";\r\n\r\nexport class DialogServiceTurnStateManager {\r\n private privTurnMap: Map;\r\n\r\n public constructor() {\r\n this.privTurnMap = new Map();\r\n return;\r\n }\r\n\r\n public StartTurn(id: string): DialogServiceTurnState {\r\n if (this.privTurnMap.has(id)) {\r\n throw new InvalidOperationError(\"Service error: There is already a turn with id:\" + id);\r\n }\r\n const turnState: DialogServiceTurnState = new DialogServiceTurnState(this, id);\r\n this.privTurnMap.set(id, turnState);\r\n return this.privTurnMap.get(id);\r\n }\r\n\r\n public GetTurn(id: string): DialogServiceTurnState {\r\n return this.privTurnMap.get(id);\r\n }\r\n\r\n public CompleteTurn(id: string): DialogServiceTurnState {\r\n if (!this.privTurnMap.has(id)) {\r\n throw new InvalidOperationError(\"Service error: Received turn end for an unknown turn id:\" + id);\r\n }\r\n const turnState = this.privTurnMap.get(id);\r\n turnState.complete();\r\n this.privTurnMap.delete(id);\r\n return turnState;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n IDynamicGrammar,\r\n IDynamicGrammarGeneric,\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Responsible for building the object to be sent to the speech service to support dynamic grammars.\r\n * @class DynamicGrammarBuilder\r\n */\r\nexport class DynamicGrammarBuilder {\r\n\r\n private privPhrases: string[];\r\n private privGrammars: string[];\r\n\r\n // Adds one more reference phrases to the dynamic grammar to send.\r\n // All added phrases are generic phrases.\r\n public addPhrase(phrase: string | string[]): void {\r\n if (!this.privPhrases) {\r\n this.privPhrases = [];\r\n }\r\n\r\n if (phrase instanceof Array) {\r\n this.privPhrases = this.privPhrases.concat(phrase);\r\n } else {\r\n this.privPhrases.push(phrase);\r\n }\r\n }\r\n\r\n // Clears all phrases stored in the current object.\r\n public clearPhrases(): void {\r\n this.privPhrases = undefined;\r\n }\r\n\r\n // Adds one or more reference grammars to the current grammar.\r\n public addReferenceGrammar(grammar: string | string[]): void {\r\n if (!this.privGrammars) {\r\n this.privGrammars = [];\r\n }\r\n\r\n if (grammar instanceof Array) {\r\n this.privGrammars = this.privGrammars.concat(grammar);\r\n } else {\r\n this.privGrammars.push(grammar);\r\n }\r\n }\r\n\r\n // clears all grammars stored on the recognizer.\r\n public clearGrammars(): void {\r\n this.privGrammars = undefined;\r\n }\r\n\r\n // Generates an object that represents the dynamic grammar used by the Speech Service.\r\n // This is done by building an object with the correct layout based on the phrases and reference grammars added to this instance\r\n // of a DynamicGrammarBuilder\r\n public generateGrammarObject(): IDynamicGrammar {\r\n if (this.privGrammars === undefined && this.privPhrases === undefined) {\r\n return undefined;\r\n }\r\n\r\n const retObj: IDynamicGrammar = {};\r\n retObj.ReferenceGrammars = this.privGrammars;\r\n\r\n if (undefined !== this.privPhrases && 0 !== this.privPhrases.length) {\r\n const retPhrases: IDynamicGrammarGeneric[] = [];\r\n\r\n this.privPhrases.forEach((value: string): void => {\r\n retPhrases.push({\r\n Text: value,\r\n });\r\n });\r\n\r\n retObj.Groups = [{ Type: \"Generic\", Items: retPhrases }];\r\n }\r\n\r\n return retObj;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n ResultReason\r\n} from \"../sdk/Exports.js\";\r\nimport { RecognitionStatus } from \"./Exports.js\";\r\n\r\nexport class EnumTranslation {\r\n public static implTranslateRecognitionResult(recognitionStatus: RecognitionStatus, expectEndOfDictation: boolean = false): ResultReason {\r\n let reason = ResultReason.Canceled;\r\n switch (recognitionStatus) {\r\n case RecognitionStatus.Success:\r\n reason = ResultReason.RecognizedSpeech;\r\n break;\r\n case RecognitionStatus.EndOfDictation:\r\n // If we need the result in EndOfDictation (typically some session level result),\r\n // translate into RecognizedSpeech, otherwise NoMatch\r\n reason = expectEndOfDictation ? ResultReason.RecognizedSpeech : ResultReason.NoMatch;\r\n break;\r\n case RecognitionStatus.NoMatch:\r\n case RecognitionStatus.InitialSilenceTimeout:\r\n case RecognitionStatus.BabbleTimeout:\r\n reason = ResultReason.NoMatch;\r\n break;\r\n case RecognitionStatus.Error:\r\n case RecognitionStatus.BadRequest:\r\n case RecognitionStatus.Forbidden:\r\n default:\r\n reason = ResultReason.Canceled;\r\n break;\r\n }\r\n return reason;\r\n }\r\n\r\n public static implTranslateCancelResult(recognitionStatus: RecognitionStatus): CancellationReason {\r\n let reason = CancellationReason.EndOfStream;\r\n switch (recognitionStatus) {\r\n case RecognitionStatus.Success:\r\n case RecognitionStatus.EndOfDictation:\r\n case RecognitionStatus.NoMatch:\r\n reason = CancellationReason.EndOfStream;\r\n break;\r\n case RecognitionStatus.InitialSilenceTimeout:\r\n case RecognitionStatus.BabbleTimeout:\r\n case RecognitionStatus.Error:\r\n case RecognitionStatus.BadRequest:\r\n case RecognitionStatus.Forbidden:\r\n default:\r\n reason = CancellationReason.Error;\r\n break;\r\n }\r\n return reason;\r\n }\r\n\r\n public static implTranslateCancelErrorCode(recognitionStatus: RecognitionStatus): CancellationErrorCode {\r\n let reason: CancellationErrorCode = CancellationErrorCode.NoError;\r\n switch (recognitionStatus) {\r\n case RecognitionStatus.Error:\r\n reason = CancellationErrorCode.ServiceError;\r\n break;\r\n case RecognitionStatus.TooManyRequests:\r\n reason = CancellationErrorCode.TooManyRequests;\r\n break;\r\n case RecognitionStatus.BadRequest:\r\n reason = CancellationErrorCode.BadRequestParameters;\r\n break;\r\n case RecognitionStatus.Forbidden:\r\n reason = CancellationErrorCode.Forbidden;\r\n break;\r\n default:\r\n reason = CancellationErrorCode.NoError;\r\n break;\r\n }\r\n\r\n return reason;\r\n\r\n }\r\n\r\n public static implTranslateErrorDetails(cancellationErrorCode: CancellationErrorCode): string {\r\n let errorDetails: string = \"The speech service encountered an internal error and could not continue.\";\r\n switch (cancellationErrorCode) {\r\n case CancellationErrorCode.Forbidden:\r\n errorDetails = \"The recognizer is using a free subscription that ran out of quota.\";\r\n break;\r\n case CancellationErrorCode.BadRequestParameters:\r\n errorDetails = \"Invalid parameter or unsupported audio format in the request.\";\r\n break;\r\n case CancellationErrorCode.TooManyRequests:\r\n errorDetails = \"The number of parallel requests exceeded the number of allowed concurrent transcriptions.\";\r\n break;\r\n default:\r\n break;\r\n }\r\n return errorDetails;\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n// Make sure not to export internal modules.\r\n//\r\nexport * from \"./CognitiveSubscriptionKeyAuthentication.js\";\r\nexport * from \"./CognitiveTokenAuthentication.js\";\r\nexport * from \"./IAuthentication.js\";\r\nexport * from \"./IConnectionFactory.js\";\r\nexport * from \"./ISynthesisConnectionFactory.js\";\r\nexport * from \"./IntentConnectionFactory.js\";\r\nexport * from \"./SpeakerRecognitionConnectionFactory.js\";\r\nexport * from \"./RecognitionEvents.js\";\r\nexport * from \"./ServiceRecognizerBase.js\";\r\nexport * from \"./ConversationServiceRecognizer.js\";\r\nexport * from \"./RecognizerConfig.js\";\r\nexport * from \"./SpeechServiceInterfaces.js\";\r\nexport * from \"./WebsocketMessageFormatter.js\";\r\nexport * from \"./SpeechConnectionFactory.js\";\r\nexport * from \"./ConversationTranscriberConnectionFactory.js\";\r\nexport * from \"./TranscriberConnectionFactory.js\";\r\nexport * from \"./TranslationConnectionFactory.js\";\r\nexport * from \"./SpeechSynthesisConnectionFactory.js\";\r\nexport * from \"./EnumTranslation.js\";\r\nexport * from \"./ServiceMessages/Enums.js\";\r\nexport * from \"./ServiceMessages/TranslationSynthesisEnd.js\";\r\nexport * from \"./ServiceMessages/TranslationHypothesis.js\";\r\nexport * from \"./ServiceMessages/TranslationPhrase.js\";\r\nexport * from \"./TranslationServiceRecognizer.js\";\r\nexport * from \"./ServiceMessages/SpeechDetected.js\";\r\nexport * from \"./ServiceMessages/SpeechHypothesis.js\";\r\nexport * from \"./ServiceMessages/SpeechKeyword.js\";\r\nexport * from \"./SpeechServiceRecognizer.js\";\r\nexport * from \"./ConversationTranscriptionServiceRecognizer.js\";\r\nexport * from \"./TranscriptionServiceRecognizer.js\";\r\nexport * from \"./ServiceMessages/DetailedSpeechPhrase.js\";\r\nexport * from \"./ServiceMessages/SimpleSpeechPhrase.js\";\r\nexport * from \"./AddedLmIntent.js\";\r\nexport * from \"./IntentServiceRecognizer.js\";\r\nexport * from \"./ServiceMessages/IntentResponse.js\";\r\nexport * from \"./ServiceMessages/SpeakerResponse.js\";\r\nexport * from \"./RequestSession.js\";\r\nexport * from \"./SpeechContext.js\";\r\nexport * from \"./DynamicGrammarBuilder.js\";\r\nexport * from \"./DynamicGrammarInterfaces.js\";\r\nexport * from \"./DialogServiceAdapter.js\";\r\nexport * from \"./AgentConfig.js\";\r\nexport * from \"./Transcription/Exports.js\";\r\nexport * from \"./ServiceMessages/SynthesisAudioMetadata.js\";\r\nexport * from \"./SynthesisTurn.js\";\r\nexport * from \"./SynthesisAdapterBase.js\";\r\nexport { AvatarSynthesisAdapter } from \"./AvatarSynthesisAdapter.js\";\r\nexport { SpeechSynthesisAdapter } from \"./SpeechSynthesisAdapter.js\";\r\nexport * from \"./SynthesisRestAdapter.js\";\r\nexport * from \"./SynthesizerConfig.js\";\r\nexport * from \"./SynthesisContext.js\";\r\nexport * from \"./SpeakerRecognitionConfig.js\";\r\nexport * from \"./SpeakerServiceRecognizer.js\";\r\nexport * from \"./VoiceServiceRecognizer.js\";\r\nexport * from \"./SpeechServiceConfig.js\";\r\n\r\nexport const OutputFormatPropertyName: string = \"OutputFormat\";\r\nexport const CancellationErrorCodePropertyName: string = \"CancellationErrorCode\";\r\nexport const ServicePropertiesPropertyName: string = \"ServiceProperties\";\r\nexport const ForceDictationPropertyName: string = \"ForceDictation\";\r\nexport const AutoDetectSourceLanguagesOpenRangeOptionName: string = \"OpenRange\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport class HeaderNames {\r\n public static AuthKey: string = \"Ocp-Apim-Subscription-Key\";\r\n public static Authorization: string = \"Authorization\";\r\n public static SpIDAuthKey: string = \"Apim-Subscription-Id\";\r\n public static ConnectionId: string = \"X-ConnectionId\";\r\n public static ContentType: string = \"Content-Type\";\r\n public static CustomCommandsAppId: string = \"X-CommandsAppId\";\r\n public static Path: string = \"Path\";\r\n public static RequestId: string = \"X-RequestId\";\r\n public static RequestStreamId: string = \"X-StreamId\";\r\n public static RequestTimestamp: string = \"X-Timestamp\";\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport interface IAuthentication {\r\n fetch(authFetchEventId: string): Promise;\r\n fetchOnExpiry(authFetchEventId: string): Promise;\r\n}\r\n\r\nexport class AuthInfo {\r\n private privHeaderName: string;\r\n private privToken: string;\r\n\r\n public constructor(headerName: string, token: string) {\r\n this.privHeaderName = headerName;\r\n this.privToken = token;\r\n }\r\n\r\n public get headerName(): string {\r\n return this.privHeaderName;\r\n }\r\n\r\n public get token(): string {\r\n return this.privToken;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ProxyInfo,\r\n WebsocketConnection,\r\n} from \"../common.browser/Exports.js\";\r\nimport {\r\n IConnection,\r\n IStringDictionary\r\n} from \"../common/Exports.js\";\r\nimport {\r\n PropertyId\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n ConnectionFactoryBase\r\n} from \"./ConnectionFactoryBase.js\";\r\nimport {\r\n AuthInfo,\r\n RecognizerConfig,\r\n WebsocketMessageFormatter,\r\n} from \"./Exports.js\";\r\nimport { HeaderNames } from \"./HeaderNames.js\";\r\n\r\nexport class IntentConnectionFactory extends ConnectionFactoryBase {\r\n\r\n public create(\r\n config: RecognizerConfig,\r\n authInfo: AuthInfo,\r\n connectionId?: string): IConnection {\r\n\r\n let endpoint: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint);\r\n if (!endpoint) {\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_IntentRegion);\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n const host: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Host, \"wss://\" + region + \".sr.speech\" + hostSuffix);\r\n endpoint = host + \"/speech/recognition/interactive/cognitiveservices/v1\";\r\n }\r\n\r\n const queryParams: IStringDictionary = {\r\n format: \"simple\",\r\n language: config.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage),\r\n };\r\n\r\n this.setCommonUrlParams(config, queryParams, endpoint);\r\n\r\n const headers: IStringDictionary = {};\r\n if (authInfo.token !== undefined && authInfo.token !== \"\") {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n headers[HeaderNames.ConnectionId] = connectionId;\r\n\r\n config.parameters.setProperty(PropertyId.SpeechServiceConnection_Url, endpoint);\r\n\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n return new WebsocketConnection(endpoint, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n }\r\n\r\n private getSpeechRegionFromIntentRegion(intentRegion: string): string {\r\n switch (intentRegion) {\r\n case \"West US\":\r\n case \"US West\":\r\n case \"westus\":\r\n return \"uswest\";\r\n case \"West US 2\":\r\n case \"US West 2\":\r\n case \"westus2\":\r\n return \"uswest2\";\r\n case \"South Central US\":\r\n case \"US South Central\":\r\n case \"southcentralus\":\r\n return \"ussouthcentral\";\r\n case \"West Central US\":\r\n case \"US West Central\":\r\n case \"westcentralus\":\r\n return \"uswestcentral\";\r\n case \"East US\":\r\n case \"US East\":\r\n case \"eastus\":\r\n return \"useast\";\r\n case \"East US 2\":\r\n case \"US East 2\":\r\n case \"eastus2\":\r\n return \"useast2\";\r\n case \"West Europe\":\r\n case \"Europe West\":\r\n case \"westeurope\":\r\n return \"europewest\";\r\n case \"North Europe\":\r\n case \"Europe North\":\r\n case \"northeurope\":\r\n return \"europenorth\";\r\n case \"Brazil South\":\r\n case \"South Brazil\":\r\n case \"southbrazil\":\r\n return \"brazilsouth\";\r\n case \"Australia East\":\r\n case \"East Australia\":\r\n case \"eastaustralia\":\r\n return \"australiaeast\";\r\n case \"Southeast Asia\":\r\n case \"Asia Southeast\":\r\n case \"southeastasia\":\r\n return \"asiasoutheast\";\r\n case \"East Asia\":\r\n case \"Asia East\":\r\n case \"eastasia\":\r\n return \"asiaeast\";\r\n default:\r\n return intentRegion;\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n Deferred,\r\n IAudioSource,\r\n MessageType,\r\n} from \"../common/Exports.js\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n IntentRecognitionCanceledEventArgs,\r\n IntentRecognitionEventArgs,\r\n IntentRecognitionResult,\r\n IntentRecognizer,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n AddedLmIntent,\r\n CancellationErrorCodePropertyName,\r\n EnumTranslation,\r\n IntentResponse,\r\n ServiceRecognizerBase,\r\n SimpleSpeechPhrase,\r\n SpeechHypothesis,\r\n} from \"./Exports.js\";\r\nimport { IAuthentication } from \"./IAuthentication.js\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory.js\";\r\nimport { RecognizerConfig } from \"./RecognizerConfig.js\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal.js\";\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class IntentServiceRecognizer extends ServiceRecognizerBase {\r\n private privIntentRecognizer: IntentRecognizer;\r\n private privAddedLmIntents: { [id: string]: AddedLmIntent };\r\n private privIntentDataSent: boolean;\r\n private privUmbrellaIntent: AddedLmIntent;\r\n private privPendingIntentArgs: IntentRecognitionEventArgs;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n recognizer: IntentRecognizer) {\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, recognizer);\r\n this.privIntentRecognizer = recognizer;\r\n this.privIntentDataSent = false;\r\n }\r\n\r\n public setIntents(addedIntents: { [id: string]: AddedLmIntent }, umbrellaIntent: AddedLmIntent): void {\r\n this.privAddedLmIntents = addedIntents;\r\n this.privUmbrellaIntent = umbrellaIntent;\r\n this.privIntentDataSent = true;\r\n }\r\n\r\n protected processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n\r\n let result: IntentRecognitionResult;\r\n let ev: IntentRecognitionEventArgs;\r\n let processed: boolean = false;\r\n\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n if (connectionMessage.messageType === MessageType.Text) {\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, connectionMessage.textBody);\r\n }\r\n\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"speech.hypothesis\":\r\n const speechHypothesis: SpeechHypothesis = SpeechHypothesis.fromJSON(connectionMessage.textBody);\r\n\r\n result = new IntentRecognitionResult(\r\n undefined,\r\n this.privRequestSession.requestId,\r\n ResultReason.RecognizingIntent,\r\n speechHypothesis.Text,\r\n speechHypothesis.Duration,\r\n speechHypothesis.Offset + this.privRequestSession.currentTurnAudioOffset,\r\n speechHypothesis.Language,\r\n speechHypothesis.LanguageDetectionConfidence,\r\n undefined,\r\n connectionMessage.textBody,\r\n resultProps);\r\n\r\n this.privRequestSession.onHypothesis(result.offset);\r\n\r\n ev = new IntentRecognitionEventArgs(result, speechHypothesis.Offset + this.privRequestSession.currentTurnAudioOffset, this.privRequestSession.sessionId);\r\n\r\n if (!!this.privIntentRecognizer.recognizing) {\r\n try {\r\n this.privIntentRecognizer.recognizing(this.privIntentRecognizer, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n processed = true;\r\n break;\r\n case \"speech.phrase\":\r\n const simple: SimpleSpeechPhrase = SimpleSpeechPhrase.fromJSON(connectionMessage.textBody);\r\n result = new IntentRecognitionResult(\r\n undefined,\r\n this.privRequestSession.requestId,\r\n EnumTranslation.implTranslateRecognitionResult(simple.RecognitionStatus),\r\n simple.DisplayText,\r\n simple.Duration,\r\n simple.Offset + this.privRequestSession.currentTurnAudioOffset,\r\n simple.Language,\r\n simple.LanguageDetectionConfidence,\r\n undefined,\r\n connectionMessage.textBody,\r\n resultProps);\r\n\r\n ev = new IntentRecognitionEventArgs(result, result.offset, this.privRequestSession.sessionId);\r\n\r\n const sendEvent: () => void = (): void => {\r\n if (!!this.privIntentRecognizer.recognized) {\r\n try {\r\n this.privIntentRecognizer.recognized(this.privIntentRecognizer, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n // report result to promise.\r\n if (!!this.privSuccessCallback) {\r\n try {\r\n this.privSuccessCallback(result);\r\n } catch (e) {\r\n if (!!this.privErrorCallback) {\r\n this.privErrorCallback(e as string);\r\n }\r\n }\r\n // Only invoke the call back once.\r\n // and if it's successful don't invoke the\r\n // error after that.\r\n this.privSuccessCallback = undefined;\r\n this.privErrorCallback = undefined;\r\n }\r\n };\r\n\r\n // If intent data was sent, the terminal result for this recognizer is an intent being found.\r\n // If no intent data was sent, the terminal event is speech recognition being successful.\r\n if (false === this.privIntentDataSent || ResultReason.NoMatch === ev.result.reason) {\r\n // Advance the buffers.\r\n this.privRequestSession.onPhraseRecognized(ev.offset + ev.result.duration);\r\n sendEvent();\r\n } else {\r\n // Squirrel away the args, when the response event arrives it will build upon them\r\n // and then return\r\n this.privPendingIntentArgs = ev;\r\n }\r\n processed = true;\r\n break;\r\n case \"response\":\r\n // Response from LUIS\r\n ev = this.privPendingIntentArgs;\r\n this.privPendingIntentArgs = undefined;\r\n\r\n if (undefined === ev) {\r\n if (\"\" === connectionMessage.textBody) {\r\n // This condition happens if there is nothing but silence in the\r\n // audio sent to the service.\r\n return;\r\n }\r\n\r\n // Odd... Not sure this can happen\r\n ev = new IntentRecognitionEventArgs(new IntentRecognitionResult(), 0, this.privRequestSession.sessionId);\r\n }\r\n\r\n const intentResponse: IntentResponse = IntentResponse.fromJSON(connectionMessage.textBody);\r\n\r\n // If LUIS didn't return anything, send the existing event, else\r\n // modify it to show the match.\r\n // See if the intent found is in the list of intents asked for.\r\n\r\n if (null !== intentResponse && !!intentResponse.topScoringIntent && !!intentResponse.topScoringIntent.intent) {\r\n let addedIntent: AddedLmIntent = this.privAddedLmIntents[intentResponse.topScoringIntent.intent];\r\n\r\n if (this.privUmbrellaIntent !== undefined) {\r\n addedIntent = this.privUmbrellaIntent;\r\n }\r\n\r\n if (!!addedIntent) {\r\n const intentId = addedIntent === undefined || addedIntent.intentName === undefined ? intentResponse.topScoringIntent.intent : addedIntent.intentName;\r\n let reason = ev.result.reason;\r\n\r\n if (undefined !== intentId) {\r\n reason = ResultReason.RecognizedIntent;\r\n }\r\n\r\n // make sure, properties is set.\r\n const properties = (undefined !== ev.result.properties) ?\r\n ev.result.properties : new PropertyCollection();\r\n\r\n properties.setProperty(PropertyId.LanguageUnderstandingServiceResponse_JsonResult, connectionMessage.textBody);\r\n\r\n ev = new IntentRecognitionEventArgs(\r\n new IntentRecognitionResult(\r\n intentId,\r\n ev.result.resultId,\r\n reason,\r\n ev.result.text,\r\n ev.result.duration,\r\n ev.result.offset,\r\n undefined,\r\n undefined,\r\n ev.result.errorDetails,\r\n ev.result.json,\r\n properties),\r\n ev.offset,\r\n ev.sessionId);\r\n\r\n }\r\n }\r\n this.privRequestSession.onPhraseRecognized(ev.offset + ev.result.duration);\r\n\r\n if (!!this.privIntentRecognizer.recognized) {\r\n try {\r\n this.privIntentRecognizer.recognized(this.privIntentRecognizer, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n // report result to promise.\r\n if (!!this.privSuccessCallback) {\r\n try {\r\n this.privSuccessCallback(ev.result);\r\n } catch (e) {\r\n if (!!this.privErrorCallback) {\r\n this.privErrorCallback(e as string);\r\n }\r\n }\r\n // Only invoke the call back once.\r\n // and if it's successful don't invoke the\r\n // error after that.\r\n this.privSuccessCallback = undefined;\r\n this.privErrorCallback = undefined;\r\n }\r\n processed = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n const defferal = new Deferred();\r\n defferal.resolve(processed);\r\n return defferal.promise;\r\n }\r\n\r\n // Cancels recognition.\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n const properties: PropertyCollection = new PropertyCollection();\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n\r\n if (!!this.privIntentRecognizer.canceled) {\r\n\r\n const cancelEvent: IntentRecognitionCanceledEventArgs = new IntentRecognitionCanceledEventArgs(\r\n cancellationReason,\r\n error,\r\n errorCode,\r\n undefined,\r\n undefined,\r\n sessionId);\r\n try {\r\n this.privIntentRecognizer.canceled(this.privIntentRecognizer, cancelEvent);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n\r\n if (!!this.privSuccessCallback) {\r\n const result: IntentRecognitionResult = new IntentRecognitionResult(\r\n undefined, // Intent Id\r\n requestId,\r\n ResultReason.Canceled,\r\n undefined, // Text\r\n undefined, // Duration\r\n undefined, // Offset\r\n undefined, // Language\r\n undefined, // LanguageDetectionConfidence\r\n error,\r\n undefined, // Json\r\n properties);\r\n try {\r\n this.privSuccessCallback(result);\r\n this.privSuccessCallback = undefined;\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport class QueryParameterNames {\r\n public static BotId: string = \"botid\";\r\n public static CustomSpeechDeploymentId: string = \"cid\";\r\n public static CustomVoiceDeploymentId: string = \"deploymentId\";\r\n public static EnableAudioLogging: string = \"storeAudio\";\r\n public static EnableLanguageId: string = \"lidEnabled\";\r\n public static EnableWordLevelTimestamps: string = \"wordLevelTimestamps\";\r\n public static EndSilenceTimeoutMs: string = \"endSilenceTimeoutMs\";\r\n public static SegmentationSilenceTimeoutMs: string = \"segmentationSilenceTimeoutMs\";\r\n public static Format: string = \"format\";\r\n public static InitialSilenceTimeoutMs: string = \"initialSilenceTimeoutMs\";\r\n public static Language: string = \"language\";\r\n public static Profanity: string = \"profanity\";\r\n public static RequestBotStatusMessages: string = \"enableBotMessageStatus\";\r\n public static StableIntermediateThreshold: string = \"stableIntermediateThreshold\";\r\n public static StableTranslation: string = \"stableTranslation\";\r\n public static TestHooks: string = \"testhooks\";\r\n public static Postprocessing: string = \"postprocessing\";\r\n public static CtsMeetingId: string = \"meetingId\";\r\n public static CtsDeviceId: string = \"deviceId\";\r\n public static CtsIsParticipant: string = \"isParticipant\";\r\n public static EnableAvatar: string = \"enableTalkingAvatar\";\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport { EventType, PlatformEvent } from \"../common/Exports.js\";\r\n\r\nexport class SpeechRecognitionEvent extends PlatformEvent {\r\n private privRequestId: string;\r\n private privSessionId: string;\r\n\r\n public constructor(eventName: string, requestId: string, sessionId: string, eventType: EventType = EventType.Info) {\r\n super(eventName, eventType);\r\n\r\n this.privRequestId = requestId;\r\n this.privSessionId = sessionId;\r\n }\r\n\r\n public get requestId(): string {\r\n return this.privRequestId;\r\n }\r\n\r\n public get sessionId(): string {\r\n return this.privSessionId;\r\n }\r\n}\r\n\r\nexport class RecognitionTriggeredEvent extends SpeechRecognitionEvent {\r\n private privAudioSourceId: string;\r\n private privAudioNodeId: string;\r\n\r\n public constructor(requestId: string, sessionId: string, audioSourceId: string, audioNodeId: string) {\r\n super(\"RecognitionTriggeredEvent\", requestId, sessionId);\r\n\r\n this.privAudioSourceId = audioSourceId;\r\n this.privAudioNodeId = audioNodeId;\r\n }\r\n\r\n public get audioSourceId(): string {\r\n return this.privAudioSourceId;\r\n }\r\n\r\n public get audioNodeId(): string {\r\n return this.privAudioNodeId;\r\n }\r\n}\r\n\r\nexport class ListeningStartedEvent extends SpeechRecognitionEvent {\r\n private privAudioSourceId: string;\r\n private privAudioNodeId: string;\r\n\r\n public constructor(requestId: string, sessionId: string, audioSourceId: string, audioNodeId: string) {\r\n super(\"ListeningStartedEvent\", requestId, sessionId);\r\n this.privAudioSourceId = audioSourceId;\r\n this.privAudioNodeId = audioNodeId;\r\n }\r\n\r\n public get audioSourceId(): string {\r\n return this.privAudioSourceId;\r\n }\r\n\r\n public get audioNodeId(): string {\r\n return this.privAudioNodeId;\r\n }\r\n}\r\n\r\nexport class ConnectingToServiceEvent extends SpeechRecognitionEvent {\r\n private privAuthFetchEventid: string;\r\n\r\n public constructor(requestId: string, authFetchEventid: string, sessionId: string) {\r\n super(\"ConnectingToServiceEvent\", requestId, sessionId);\r\n this.privAuthFetchEventid = authFetchEventid;\r\n }\r\n\r\n public get authFetchEventid(): string {\r\n return this.privAuthFetchEventid;\r\n }\r\n}\r\n\r\nexport class RecognitionStartedEvent extends SpeechRecognitionEvent {\r\n private privAudioSourceId: string;\r\n private privAudioNodeId: string;\r\n private privAuthFetchEventId: string;\r\n\r\n public constructor(requestId: string, audioSourceId: string, audioNodeId: string, authFetchEventId: string, sessionId: string) {\r\n super(\"RecognitionStartedEvent\", requestId, sessionId);\r\n\r\n this.privAudioSourceId = audioSourceId;\r\n this.privAudioNodeId = audioNodeId;\r\n this.privAuthFetchEventId = authFetchEventId;\r\n }\r\n\r\n public get audioSourceId(): string {\r\n return this.privAudioSourceId;\r\n }\r\n\r\n public get audioNodeId(): string {\r\n return this.privAudioNodeId;\r\n }\r\n\r\n public get authFetchEventId(): string {\r\n return this.privAuthFetchEventId;\r\n }\r\n}\r\n\r\nexport enum RecognitionCompletionStatus {\r\n Success,\r\n AudioSourceError,\r\n AudioSourceTimeout,\r\n AuthTokenFetchError,\r\n AuthTokenFetchTimeout,\r\n UnAuthorized,\r\n ConnectTimeout,\r\n ConnectError,\r\n ClientRecognitionActivityTimeout,\r\n UnknownError,\r\n}\r\n\r\nexport class RecognitionEndedEvent extends SpeechRecognitionEvent {\r\n private privAudioSourceId: string;\r\n private privAudioNodeId: string;\r\n private privAuthFetchEventId: string;\r\n private privServiceTag: string;\r\n private privStatus: RecognitionCompletionStatus;\r\n private privError: string;\r\n\r\n public constructor(\r\n requestId: string,\r\n audioSourceId: string,\r\n audioNodeId: string,\r\n authFetchEventId: string,\r\n sessionId: string,\r\n serviceTag: string,\r\n status: RecognitionCompletionStatus,\r\n error: string) {\r\n\r\n super(\"RecognitionEndedEvent\", requestId, sessionId, status === RecognitionCompletionStatus.Success ? EventType.Info : EventType.Error);\r\n\r\n this.privAudioSourceId = audioSourceId;\r\n this.privAudioNodeId = audioNodeId;\r\n this.privAuthFetchEventId = authFetchEventId;\r\n this.privStatus = status;\r\n this.privError = error;\r\n this.privServiceTag = serviceTag;\r\n }\r\n\r\n public get audioSourceId(): string {\r\n return this.privAudioSourceId;\r\n }\r\n\r\n public get audioNodeId(): string {\r\n return this.privAudioNodeId;\r\n }\r\n\r\n public get authFetchEventId(): string {\r\n return this.privAuthFetchEventId;\r\n }\r\n\r\n public get serviceTag(): string {\r\n return this.privServiceTag;\r\n }\r\n\r\n public get status(): RecognitionCompletionStatus {\r\n return this.privStatus;\r\n }\r\n\r\n public get error(): string {\r\n return this.privError;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport { PropertyCollection, PropertyId } from \"../sdk/Exports.js\";\r\nimport { Context, SpeechServiceConfig } from \"./Exports.js\";\r\n\r\nexport enum RecognitionMode {\r\n Interactive,\r\n Conversation,\r\n Dictation,\r\n}\r\n\r\nexport enum SpeechResultFormat {\r\n Simple,\r\n Detailed,\r\n}\r\n\r\nexport class RecognizerConfig {\r\n private privRecognitionMode: RecognitionMode;\r\n private privLanguageIdMode: string;\r\n private privSpeechServiceConfig: SpeechServiceConfig;\r\n private privRecognitionActivityTimeout: number;\r\n private privParameters: PropertyCollection;\r\n private privMaxRetryCount: number;\r\n private privEnableSpeakerId: boolean;\r\n\r\n public constructor(\r\n speechServiceConfig: SpeechServiceConfig,\r\n parameters: PropertyCollection) {\r\n this.privSpeechServiceConfig = speechServiceConfig ? speechServiceConfig : new SpeechServiceConfig(new Context(null));\r\n this.privParameters = parameters;\r\n this.privMaxRetryCount = parseInt(parameters.getProperty(\"SPEECH-Error-MaxRetryCount\", \"4\"), 10);\r\n this.privLanguageIdMode = parameters.getProperty(PropertyId.SpeechServiceConnection_LanguageIdMode, undefined);\r\n this.privEnableSpeakerId = false;\r\n }\r\n\r\n public get parameters(): PropertyCollection {\r\n return this.privParameters;\r\n }\r\n\r\n public get recognitionMode(): RecognitionMode {\r\n return this.privRecognitionMode;\r\n }\r\n\r\n public set recognitionMode(value: RecognitionMode) {\r\n this.privRecognitionMode = value;\r\n this.privRecognitionActivityTimeout = value === RecognitionMode.Interactive ? 8000 : 25000;\r\n this.privSpeechServiceConfig.Recognition = RecognitionMode[value];\r\n }\r\n\r\n public get SpeechServiceConfig(): SpeechServiceConfig {\r\n return this.privSpeechServiceConfig;\r\n }\r\n\r\n public get recognitionActivityTimeout(): number {\r\n return this.privRecognitionActivityTimeout;\r\n }\r\n\r\n public get isContinuousRecognition(): boolean {\r\n return this.privRecognitionMode !== RecognitionMode.Interactive;\r\n }\r\n\r\n public get languageIdMode(): string {\r\n return this.privLanguageIdMode;\r\n }\r\n\r\n public get autoDetectSourceLanguages(): string {\r\n return this.parameters.getProperty(PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages, undefined);\r\n }\r\n\r\n public get recognitionEndpointVersion(): string {\r\n return this.parameters.getProperty(PropertyId.SpeechServiceConnection_RecognitionEndpointVersion, undefined);\r\n }\r\n\r\n public get sourceLanguageModels(): { language: string; endpoint: string }[] {\r\n const models: { language: string; endpoint: string }[] = [];\r\n let modelsExist: boolean = false;\r\n if (this.autoDetectSourceLanguages !== undefined) {\r\n for (const language of this.autoDetectSourceLanguages.split(\",\")) {\r\n const customProperty = language + PropertyId.SpeechServiceConnection_EndpointId.toString();\r\n const modelId: string = this.parameters.getProperty(customProperty, undefined);\r\n if (modelId !== undefined) {\r\n models.push( { language, endpoint: modelId });\r\n modelsExist = true;\r\n } else {\r\n models.push( { language, endpoint: \"\" } );\r\n }\r\n }\r\n }\r\n return modelsExist ? models : undefined;\r\n }\r\n\r\n public get maxRetryCount(): number {\r\n return this.privMaxRetryCount;\r\n }\r\n\r\n public get isSpeakerDiarizationEnabled(): boolean {\r\n return this.privEnableSpeakerId;\r\n }\r\n\r\n public set isSpeakerDiarizationEnabled(value: boolean) {\r\n this.privEnableSpeakerId = value;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ReplayableAudioNode } from \"../common.browser/Exports.js\";\r\nimport {\r\n createNoDashGuid,\r\n Deferred,\r\n Events,\r\n IDetachable,\r\n IEventSource,\r\n PlatformEvent\r\n} from \"../common/Exports.js\";\r\nimport {\r\n ConnectingToServiceEvent,\r\n ListeningStartedEvent,\r\n RecognitionStartedEvent,\r\n RecognitionTriggeredEvent,\r\n SpeechRecognitionEvent,\r\n} from \"./RecognitionEvents.js\";\r\nimport { ServiceTelemetryListener } from \"./ServiceTelemetryListener.Internal.js\";\r\n\r\nexport class RequestSession {\r\n private privIsDisposed: boolean = false;\r\n private privServiceTelemetryListener: ServiceTelemetryListener;\r\n private privDetachables: IDetachable[] = new Array();\r\n private privRequestId: string;\r\n private privAudioSourceId: string;\r\n private privAudioNodeId: string;\r\n private privAudioNode: ReplayableAudioNode;\r\n private privAuthFetchEventId: string;\r\n private privIsAudioNodeDetached: boolean = false;\r\n private privIsRecognizing: boolean = false;\r\n private privIsSpeechEnded: boolean = false;\r\n private privTurnStartAudioOffset: number = 0;\r\n private privLastRecoOffset: number = 0;\r\n private privHypothesisReceived: boolean = false;\r\n private privBytesSent: number = 0;\r\n private privRecognitionBytesSent: number = 0;\r\n private privRecogNumber: number = 0;\r\n private privSessionId: string;\r\n private privTurnDeferral: Deferred;\r\n private privInTurn: boolean = false;\r\n private privConnectionAttempts: number = 0;\r\n\r\n public constructor(audioSourceId: string) {\r\n this.privAudioSourceId = audioSourceId;\r\n this.privRequestId = createNoDashGuid();\r\n this.privAudioNodeId = createNoDashGuid();\r\n this.privTurnDeferral = new Deferred();\r\n\r\n // We're not in a turn, so resolve.\r\n this.privTurnDeferral.resolve();\r\n }\r\n\r\n public get sessionId(): string {\r\n return this.privSessionId;\r\n }\r\n\r\n public get requestId(): string {\r\n return this.privRequestId;\r\n }\r\n\r\n public get audioNodeId(): string {\r\n return this.privAudioNodeId;\r\n }\r\n\r\n public get turnCompletionPromise(): Promise {\r\n return this.privTurnDeferral.promise;\r\n }\r\n\r\n public get isSpeechEnded(): boolean {\r\n return this.privIsSpeechEnded;\r\n }\r\n\r\n public get isRecognizing(): boolean {\r\n return this.privIsRecognizing;\r\n }\r\n\r\n public get currentTurnAudioOffset(): number {\r\n return this.privTurnStartAudioOffset;\r\n }\r\n\r\n public get recogNumber(): number {\r\n return this.privRecogNumber;\r\n }\r\n\r\n public get numConnectionAttempts(): number {\r\n return this.privConnectionAttempts;\r\n }\r\n\r\n // The number of bytes sent for the current connection.\r\n // Counter is reset to 0 each time a connection is established.\r\n public get bytesSent(): number {\r\n return this.privBytesSent;\r\n }\r\n\r\n // The number of bytes sent for the current recognition.\r\n // Counter is reset to 0 each time recognition is started.\r\n public get recognitionBytesSent(): number {\r\n return this.privRecognitionBytesSent;\r\n }\r\n\r\n public listenForServiceTelemetry(eventSource: IEventSource): void {\r\n if (!!this.privServiceTelemetryListener) {\r\n this.privDetachables.push(eventSource.attachListener(this.privServiceTelemetryListener));\r\n }\r\n }\r\n\r\n public startNewRecognition(): void {\r\n this.privRecognitionBytesSent = 0;\r\n this.privIsSpeechEnded = false;\r\n this.privIsRecognizing = true;\r\n this.privTurnStartAudioOffset = 0;\r\n this.privLastRecoOffset = 0;\r\n this.privRecogNumber++;\r\n this.privServiceTelemetryListener = new ServiceTelemetryListener(this.privRequestId, this.privAudioSourceId, this.privAudioNodeId);\r\n this.onEvent(new RecognitionTriggeredEvent(this.requestId, this.privSessionId, this.privAudioSourceId, this.privAudioNodeId));\r\n }\r\n\r\n public async onAudioSourceAttachCompleted(audioNode: ReplayableAudioNode, isError: boolean): Promise {\r\n this.privAudioNode = audioNode;\r\n this.privIsAudioNodeDetached = false;\r\n\r\n if (isError) {\r\n await this.onComplete();\r\n } else {\r\n this.onEvent(new ListeningStartedEvent(this.privRequestId, this.privSessionId, this.privAudioSourceId, this.privAudioNodeId));\r\n }\r\n }\r\n\r\n public onPreConnectionStart(authFetchEventId: string, connectionId: string): void {\r\n this.privAuthFetchEventId = authFetchEventId;\r\n this.privSessionId = connectionId;\r\n this.onEvent(new ConnectingToServiceEvent(this.privRequestId, this.privAuthFetchEventId, this.privSessionId));\r\n }\r\n\r\n public async onAuthCompleted(isError: boolean): Promise {\r\n if (isError) {\r\n await this.onComplete();\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public async onConnectionEstablishCompleted(statusCode: number, reason?: string): Promise {\r\n if (statusCode === 200) {\r\n this.onEvent(new RecognitionStartedEvent(this.requestId, this.privAudioSourceId, this.privAudioNodeId, this.privAuthFetchEventId, this.privSessionId));\r\n if (!!this.privAudioNode) {\r\n this.privAudioNode.replay();\r\n }\r\n this.privTurnStartAudioOffset = this.privLastRecoOffset;\r\n this.privBytesSent = 0;\r\n return;\r\n } else if (statusCode === 403) {\r\n await this.onComplete();\r\n }\r\n }\r\n\r\n public async onServiceTurnEndResponse(continuousRecognition: boolean): Promise {\r\n this.privTurnDeferral.resolve();\r\n\r\n if (!continuousRecognition || this.isSpeechEnded) {\r\n await this.onComplete();\r\n this.privInTurn = false;\r\n } else {\r\n // Start a new request set.\r\n this.privTurnStartAudioOffset = this.privLastRecoOffset;\r\n this.privAudioNode.replay();\r\n }\r\n }\r\n\r\n public onSpeechContext(): void {\r\n this.privRequestId = createNoDashGuid();\r\n }\r\n\r\n public onServiceTurnStartResponse(): void {\r\n if (!!this.privTurnDeferral && !!this.privInTurn) {\r\n // What? How are we starting a turn with another not done?\r\n this.privTurnDeferral.reject(\"Another turn started before current completed.\");\r\n // Avoid UnhandledPromiseRejection if privTurnDeferral is not being awaited\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n this.privTurnDeferral.promise.then().catch((): void => { });\r\n }\r\n this.privInTurn = true;\r\n this.privTurnDeferral = new Deferred();\r\n }\r\n\r\n public onHypothesis(offset: number): void {\r\n if (!this.privHypothesisReceived) {\r\n this.privHypothesisReceived = true;\r\n this.privServiceTelemetryListener.hypothesisReceived(this.privAudioNode.findTimeAtOffset(offset));\r\n }\r\n }\r\n\r\n public onPhraseRecognized(offset: number): void {\r\n this.privServiceTelemetryListener.phraseReceived(this.privAudioNode.findTimeAtOffset(offset));\r\n this.onServiceRecognized(offset);\r\n }\r\n\r\n public onServiceRecognized(offset: number): void {\r\n this.privLastRecoOffset = offset;\r\n this.privHypothesisReceived = false;\r\n this.privAudioNode.shrinkBuffers(offset);\r\n this.privConnectionAttempts = 0;\r\n }\r\n\r\n public onAudioSent(bytesSent: number): void {\r\n this.privBytesSent += bytesSent;\r\n this.privRecognitionBytesSent += bytesSent;\r\n }\r\n\r\n public onRetryConnection(): void {\r\n this.privConnectionAttempts++;\r\n }\r\n\r\n public async dispose(): Promise {\r\n if (!this.privIsDisposed) {\r\n // we should have completed by now. If we did not its an unknown error.\r\n this.privIsDisposed = true;\r\n for (const detachable of this.privDetachables) {\r\n await detachable.detach();\r\n }\r\n\r\n if (!!this.privServiceTelemetryListener) {\r\n this.privServiceTelemetryListener.dispose();\r\n }\r\n this.privIsRecognizing = false;\r\n }\r\n }\r\n\r\n public getTelemetry(): string {\r\n if (this.privServiceTelemetryListener.hasTelemetry) {\r\n return this.privServiceTelemetryListener.getTelemetry();\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public async onStopRecognizing(): Promise {\r\n await this.onComplete();\r\n }\r\n\r\n // Should be called with the audioNode for this session has indicated that it is out of speech.\r\n public onSpeechEnded(): void {\r\n this.privIsSpeechEnded = true;\r\n }\r\n\r\n protected onEvent(event: SpeechRecognitionEvent): void {\r\n if (!!this.privServiceTelemetryListener) {\r\n this.privServiceTelemetryListener.onEvent(event);\r\n }\r\n Events.instance.onEvent(event);\r\n }\r\n\r\n private async onComplete(): Promise {\r\n if (!!this.privIsRecognizing) {\r\n this.privIsRecognizing = false;\r\n await this.detachAudioNode();\r\n }\r\n }\r\n\r\n private async detachAudioNode(): Promise {\r\n if (!this.privIsAudioNodeDetached) {\r\n this.privIsAudioNodeDetached = true;\r\n if (this.privAudioNode) {\r\n await this.privAudioNode.detach();\r\n }\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// response\r\n\r\nexport interface IActivityPayloadResponse {\r\n conversationId: string;\r\n messageDataStreamType: number;\r\n messagePayload: string | object;\r\n version: number;\r\n}\r\n\r\nexport class ActivityPayloadResponse implements IActivityPayloadResponse {\r\n private privActivityResponse: IActivityPayloadResponse;\r\n\r\n private constructor(json: string) {\r\n this.privActivityResponse = JSON.parse(json) as IActivityPayloadResponse;\r\n }\r\n\r\n public static fromJSON(json: string): ActivityPayloadResponse {\r\n return new ActivityPayloadResponse(json);\r\n }\r\n\r\n public get conversationId(): string {\r\n return this.privActivityResponse.conversationId;\r\n }\r\n\r\n public get messageDataStreamType(): number {\r\n return this.privActivityResponse.messageDataStreamType;\r\n }\r\n\r\n public get messagePayload(): string | object {\r\n return this.privActivityResponse.messagePayload;\r\n }\r\n\r\n public get version(): number {\r\n return this.privActivityResponse.version;\r\n }\r\n}\r\n\r\nexport enum MessageDataStreamType {\r\n None = 0,\r\n TextToSpeechAudio = 1,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IPrimaryLanguage, RecognitionStatus } from \"../Exports.js\";\r\n\r\n// speech.phrase for detailed\r\nexport interface IDetailedSpeechPhrase {\r\n RecognitionStatus: RecognitionStatus;\r\n NBest: IPhrase[];\r\n Duration?: number;\r\n Offset?: number;\r\n PrimaryLanguage?: IPrimaryLanguage;\r\n DisplayText?: string;\r\n SpeakerId?: string;\r\n}\r\n\r\nexport interface IPhrase {\r\n Confidence?: number;\r\n Lexical: string;\r\n ITN: string;\r\n MaskedITN: string;\r\n Display?: string;\r\n DisplayText?: string;\r\n Words?: IWord[];\r\n DisplayWords?: IWord[];\r\n}\r\n\r\nexport interface IWord {\r\n Word: string;\r\n Offset: number;\r\n Duration: number;\r\n}\r\n\r\nexport class DetailedSpeechPhrase implements IDetailedSpeechPhrase {\r\n private privDetailedSpeechPhrase: IDetailedSpeechPhrase;\r\n\r\n private constructor(json: string) {\r\n this.privDetailedSpeechPhrase = JSON.parse(json) as IDetailedSpeechPhrase;\r\n this.privDetailedSpeechPhrase.RecognitionStatus = RecognitionStatus[this.privDetailedSpeechPhrase.RecognitionStatus as unknown as keyof typeof RecognitionStatus];\r\n }\r\n\r\n public static fromJSON(json: string): DetailedSpeechPhrase {\r\n return new DetailedSpeechPhrase(json);\r\n }\r\n\r\n public getJsonWithCorrectedOffsets(baseOffset: number): string {\r\n if (!!this.privDetailedSpeechPhrase.NBest) {\r\n let firstWordOffset: number;\r\n for (const phrase of this.privDetailedSpeechPhrase.NBest) {\r\n if (!!phrase.Words && !!phrase.Words[0]) {\r\n firstWordOffset = phrase.Words[0].Offset;\r\n break;\r\n }\r\n }\r\n if (!!firstWordOffset && firstWordOffset < baseOffset) {\r\n const offset: number = baseOffset - firstWordOffset;\r\n for (const details of this.privDetailedSpeechPhrase.NBest) {\r\n if (!!details.Words) {\r\n for (const word of details.Words) {\r\n word.Offset += offset;\r\n }\r\n }\r\n if (!!details.DisplayWords) {\r\n for (const word of details.DisplayWords) {\r\n word.Offset += offset;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return JSON.stringify(this.privDetailedSpeechPhrase);\r\n }\r\n\r\n public get RecognitionStatus(): RecognitionStatus {\r\n return this.privDetailedSpeechPhrase.RecognitionStatus;\r\n }\r\n public get NBest(): IPhrase[] {\r\n return this.privDetailedSpeechPhrase.NBest;\r\n }\r\n public get Duration(): number {\r\n return this.privDetailedSpeechPhrase.Duration;\r\n }\r\n public get Offset(): number {\r\n return this.privDetailedSpeechPhrase.Offset;\r\n }\r\n public get Language(): string {\r\n return this.privDetailedSpeechPhrase.PrimaryLanguage === undefined ? undefined : this.privDetailedSpeechPhrase.PrimaryLanguage.Language;\r\n }\r\n public get LanguageDetectionConfidence(): string {\r\n return this.privDetailedSpeechPhrase.PrimaryLanguage === undefined ? undefined : this.privDetailedSpeechPhrase.PrimaryLanguage.Confidence;\r\n }\r\n public get Text(): string {\r\n if (!!this.privDetailedSpeechPhrase.NBest && this.privDetailedSpeechPhrase.NBest[0]) {\r\n return this.privDetailedSpeechPhrase.NBest[0].Display || this.privDetailedSpeechPhrase.NBest[0].DisplayText;\r\n }\r\n return this.privDetailedSpeechPhrase.DisplayText;\r\n }\r\n public get SpeakerId(): string {\r\n return this.privDetailedSpeechPhrase.SpeakerId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * @class SynthesisStatus\r\n * @private\r\n */\r\nexport enum SynthesisStatus {\r\n /**\r\n * The response contains valid audio data.\r\n * @member SynthesisStatus.Success\r\n */\r\n Success,\r\n\r\n /**\r\n * Indicates the end of audio data. No valid audio data is included in the message.\r\n * @member SynthesisStatus.SynthesisEnd\r\n */\r\n SynthesisEnd,\r\n\r\n /**\r\n * Indicates an error occurred during synthesis data processing.\r\n * @member SynthesisStatus.Error\r\n */\r\n Error,\r\n}\r\n\r\nexport enum RecognitionStatus {\r\n Success,\r\n NoMatch,\r\n InitialSilenceTimeout,\r\n BabbleTimeout,\r\n Error,\r\n EndOfDictation,\r\n TooManyRequests,\r\n BadRequest,\r\n Forbidden,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// response\r\n\r\nexport interface IIntentResponse {\r\n query?: string;\r\n topScoringIntent?: ISingleIntent;\r\n entities?: IIntentEntity[];\r\n}\r\n\r\nexport interface IIntentEntity {\r\n entity: string;\r\n type: string;\r\n startIndex: number;\r\n endIndex: number;\r\n score: number;\r\n}\r\n\r\nexport interface ISingleIntent {\r\n intent: string;\r\n score: number;\r\n}\r\n\r\nexport class IntentResponse implements IIntentResponse {\r\n private privIntentResponse: IIntentResponse;\r\n\r\n private constructor(json: string) {\r\n if (json === \"\") {\r\n this.privIntentResponse = {};\r\n } else {\r\n this.privIntentResponse = JSON.parse(json) as IIntentResponse;\r\n }\r\n }\r\n\r\n public static fromJSON(json: string): IntentResponse {\r\n return new IntentResponse(json);\r\n }\r\n\r\n public get query(): string {\r\n return this.privIntentResponse.query;\r\n }\r\n\r\n public get topScoringIntent(): ISingleIntent {\r\n return this.privIntentResponse.topScoringIntent;\r\n }\r\n\r\n public get entities(): IIntentEntity[] {\r\n return this.privIntentResponse.entities;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { RecognitionStatus } from \"../Exports.js\";\r\n\r\n// speech.phrase\r\nexport interface ISimpleSpeechPhrase {\r\n RecognitionStatus: RecognitionStatus;\r\n DisplayText: string;\r\n Offset?: number;\r\n Duration?: number;\r\n PrimaryLanguage?: IPrimaryLanguage;\r\n SpeakerId?: string;\r\n}\r\n\r\nexport interface IPrimaryLanguage {\r\n Language: string;\r\n Confidence: string;\r\n}\r\n\r\nexport class SimpleSpeechPhrase implements ISimpleSpeechPhrase {\r\n private privSimpleSpeechPhrase: ISimpleSpeechPhrase;\r\n\r\n private constructor(json: string) {\r\n this.privSimpleSpeechPhrase = JSON.parse(json) as ISimpleSpeechPhrase;\r\n this.privSimpleSpeechPhrase.RecognitionStatus = RecognitionStatus[this.privSimpleSpeechPhrase.RecognitionStatus as unknown as keyof typeof RecognitionStatus];\r\n }\r\n\r\n public static fromJSON(json: string): SimpleSpeechPhrase {\r\n return new SimpleSpeechPhrase(json);\r\n }\r\n\r\n public get RecognitionStatus(): RecognitionStatus {\r\n return this.privSimpleSpeechPhrase.RecognitionStatus;\r\n }\r\n\r\n public get DisplayText(): string {\r\n return this.privSimpleSpeechPhrase.DisplayText;\r\n }\r\n\r\n public get Offset(): number {\r\n return this.privSimpleSpeechPhrase.Offset;\r\n }\r\n\r\n public get Duration(): number {\r\n return this.privSimpleSpeechPhrase.Duration;\r\n }\r\n\r\n public get Language(): string {\r\n return this.privSimpleSpeechPhrase.PrimaryLanguage === undefined ? undefined : this.privSimpleSpeechPhrase.PrimaryLanguage.Language;\r\n }\r\n\r\n public get LanguageDetectionConfidence(): string {\r\n return this.privSimpleSpeechPhrase.PrimaryLanguage === undefined ? undefined : this.privSimpleSpeechPhrase.PrimaryLanguage.Confidence;\r\n }\r\n\r\n public get SpeakerId(): string {\r\n return this.privSimpleSpeechPhrase.SpeakerId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n// speech.endDetected\r\nexport interface ISpeechDetected {\r\n Offset: number;\r\n}\r\n\r\nexport class SpeechDetected implements ISpeechDetected {\r\n private privSpeechStartDetected: ISpeechDetected;\r\n\r\n private constructor(json: string) {\r\n this.privSpeechStartDetected = JSON.parse(json) as ISpeechDetected;\r\n }\r\n\r\n public static fromJSON(json: string): SpeechDetected {\r\n return new SpeechDetected(json);\r\n }\r\n\r\n public get Offset(): number {\r\n return this.privSpeechStartDetected.Offset;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IPrimaryLanguage } from \"./SimpleSpeechPhrase.js\";\r\n\r\n// speech.hypothesis\r\nexport interface ISpeechHypothesis {\r\n Text: string;\r\n Offset: number;\r\n Duration: number;\r\n PrimaryLanguage?: IPrimaryLanguage;\r\n SpeakerId?: string;\r\n}\r\n\r\nexport class SpeechHypothesis implements ISpeechHypothesis {\r\n private privSpeechHypothesis: ISpeechHypothesis;\r\n\r\n private constructor(json: string) {\r\n this.privSpeechHypothesis = JSON.parse(json) as ISpeechHypothesis;\r\n }\r\n\r\n public static fromJSON(json: string): SpeechHypothesis {\r\n return new SpeechHypothesis(json);\r\n }\r\n\r\n public get Text(): string {\r\n return this.privSpeechHypothesis.Text;\r\n }\r\n\r\n public get Offset(): number {\r\n return this.privSpeechHypothesis.Offset;\r\n }\r\n\r\n public get Duration(): number {\r\n return this.privSpeechHypothesis.Duration;\r\n }\r\n\r\n public get Language(): string {\r\n return this.privSpeechHypothesis.PrimaryLanguage === undefined ? undefined : this.privSpeechHypothesis.PrimaryLanguage.Language;\r\n }\r\n\r\n public get LanguageDetectionConfidence(): string {\r\n return this.privSpeechHypothesis.PrimaryLanguage === undefined ? undefined : this.privSpeechHypothesis.PrimaryLanguage.Confidence;\r\n }\r\n\r\n public get SpeakerId(): string {\r\n return this.privSpeechHypothesis.SpeakerId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n// speech.keyword\r\nexport interface ISpeechKeyword {\r\n Status: string;\r\n Text: string;\r\n Offset: number;\r\n Duration: number;\r\n}\r\n\r\nexport class SpeechKeyword implements ISpeechKeyword {\r\n private privSpeechKeyword: ISpeechKeyword;\r\n\r\n private constructor(json: string) {\r\n this.privSpeechKeyword = JSON.parse(json) as ISpeechKeyword;\r\n }\r\n\r\n public static fromJSON(json: string): SpeechKeyword {\r\n return new SpeechKeyword(json);\r\n }\r\n\r\n public get Status(): string {\r\n return this.privSpeechKeyword.Status;\r\n }\r\n\r\n public get Text(): string {\r\n return this.privSpeechKeyword.Text;\r\n }\r\n\r\n public get Offset(): number {\r\n return this.privSpeechKeyword.Offset;\r\n }\r\n\r\n public get Duration(): number {\r\n return this.privSpeechKeyword.Duration;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { SpeechSynthesisBoundaryType } from \"../../sdk/Exports.js\";\r\n\r\nexport enum MetadataType {\r\n WordBoundary = \"WordBoundary\",\r\n Bookmark = \"Bookmark\",\r\n Viseme = \"Viseme\",\r\n SentenceBoundary = \"SentenceBoundary\",\r\n SessionEnd = \"SessionEnd\",\r\n AvatarSignal = \"TalkingAvatarSignal\",\r\n}\r\n\r\nexport interface ISynthesisMetadata {\r\n Type: MetadataType;\r\n Data: {\r\n Offset: number;\r\n Duration: number;\r\n text: {\r\n Text: string;\r\n Length: number;\r\n BoundaryType: SpeechSynthesisBoundaryType;\r\n };\r\n Bookmark: string;\r\n VisemeId: number;\r\n AnimationChunk: string;\r\n IsLastAnimation: boolean;\r\n Name: string;\r\n };\r\n}\r\n\r\n// audio.metadata\r\nexport interface ISynthesisAudioMetadata {\r\n Metadata: ISynthesisMetadata[];\r\n}\r\n\r\nexport class SynthesisAudioMetadata implements ISynthesisAudioMetadata {\r\n private privSynthesisAudioMetadata: ISynthesisAudioMetadata;\r\n\r\n private constructor(json: string) {\r\n this.privSynthesisAudioMetadata = JSON.parse(json) as ISynthesisAudioMetadata;\r\n }\r\n\r\n public static fromJSON(json: string): SynthesisAudioMetadata {\r\n return new SynthesisAudioMetadata(json);\r\n }\r\n\r\n public get Metadata(): ISynthesisMetadata[] {\r\n return this.privSynthesisAudioMetadata.Metadata;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"../../sdk/Contracts.js\";\r\nimport { IPrimaryLanguage, ITranslations } from \"../Exports.js\";\r\nimport { TranslationStatus } from \"../TranslationStatus.js\";\r\n\r\n// translation.hypothesis\r\nexport interface ITranslationHypothesis {\r\n Duration: number;\r\n Offset: number;\r\n PrimaryLanguage?: IPrimaryLanguage;\r\n Text: string;\r\n Translation: ITranslations;\r\n}\r\n\r\nexport class TranslationHypothesis implements ITranslationHypothesis {\r\n private privTranslationHypothesis: ITranslationHypothesis;\r\n\r\n private constructor(hypothesis: ITranslationHypothesis) {\r\n this.privTranslationHypothesis = hypothesis;\r\n this.privTranslationHypothesis.Translation.TranslationStatus = TranslationStatus[this.privTranslationHypothesis.Translation.TranslationStatus as unknown as keyof typeof TranslationStatus];\r\n }\r\n\r\n public static fromJSON(json: string): TranslationHypothesis {\r\n return new TranslationHypothesis(JSON.parse(json) as ITranslationHypothesis);\r\n }\r\n\r\n public static fromTranslationResponse(translationHypothesis: { SpeechHypothesis: ITranslationHypothesis }): TranslationHypothesis {\r\n Contracts.throwIfNullOrUndefined(translationHypothesis, \"translationHypothesis\");\r\n const hypothesis: ITranslationHypothesis = translationHypothesis.SpeechHypothesis;\r\n translationHypothesis.SpeechHypothesis = undefined;\r\n hypothesis.Translation = (translationHypothesis as unknown as ITranslations);\r\n return new TranslationHypothesis(hypothesis);\r\n }\r\n\r\n public get Duration(): number {\r\n return this.privTranslationHypothesis.Duration;\r\n }\r\n\r\n public get Offset(): number {\r\n return this.privTranslationHypothesis.Offset;\r\n }\r\n\r\n public get Text(): string {\r\n return this.privTranslationHypothesis.Text;\r\n }\r\n\r\n public get Translation(): ITranslations {\r\n return this.privTranslationHypothesis.Translation;\r\n }\r\n\r\n public get Language(): string {\r\n return this.privTranslationHypothesis.PrimaryLanguage?.Language;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"../../sdk/Contracts.js\";\r\nimport { IPrimaryLanguage, ITranslations, RecognitionStatus } from \"../Exports.js\";\r\nimport { TranslationStatus } from \"../TranslationStatus.js\";\r\n\r\n// translation.phrase\r\nexport interface ITranslationPhrase {\r\n RecognitionStatus: RecognitionStatus;\r\n Offset: number;\r\n Duration: number;\r\n Translation?: ITranslations;\r\n Text?: string;\r\n DisplayText?: string;\r\n PrimaryLanguage?: IPrimaryLanguage;\r\n}\r\n\r\nexport class TranslationPhrase implements ITranslationPhrase {\r\n private privTranslationPhrase: ITranslationPhrase;\r\n\r\n private constructor(phrase: ITranslationPhrase) {\r\n this.privTranslationPhrase = phrase;\r\n this.privTranslationPhrase.RecognitionStatus = RecognitionStatus[this.privTranslationPhrase.RecognitionStatus as unknown as keyof typeof RecognitionStatus];\r\n if (this.privTranslationPhrase.Translation !== undefined) {\r\n this.privTranslationPhrase.Translation.TranslationStatus = TranslationStatus[this.privTranslationPhrase.Translation.TranslationStatus as unknown as keyof typeof TranslationStatus];\r\n }\r\n }\r\n\r\n public static fromJSON(json: string): TranslationPhrase {\r\n return new TranslationPhrase(JSON.parse(json) as ITranslationPhrase);\r\n }\r\n\r\n public static fromTranslationResponse(translationResponse: { SpeechPhrase: ITranslationPhrase }): TranslationPhrase {\r\n Contracts.throwIfNullOrUndefined(translationResponse, \"translationResponse\");\r\n const phrase: ITranslationPhrase = translationResponse.SpeechPhrase;\r\n translationResponse.SpeechPhrase = undefined;\r\n phrase.Translation = (translationResponse as unknown as ITranslations);\r\n phrase.Text = phrase.DisplayText;\r\n return new TranslationPhrase(phrase);\r\n }\r\n\r\n public get RecognitionStatus(): RecognitionStatus {\r\n return this.privTranslationPhrase.RecognitionStatus;\r\n }\r\n\r\n public get Offset(): number {\r\n return this.privTranslationPhrase.Offset;\r\n }\r\n\r\n public get Duration(): number {\r\n return this.privTranslationPhrase.Duration;\r\n }\r\n\r\n public get Text(): string | undefined {\r\n return this.privTranslationPhrase.Text;\r\n }\r\n\r\n public get Language(): string | undefined {\r\n return this.privTranslationPhrase.PrimaryLanguage?.Language;\r\n }\r\n\r\n public get Confidence(): string | undefined {\r\n return this.privTranslationPhrase.PrimaryLanguage?.Confidence;\r\n }\r\n\r\n public get Translation(): ITranslations | undefined {\r\n return this.privTranslationPhrase.Translation;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { SynthesisStatus } from \"../Exports.js\";\r\n\r\n// translation.synthesis.end\r\nexport interface ITranslationSynthesisEnd {\r\n SynthesisStatus?: SynthesisStatus;\r\n FailureReason?: string;\r\n Status?: SynthesisStatus;\r\n}\r\n\r\nexport class TranslationSynthesisEnd implements ITranslationSynthesisEnd {\r\n private privSynthesisEnd: ITranslationSynthesisEnd;\r\n\r\n private constructor(json: string) {\r\n this.privSynthesisEnd = JSON.parse(json) as ITranslationSynthesisEnd;\r\n if (!!this.privSynthesisEnd.SynthesisStatus) {\r\n this.privSynthesisEnd.SynthesisStatus = SynthesisStatus[this.privSynthesisEnd.SynthesisStatus as unknown as keyof typeof SynthesisStatus];\r\n }\r\n if (!!this.privSynthesisEnd.Status) {\r\n this.privSynthesisEnd.SynthesisStatus = SynthesisStatus[this.privSynthesisEnd.Status as unknown as keyof typeof SynthesisStatus];\r\n }\r\n }\r\n\r\n public static fromJSON(json: string): TranslationSynthesisEnd {\r\n return new TranslationSynthesisEnd(json);\r\n }\r\n\r\n public get SynthesisStatus(): SynthesisStatus {\r\n return this.privSynthesisEnd.SynthesisStatus;\r\n }\r\n\r\n public get FailureReason(): string {\r\n return this.privSynthesisEnd.FailureReason;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport interface ITurnStatusResponsePayload {\r\n interactionId: string;\r\n conversationId: string;\r\n statusCode: any;\r\n}\r\n\r\nexport class TurnStatusResponsePayload implements ITurnStatusResponsePayload {\r\n private privMessageStatusResponse: ITurnStatusResponsePayload;\r\n\r\n private constructor(json: string) {\r\n this.privMessageStatusResponse = JSON.parse(json) as ITurnStatusResponsePayload;\r\n }\r\n\r\n public static fromJSON(json: string): TurnStatusResponsePayload {\r\n return new TurnStatusResponsePayload(json);\r\n }\r\n\r\n public get interactionId(): string {\r\n return this.privMessageStatusResponse.interactionId;\r\n }\r\n\r\n public get conversationId(): string {\r\n return this.privMessageStatusResponse.conversationId;\r\n }\r\n\r\n public get statusCode(): any {\r\n // Payloads may contain a limited set of textual representations or a numeric status\r\n // code. The textual values are here converted into numeric ones.\r\n switch (this.privMessageStatusResponse.statusCode) {\r\n case \"Success\":\r\n return 200;\r\n case \"Failed\":\r\n return 400;\r\n case \"TimedOut\":\r\n return 429;\r\n default:\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\r\n return this.privMessageStatusResponse.statusCode;\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ReplayableAudioNode } from \"../common.browser/Exports.js\";\r\nimport { ConnectionOpenResponse } from \"../common/ConnectionOpenResponse.js\";\r\nimport {\r\n ArgumentNullError,\r\n ConnectionClosedEvent,\r\n ConnectionEvent,\r\n ConnectionState,\r\n createNoDashGuid,\r\n EventSource,\r\n IAudioSource,\r\n IAudioStreamNode,\r\n IConnection,\r\n IDisposable,\r\n IStreamChunk,\r\n MessageType,\r\n ServiceEvent,\r\n Timeout\r\n} from \"../common/Exports.js\";\r\nimport { AudioStreamFormatImpl } from \"../sdk/Audio/AudioStreamFormat.js\";\r\nimport { SpeakerRecognitionModel } from \"../sdk/SpeakerRecognitionModel.js\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n PropertyId,\r\n RecognitionEventArgs,\r\n Recognizer,\r\n SessionEventArgs,\r\n SpeakerRecognitionResult,\r\n SpeechRecognitionResult,\r\n OutputFormat\r\n} from \"../sdk/Exports.js\";\r\nimport { Callback } from \"../sdk/Transcription/IConversation.js\";\r\nimport {\r\n AgentConfig,\r\n DynamicGrammarBuilder,\r\n ISpeechConfigAudioDevice,\r\n RecognitionMode,\r\n RequestSession,\r\n SpeechContext,\r\n SpeechDetected,\r\n type,\r\n OutputFormatPropertyName\r\n} from \"./Exports.js\";\r\nimport {\r\n AuthInfo,\r\n IAuthentication,\r\n} from \"./IAuthentication.js\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory.js\";\r\nimport { RecognizerConfig } from \"./RecognizerConfig.js\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal.js\";\r\n\r\ninterface CustomModel {\r\n language: string;\r\n endpoint: string;\r\n}\r\n\r\nexport interface PhraseDetection {\r\n customModels?: CustomModel[];\r\n onInterim?: { action: string };\r\n onSuccess?: { action: string };\r\n mode?: string;\r\n INTERACTIVE?: Segmentation;\r\n CONVERSATION?: Segmentation;\r\n DICTATION?: Segmentation;\r\n speakerDiarization?: SpeakerDiarization;\r\n}\r\n\r\nexport interface SpeakerDiarization {\r\n mode?: string;\r\n audioSessionId?: string;\r\n audioOffsetMs?: number;\r\n identityProvider?: string;\r\n diarizeIntermediates?: boolean;\r\n}\r\n\r\nexport interface Segmentation {\r\n segmentation: {\r\n mode: \"Custom\";\r\n segmentationSilenceTimeoutMs: number;\r\n };\r\n}\r\n\r\nexport abstract class ServiceRecognizerBase implements IDisposable {\r\n private privAuthentication: IAuthentication;\r\n private privConnectionFactory: IConnectionFactory;\r\n\r\n // A promise for a configured connection.\r\n // Do not consume directly, call fetchConnection instead.\r\n private privConnectionConfigurationPromise: Promise = undefined;\r\n\r\n // A promise for a connection, but one that has not had the speech context sent yet.\r\n // Do not consume directly, call fetchConnection instead.\r\n private privConnectionPromise: Promise = undefined;\r\n private privAuthFetchEventId: string;\r\n private privIsDisposed: boolean;\r\n private privMustReportEndOfStream: boolean;\r\n private privConnectionEvents: EventSource;\r\n private privServiceEvents: EventSource;\r\n private privDynamicGrammar: DynamicGrammarBuilder;\r\n private privAgentConfig: AgentConfig;\r\n private privServiceHasSentMessage: boolean;\r\n private privActivityTemplate: string;\r\n private privSetTimeout: (cb: () => void, delay: number) => number = setTimeout;\r\n private privAudioSource: IAudioSource;\r\n private privIsLiveAudio: boolean = false;\r\n private privAverageBytesPerMs: number = 0;\r\n protected privSpeechContext: SpeechContext;\r\n protected privRequestSession: RequestSession;\r\n protected privConnectionId: string;\r\n protected privDiarizationSessionId: string;\r\n protected privRecognizerConfig: RecognizerConfig;\r\n protected privRecognizer: Recognizer;\r\n protected privSuccessCallback: (e: SpeechRecognitionResult) => void;\r\n protected privErrorCallback: (e: string) => void;\r\n protected privEnableSpeakerId: boolean = false;\r\n protected privExpectContentAssessmentResponse: boolean = false;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n recognizer: Recognizer) {\r\n\r\n if (!authentication) {\r\n throw new ArgumentNullError(\"authentication\");\r\n }\r\n\r\n if (!connectionFactory) {\r\n throw new ArgumentNullError(\"connectionFactory\");\r\n }\r\n\r\n if (!audioSource) {\r\n throw new ArgumentNullError(\"audioSource\");\r\n }\r\n\r\n if (!recognizerConfig) {\r\n throw new ArgumentNullError(\"recognizerConfig\");\r\n }\r\n\r\n this.privEnableSpeakerId = recognizerConfig.isSpeakerDiarizationEnabled;\r\n this.privMustReportEndOfStream = false;\r\n this.privAuthentication = authentication;\r\n this.privConnectionFactory = connectionFactory;\r\n this.privAudioSource = audioSource;\r\n this.privRecognizerConfig = recognizerConfig;\r\n this.privIsDisposed = false;\r\n this.privRecognizer = recognizer;\r\n this.privRequestSession = new RequestSession(this.privAudioSource.id());\r\n this.privConnectionEvents = new EventSource();\r\n this.privServiceEvents = new EventSource();\r\n this.privDynamicGrammar = new DynamicGrammarBuilder();\r\n this.privSpeechContext = new SpeechContext(this.privDynamicGrammar);\r\n this.privAgentConfig = new AgentConfig();\r\n const webWorkerLoadType: string = this.privRecognizerConfig.parameters.getProperty(PropertyId.WebWorkerLoadType, \"on\").toLowerCase();\r\n if (webWorkerLoadType === \"on\" && typeof (Blob) !== \"undefined\" && typeof (Worker) !== \"undefined\") {\r\n this.privSetTimeout = Timeout.setTimeout;\r\n } else {\r\n if (typeof window !== \"undefined\") {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n this.privSetTimeout = window.setTimeout.bind(window);\r\n }\r\n if (typeof globalThis !== \"undefined\") {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n this.privSetTimeout = globalThis.setTimeout.bind(globalThis);\r\n }\r\n }\r\n\r\n this.connectionEvents.attach((connectionEvent: ConnectionEvent): void => {\r\n if (connectionEvent.name === \"ConnectionClosedEvent\") {\r\n const connectionClosedEvent = connectionEvent as ConnectionClosedEvent;\r\n if (connectionClosedEvent.statusCode === 1003 ||\r\n connectionClosedEvent.statusCode === 1007 ||\r\n connectionClosedEvent.statusCode === 1002 ||\r\n connectionClosedEvent.statusCode === 4000 ||\r\n this.privRequestSession.numConnectionAttempts > this.privRecognizerConfig.maxRetryCount\r\n ) {\r\n void this.cancelRecognitionLocal(CancellationReason.Error,\r\n connectionClosedEvent.statusCode === 1007 ? CancellationErrorCode.BadRequestParameters : CancellationErrorCode.ConnectionFailure,\r\n `${connectionClosedEvent.reason} websocket error code: ${connectionClosedEvent.statusCode}`);\r\n }\r\n }\r\n });\r\n\r\n if (this.privEnableSpeakerId) {\r\n this.privDiarizationSessionId = createNoDashGuid();\r\n }\r\n\r\n this.setLanguageIdJson();\r\n this.setOutputDetailLevelJson();\r\n }\r\n\r\n protected setTranslationJson(): void {\r\n const targetLanguages: string = this.privRecognizerConfig.parameters.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages, undefined);\r\n if (targetLanguages !== undefined) {\r\n const languages = targetLanguages.split(\",\");\r\n const translationVoice: string = this.privRecognizerConfig.parameters.getProperty(PropertyId.SpeechServiceConnection_TranslationVoice, undefined);\r\n const action = ( translationVoice !== undefined ) ? \"Synthesize\" : \"None\";\r\n this.privSpeechContext.setSection(\"translation\", {\r\n onSuccess: { action },\r\n output: { interimResults: { mode: \"Always\" } },\r\n targetLanguages: languages,\r\n });\r\n\r\n if (translationVoice !== undefined) {\r\n const languageToVoiceMap: { [key: string]: string } = {};\r\n for (const lang of languages) {\r\n languageToVoiceMap[lang] = translationVoice;\r\n }\r\n this.privSpeechContext.setSection(\"synthesis\", {\r\n defaultVoices: languageToVoiceMap\r\n });\r\n }\r\n }\r\n }\r\n\r\n protected setSpeechSegmentationTimeoutJson(): void {\r\n const speechSegmentationTimeout: string = this.privRecognizerConfig.parameters.getProperty(PropertyId.Speech_SegmentationSilenceTimeoutMs, undefined);\r\n if (speechSegmentationTimeout !== undefined) {\r\n const mode = this.recognitionMode === RecognitionMode.Conversation ? \"CONVERSATION\" :\r\n this.recognitionMode === RecognitionMode.Dictation ? \"DICTATION\" : \"INTERACTIVE\";\r\n const segmentationSilenceTimeoutMs: number = parseInt(speechSegmentationTimeout, 10);\r\n const phraseDetection = this.privSpeechContext.getSection(\"phraseDetection\") as PhraseDetection;\r\n phraseDetection.mode = mode;\r\n phraseDetection[mode] = {\r\n segmentation: {\r\n mode: \"Custom\",\r\n segmentationSilenceTimeoutMs\r\n }\r\n };\r\n this.privSpeechContext.setSection(\"phraseDetection\", phraseDetection);\r\n }\r\n }\r\n\r\n protected setLanguageIdJson(): void {\r\n const phraseDetection = this.privSpeechContext.getSection(\"phraseDetection\") as PhraseDetection;\r\n if (this.privRecognizerConfig.autoDetectSourceLanguages !== undefined) {\r\n const sourceLanguages: string[] = this.privRecognizerConfig.autoDetectSourceLanguages.split(\",\");\r\n\r\n let speechContextLidMode;\r\n if (this.privRecognizerConfig.languageIdMode === \"Continuous\") {\r\n speechContextLidMode = \"DetectContinuous\";\r\n } else {// recognizerConfig.languageIdMode === \"AtStart\"\r\n speechContextLidMode = \"DetectAtAudioStart\";\r\n }\r\n\r\n this.privSpeechContext.setSection(\"languageId\", {\r\n Priority: \"PrioritizeLatency\",\r\n languages: sourceLanguages,\r\n mode: speechContextLidMode,\r\n onSuccess: { action: \"Recognize\" },\r\n onUnknown: { action: \"None\" }\r\n });\r\n this.privSpeechContext.setSection(\"phraseOutput\", {\r\n interimResults: {\r\n resultType: \"Auto\"\r\n },\r\n phraseResults: {\r\n resultType: \"Always\"\r\n }\r\n });\r\n const customModels: CustomModel[] = this.privRecognizerConfig.sourceLanguageModels;\r\n if (customModels !== undefined) {\r\n phraseDetection.customModels = customModels;\r\n phraseDetection.onInterim = { action: \"None\" };\r\n phraseDetection.onSuccess = { action: \"None\" };\r\n }\r\n }\r\n const targetLanguages: string = this.privRecognizerConfig.parameters.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages, undefined);\r\n if (targetLanguages !== undefined) {\r\n phraseDetection.onInterim = { action: \"Translate\" };\r\n phraseDetection.onSuccess = { action: \"Translate\" };\r\n this.privSpeechContext.setSection(\"phraseOutput\", {\r\n interimResults: {\r\n resultType: \"None\"\r\n },\r\n phraseResults: {\r\n resultType: \"None\"\r\n }\r\n });\r\n }\r\n\r\n this.privSpeechContext.setSection(\"phraseDetection\", phraseDetection);\r\n }\r\n\r\n protected setOutputDetailLevelJson(): void {\r\n if (this.privEnableSpeakerId) {\r\n const requestWordLevelTimestamps: string = this.privRecognizerConfig.parameters.getProperty(PropertyId.SpeechServiceResponse_RequestWordLevelTimestamps, \"false\").toLowerCase();\r\n if (requestWordLevelTimestamps === \"true\") {\r\n this.privSpeechContext.setWordLevelTimings();\r\n } else {\r\n const outputFormat: string = this.privRecognizerConfig.parameters.getProperty(OutputFormatPropertyName, OutputFormat[OutputFormat.Simple]).toLowerCase();\r\n if (outputFormat === OutputFormat[OutputFormat.Detailed].toLocaleLowerCase()) {\r\n this.privSpeechContext.setDetailedOutputFormat();\r\n }\r\n }\r\n }\r\n }\r\n\r\n public get isSpeakerDiarizationEnabled(): boolean {\r\n return this.privEnableSpeakerId;\r\n }\r\n\r\n public get audioSource(): IAudioSource {\r\n return this.privAudioSource;\r\n }\r\n\r\n public get speechContext(): SpeechContext {\r\n return this.privSpeechContext;\r\n }\r\n\r\n public get dynamicGrammar(): DynamicGrammarBuilder {\r\n return this.privDynamicGrammar;\r\n }\r\n\r\n public get agentConfig(): AgentConfig {\r\n return this.privAgentConfig;\r\n }\r\n\r\n public set conversationTranslatorToken(token: string) {\r\n this.privRecognizerConfig.parameters.setProperty(PropertyId.ConversationTranslator_Token, token);\r\n }\r\n\r\n public set voiceProfileType(type: string) {\r\n this.privRecognizerConfig.parameters.setProperty(PropertyId.SpeechServiceConnection_SpeakerIdMode, type);\r\n }\r\n\r\n public set authentication(auth: IAuthentication) {\r\n this.privAuthentication = auth;\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privIsDisposed;\r\n }\r\n\r\n public async dispose(reason?: string): Promise {\r\n this.privIsDisposed = true;\r\n if (this.privConnectionConfigurationPromise !== undefined) {\r\n try {\r\n const connection: IConnection = await this.privConnectionConfigurationPromise;\r\n await connection.dispose(reason);\r\n } catch (error) {\r\n // The connection is in a bad state. But we're trying to kill it, so...\r\n return;\r\n }\r\n }\r\n }\r\n\r\n public get connectionEvents(): EventSource {\r\n return this.privConnectionEvents;\r\n }\r\n\r\n public get serviceEvents(): EventSource {\r\n return this.privServiceEvents;\r\n }\r\n\r\n public get recognitionMode(): RecognitionMode {\r\n return this.privRecognizerConfig.recognitionMode;\r\n }\r\n\r\n protected recognizeOverride: (recoMode: RecognitionMode, sc: (e: SpeechRecognitionResult) => void, ec: (e: string) => void) => Promise = undefined;\r\n\r\n public recognizeSpeaker: (model: SpeakerRecognitionModel) => Promise = undefined;\r\n\r\n public async recognize(\r\n recoMode: RecognitionMode,\r\n successCallback: (e: SpeechRecognitionResult) => void,\r\n errorCallBack: (e: string) => void,\r\n ): Promise {\r\n\r\n if (this.recognizeOverride !== undefined) {\r\n await this.recognizeOverride(recoMode, successCallback, errorCallBack);\r\n return;\r\n }\r\n // Clear the existing configuration promise to force a re-transmission of config and context.\r\n this.privConnectionConfigurationPromise = undefined;\r\n this.privRecognizerConfig.recognitionMode = recoMode;\r\n this.setSpeechSegmentationTimeoutJson();\r\n this.setTranslationJson();\r\n\r\n this.privSuccessCallback = successCallback;\r\n this.privErrorCallback = errorCallBack;\r\n\r\n this.privRequestSession.startNewRecognition();\r\n this.privRequestSession.listenForServiceTelemetry(this.privAudioSource.events);\r\n\r\n // Start the connection to the service. The promise this will create is stored and will be used by configureConnection().\r\n const conPromise: Promise = this.connectImpl();\r\n let audioNode: ReplayableAudioNode;\r\n\r\n try {\r\n const audioStreamNode: IAudioStreamNode = await this.audioSource.attach(this.privRequestSession.audioNodeId);\r\n const format: AudioStreamFormatImpl = await this.audioSource.format;\r\n const deviceInfo: ISpeechConfigAudioDevice = await this.audioSource.deviceInfo;\r\n this.privIsLiveAudio = deviceInfo.type && deviceInfo.type === type.Microphones;\r\n\r\n audioNode = new ReplayableAudioNode(audioStreamNode, format.avgBytesPerSec);\r\n await this.privRequestSession.onAudioSourceAttachCompleted(audioNode, false);\r\n this.privRecognizerConfig.SpeechServiceConfig.Context.audio = { source: deviceInfo };\r\n\r\n } catch (error) {\r\n await this.privRequestSession.onStopRecognizing();\r\n throw error;\r\n }\r\n\r\n try {\r\n await conPromise;\r\n } catch (error) {\r\n await this.cancelRecognitionLocal(CancellationReason.Error, CancellationErrorCode.ConnectionFailure, error as string);\r\n return;\r\n }\r\n\r\n const sessionStartEventArgs: SessionEventArgs = new SessionEventArgs(this.privRequestSession.sessionId);\r\n\r\n if (!!this.privRecognizer.sessionStarted) {\r\n this.privRecognizer.sessionStarted(this.privRecognizer, sessionStartEventArgs);\r\n }\r\n\r\n void this.receiveMessage();\r\n const audioSendPromise = this.sendAudio(audioNode);\r\n\r\n audioSendPromise.catch(async (error: string): Promise => {\r\n await this.cancelRecognitionLocal(CancellationReason.Error, CancellationErrorCode.RuntimeError, error);\r\n });\r\n\r\n return;\r\n }\r\n\r\n public async stopRecognizing(): Promise {\r\n if (this.privRequestSession.isRecognizing) {\r\n try {\r\n await this.audioSource.turnOff();\r\n await this.sendFinalAudio();\r\n await this.privRequestSession.onStopRecognizing();\r\n await this.privRequestSession.turnCompletionPromise;\r\n } finally {\r\n await this.privRequestSession.dispose();\r\n }\r\n }\r\n return;\r\n }\r\n\r\n public async connect(): Promise {\r\n await this.connectImpl();\r\n return Promise.resolve();\r\n }\r\n\r\n public connectAsync(cb?: Callback, err?: Callback): void {\r\n this.connectImpl().then((): void => {\r\n try {\r\n if (!!cb) {\r\n cb();\r\n }\r\n } catch (e) {\r\n if (!!err) {\r\n err(e);\r\n }\r\n }\r\n }, (reason: any): void => {\r\n try {\r\n if (!!err) {\r\n err(reason);\r\n }\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n }\r\n });\r\n }\r\n\r\n protected disconnectOverride: () => Promise = undefined;\r\n\r\n public async disconnect(): Promise {\r\n await this.cancelRecognitionLocal(CancellationReason.Error,\r\n CancellationErrorCode.NoError,\r\n \"Disconnecting\");\r\n\r\n if (this.disconnectOverride !== undefined) {\r\n await this.disconnectOverride();\r\n }\r\n\r\n if (this.privConnectionPromise !== undefined) {\r\n try {\r\n await (await this.privConnectionPromise).dispose();\r\n } catch (error) {\r\n\r\n }\r\n }\r\n this.privConnectionPromise = undefined;\r\n }\r\n\r\n // Called when telemetry data is sent to the service.\r\n // Used for testing Telemetry capture.\r\n public static telemetryData: (json: string) => void;\r\n public static telemetryDataEnabled: boolean = true;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public sendMessage(message: string): Promise {\r\n return;\r\n }\r\n\r\n public async sendNetworkMessage(path: string, payload: string | ArrayBuffer): Promise {\r\n const type: MessageType = typeof payload === \"string\" ? MessageType.Text : MessageType.Binary;\r\n const contentType: string = typeof payload === \"string\" ? \"application/json\" : \"\";\r\n\r\n const connection: IConnection = await this.fetchConnection();\r\n return connection.send(new SpeechConnectionMessage(type, path, this.privRequestSession.requestId, contentType, payload));\r\n }\r\n\r\n public set activityTemplate(messagePayload: string) {\r\n this.privActivityTemplate = messagePayload;\r\n }\r\n\r\n public get activityTemplate(): string {\r\n return this.privActivityTemplate;\r\n }\r\n\r\n public set expectContentAssessmentResponse(value: boolean) {\r\n this.privExpectContentAssessmentResponse = value;\r\n }\r\n\r\n protected abstract processTypeSpecificMessages(\r\n connectionMessage: SpeechConnectionMessage,\r\n successCallback?: (e: SpeechRecognitionResult) => void,\r\n errorCallBack?: (e: string) => void): Promise;\r\n\r\n protected async sendTelemetryData(): Promise {\r\n const telemetryData = this.privRequestSession.getTelemetry();\r\n if (ServiceRecognizerBase.telemetryDataEnabled !== true ||\r\n this.privIsDisposed ||\r\n null === telemetryData) {\r\n return;\r\n }\r\n\r\n if (!!ServiceRecognizerBase.telemetryData) {\r\n try {\r\n ServiceRecognizerBase.telemetryData(telemetryData);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n\r\n const connection: IConnection = await this.fetchConnection();\r\n await connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"telemetry\",\r\n this.privRequestSession.requestId,\r\n \"application/json\",\r\n telemetryData));\r\n }\r\n\r\n // Cancels recognition.\r\n protected abstract cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void;\r\n\r\n // Cancels recognition.\r\n protected async cancelRecognitionLocal(\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): Promise {\r\n\r\n if (!!this.privRequestSession.isRecognizing) {\r\n await this.privRequestSession.onStopRecognizing();\r\n\r\n this.cancelRecognition(\r\n this.privRequestSession.sessionId,\r\n this.privRequestSession.requestId,\r\n cancellationReason,\r\n errorCode,\r\n error);\r\n }\r\n }\r\n\r\n protected receiveMessageOverride: () => Promise = undefined;\r\n\r\n protected async receiveMessage(): Promise {\r\n try {\r\n if (this.privIsDisposed) {\r\n // We're done.\r\n return;\r\n }\r\n\r\n let connection = await this.fetchConnection();\r\n const message = await connection.read();\r\n\r\n if (this.receiveMessageOverride !== undefined) {\r\n return this.receiveMessageOverride();\r\n }\r\n\r\n // indicates we are draining the queue and it came with no message;\r\n if (!message) {\r\n return this.receiveMessage();\r\n }\r\n\r\n this.privServiceHasSentMessage = true;\r\n const connectionMessage = SpeechConnectionMessage.fromConnectionMessage(message);\r\n\r\n if (connectionMessage.requestId.toLowerCase() === this.privRequestSession.requestId.toLowerCase()) {\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"turn.start\":\r\n this.privMustReportEndOfStream = true;\r\n this.privRequestSession.onServiceTurnStartResponse();\r\n break;\r\n\r\n case \"speech.startdetected\":\r\n const speechStartDetected: SpeechDetected = SpeechDetected.fromJSON(connectionMessage.textBody);\r\n const speechStartEventArgs = new RecognitionEventArgs(speechStartDetected.Offset, this.privRequestSession.sessionId);\r\n if (!!this.privRecognizer.speechStartDetected) {\r\n this.privRecognizer.speechStartDetected(this.privRecognizer, speechStartEventArgs);\r\n }\r\n break;\r\n\r\n case \"speech.enddetected\":\r\n let json: string;\r\n if (connectionMessage.textBody.length > 0) {\r\n json = connectionMessage.textBody;\r\n } else {\r\n // If the request was empty, the JSON returned is empty.\r\n json = \"{ Offset: 0 }\";\r\n }\r\n const speechStopDetected: SpeechDetected = SpeechDetected.fromJSON(json);\r\n const speechStopEventArgs = new RecognitionEventArgs(speechStopDetected.Offset + this.privRequestSession.currentTurnAudioOffset, this.privRequestSession.sessionId);\r\n if (!!this.privRecognizer.speechEndDetected) {\r\n this.privRecognizer.speechEndDetected(this.privRecognizer, speechStopEventArgs);\r\n }\r\n break;\r\n\r\n case \"turn.end\":\r\n await this.sendTelemetryData();\r\n if (this.privRequestSession.isSpeechEnded && this.privMustReportEndOfStream) {\r\n this.privMustReportEndOfStream = false;\r\n await this.cancelRecognitionLocal(CancellationReason.EndOfStream, CancellationErrorCode.NoError, undefined);\r\n }\r\n const sessionStopEventArgs: SessionEventArgs = new SessionEventArgs(this.privRequestSession.sessionId);\r\n await this.privRequestSession.onServiceTurnEndResponse(this.privRecognizerConfig.isContinuousRecognition);\r\n if (!this.privRecognizerConfig.isContinuousRecognition || this.privRequestSession.isSpeechEnded || !this.privRequestSession.isRecognizing) {\r\n if (!!this.privRecognizer.sessionStopped) {\r\n this.privRecognizer.sessionStopped(this.privRecognizer, sessionStopEventArgs);\r\n }\r\n return;\r\n } else {\r\n connection = await this.fetchConnection();\r\n await this.sendPrePayloadJSON(connection);\r\n }\r\n break;\r\n\r\n default:\r\n if (!await this.processTypeSpecificMessages(connectionMessage)) {\r\n // here are some messages that the derived class has not processed, dispatch them to connect class\r\n if (!!this.privServiceEvents) {\r\n this.serviceEvents.onEvent(new ServiceEvent(connectionMessage.path.toLowerCase(), connectionMessage.textBody));\r\n }\r\n }\r\n }\r\n }\r\n return this.receiveMessage();\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n private updateSpeakerDiarizationAudioOffset(): void {\r\n const bytesSent: number = this.privRequestSession.recognitionBytesSent;\r\n const audioOffsetMs: number = this.privAverageBytesPerMs !== 0 ? bytesSent / this.privAverageBytesPerMs : 0;\r\n this.privSpeechContext.setSpeakerDiarizationAudioOffsetMs(audioOffsetMs);\r\n }\r\n\r\n protected sendSpeechContext(connection: IConnection, generateNewRequestId: boolean): Promise {\r\n if (this.privEnableSpeakerId) {\r\n this.updateSpeakerDiarizationAudioOffset();\r\n }\r\n const speechContextJson = this.speechContext.toJSON();\r\n if (generateNewRequestId) {\r\n this.privRequestSession.onSpeechContext();\r\n }\r\n\r\n if (speechContextJson) {\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"speech.context\",\r\n this.privRequestSession.requestId,\r\n \"application/json\",\r\n speechContextJson));\r\n }\r\n return;\r\n }\r\n\r\n protected sendPrePayloadJSONOverride: (connection: IConnection) => Promise = undefined;\r\n\r\n protected noOp(): Promise {\r\n // operation not supported\r\n return;\r\n }\r\n\r\n // Encapsulated for derived service recognizers that need to send additional JSON\r\n protected async sendPrePayloadJSON(connection: IConnection, generateNewRequestId: boolean = true): Promise {\r\n if (this.sendPrePayloadJSONOverride !== undefined) {\r\n return this.sendPrePayloadJSONOverride(connection);\r\n }\r\n\r\n await this.sendSpeechContext(connection, generateNewRequestId);\r\n await this.sendWaveHeader(connection);\r\n return;\r\n }\r\n\r\n protected async sendWaveHeader(connection: IConnection): Promise {\r\n const format: AudioStreamFormatImpl = await this.audioSource.format;\r\n // this.writeBufferToConsole(format.header);\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Binary,\r\n \"audio\",\r\n this.privRequestSession.requestId,\r\n \"audio/x-wav\",\r\n format.header\r\n ));\r\n }\r\n\r\n protected postConnectImplOverride: (connection: Promise) => Promise = undefined;\r\n\r\n // Establishes a websocket connection to the end point.\r\n protected connectImpl(): Promise {\r\n if (this.privConnectionPromise !== undefined) {\r\n return this.privConnectionPromise.then((connection: IConnection): Promise => {\r\n if (connection.state() === ConnectionState.Disconnected) {\r\n this.privConnectionId = null;\r\n this.privConnectionPromise = undefined;\r\n this.privServiceHasSentMessage = false;\r\n return this.connectImpl();\r\n }\r\n return this.privConnectionPromise;\r\n }, (): Promise => {\r\n this.privConnectionId = null;\r\n this.privConnectionPromise = undefined;\r\n this.privServiceHasSentMessage = false;\r\n return this.connectImpl();\r\n });\r\n }\r\n\r\n this.privConnectionPromise = this.retryableConnect();\r\n\r\n // Attach an empty handler to allow the promise to run in the background while\r\n // other startup events happen. It'll eventually be awaited on.\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n this.privConnectionPromise.catch((): void => { });\r\n\r\n if (this.postConnectImplOverride !== undefined) {\r\n return this.postConnectImplOverride(this.privConnectionPromise);\r\n }\r\n\r\n return this.privConnectionPromise;\r\n }\r\n\r\n protected configConnectionOverride: (connection: IConnection) => Promise = undefined;\r\n protected handleSpeechPhraseMessage: (textBody: string) => Promise = undefined;\r\n protected handleSpeechHypothesisMessage: (textBody: string) => void = undefined;\r\n\r\n protected sendSpeechServiceConfig(connection: IConnection, requestSession: RequestSession, SpeechServiceConfigJson: string): Promise {\r\n requestSession.onSpeechContext();\r\n // filter out anything that is not required for the service to work.\r\n if (ServiceRecognizerBase.telemetryDataEnabled !== true) {\r\n const withTelemetry: { context: { system: string } } = JSON.parse(SpeechServiceConfigJson) as { context: { system: string } };\r\n\r\n const replacement: any = {\r\n context: {\r\n system: withTelemetry.context.system,\r\n },\r\n };\r\n\r\n SpeechServiceConfigJson = JSON.stringify(replacement);\r\n }\r\n\r\n if (this.privRecognizerConfig.parameters.getProperty(\"f0f5debc-f8c9-4892-ac4b-90a7ab359fd2\", \"false\").toLowerCase() === \"true\") {\r\n const json: { context: { DisableReferenceChannel: string; MicSpec: string } } = JSON.parse(SpeechServiceConfigJson) as { context: { DisableReferenceChannel: string; MicSpec: string } };\r\n json.context.DisableReferenceChannel = \"True\";\r\n json.context.MicSpec = \"1_0_0\";\r\n SpeechServiceConfigJson = JSON.stringify(json);\r\n }\r\n\r\n if (SpeechServiceConfigJson) {\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"speech.config\",\r\n requestSession.requestId,\r\n \"application/json\",\r\n SpeechServiceConfigJson));\r\n }\r\n\r\n return;\r\n }\r\n\r\n protected async fetchConnection(): Promise {\r\n if (this.privConnectionConfigurationPromise !== undefined) {\r\n return this.privConnectionConfigurationPromise.then((connection: IConnection): Promise => {\r\n if (connection.state() === ConnectionState.Disconnected) {\r\n this.privConnectionId = null;\r\n this.privConnectionConfigurationPromise = undefined;\r\n this.privServiceHasSentMessage = false;\r\n return this.fetchConnection();\r\n }\r\n return this.privConnectionConfigurationPromise;\r\n }, (): Promise => {\r\n this.privConnectionId = null;\r\n this.privConnectionConfigurationPromise = undefined;\r\n this.privServiceHasSentMessage = false;\r\n return this.fetchConnection();\r\n });\r\n }\r\n\r\n this.privConnectionConfigurationPromise = this.configureConnection();\r\n return await this.privConnectionConfigurationPromise;\r\n }\r\n\r\n protected async sendAudio(audioStreamNode: IAudioStreamNode): Promise {\r\n const audioFormat: AudioStreamFormatImpl = await this.audioSource.format;\r\n this.privAverageBytesPerMs = audioFormat.avgBytesPerSec / 1000;\r\n // The time we last sent data to the service.\r\n let nextSendTime: number = Date.now();\r\n\r\n // Max amount to send before we start to throttle\r\n const fastLaneSizeMs: string = this.privRecognizerConfig.parameters.getProperty(\"SPEECH-TransmitLengthBeforThrottleMs\", \"5000\");\r\n const maxSendUnthrottledBytes: number = audioFormat.avgBytesPerSec / 1000 * parseInt(fastLaneSizeMs, 10);\r\n const startRecogNumber: number = this.privRequestSession.recogNumber;\r\n\r\n const readAndUploadCycle = async (): Promise => {\r\n // If speech is done, stop sending audio.\r\n if (!this.privIsDisposed &&\r\n !this.privRequestSession.isSpeechEnded &&\r\n this.privRequestSession.isRecognizing &&\r\n this.privRequestSession.recogNumber === startRecogNumber) {\r\n\r\n const connection: IConnection = await this.fetchConnection();\r\n const audioStreamChunk: IStreamChunk = await audioStreamNode.read();\r\n // we have a new audio chunk to upload.\r\n if (this.privRequestSession.isSpeechEnded) {\r\n // If service already recognized audio end then don't send any more audio\r\n return;\r\n }\r\n\r\n let payload: ArrayBuffer;\r\n let sendDelay: number;\r\n\r\n if (!audioStreamChunk || audioStreamChunk.isEnd) {\r\n payload = null;\r\n sendDelay = 0;\r\n } else {\r\n payload = audioStreamChunk.buffer;\r\n\r\n this.privRequestSession.onAudioSent(payload.byteLength);\r\n\r\n if (maxSendUnthrottledBytes >= this.privRequestSession.bytesSent) {\r\n sendDelay = 0;\r\n } else {\r\n sendDelay = Math.max(0, nextSendTime - Date.now());\r\n }\r\n }\r\n\r\n if (0 !== sendDelay) {\r\n await this.delay(sendDelay);\r\n }\r\n\r\n if (payload !== null) {\r\n nextSendTime = Date.now() + (payload.byteLength * 1000 / (audioFormat.avgBytesPerSec * 2));\r\n }\r\n\r\n // Are we still alive?\r\n if (!this.privIsDisposed &&\r\n !this.privRequestSession.isSpeechEnded &&\r\n this.privRequestSession.isRecognizing &&\r\n this.privRequestSession.recogNumber === startRecogNumber) {\r\n connection.send(\r\n new SpeechConnectionMessage(MessageType.Binary, \"audio\", this.privRequestSession.requestId, null, payload)\r\n ).catch((): void => {\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n this.privRequestSession.onServiceTurnEndResponse(this.privRecognizerConfig.isContinuousRecognition).catch((): void => { });\r\n });\r\n\r\n if (!audioStreamChunk?.isEnd) {\r\n // this.writeBufferToConsole(payload);\r\n // Regardless of success or failure, schedule the next upload.\r\n // If the underlying connection was broken, the next cycle will\r\n // get a new connection and re-transmit missing audio automatically.\r\n return readAndUploadCycle();\r\n } else {\r\n // the audio stream has been closed, no need to schedule next\r\n // read-upload cycle.\r\n if (!this.privIsLiveAudio) {\r\n this.privRequestSession.onSpeechEnded();\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n return readAndUploadCycle();\r\n }\r\n\r\n private async retryableConnect(): Promise {\r\n let isUnAuthorized: boolean = false;\r\n\r\n this.privAuthFetchEventId = createNoDashGuid();\r\n const sessionId: string = this.privRequestSession.sessionId;\r\n this.privConnectionId = (sessionId !== undefined) ? sessionId : createNoDashGuid();\r\n\r\n this.privRequestSession.onPreConnectionStart(this.privAuthFetchEventId, this.privConnectionId);\r\n let lastStatusCode: number = 0;\r\n let lastReason: string = \"\";\r\n\r\n while (this.privRequestSession.numConnectionAttempts <= this.privRecognizerConfig.maxRetryCount) {\r\n\r\n // Get the auth information for the connection. This is a bit of overkill for the current API surface, but leaving the plumbing in place to be able to raise a developer-customer\r\n // facing event when a connection fails to let them try and provide new auth information.\r\n const authPromise = isUnAuthorized ? this.privAuthentication.fetchOnExpiry(this.privAuthFetchEventId) : this.privAuthentication.fetch(this.privAuthFetchEventId);\r\n const auth: AuthInfo = await authPromise;\r\n\r\n await this.privRequestSession.onAuthCompleted(false);\r\n\r\n // Create the connection\r\n const connection: IConnection = this.privConnectionFactory.create(this.privRecognizerConfig, auth, this.privConnectionId);\r\n // Attach the telemetry handlers.\r\n this.privRequestSession.listenForServiceTelemetry(connection.events);\r\n\r\n // Attach to the underlying event. No need to hold onto the detach pointers as in the event the connection goes away,\r\n // it'll stop sending events.\r\n connection.events.attach((event: ConnectionEvent): void => {\r\n this.connectionEvents.onEvent(event);\r\n });\r\n\r\n const response: ConnectionOpenResponse = await connection.open();\r\n // 200 == everything is fine.\r\n if (response.statusCode === 200) {\r\n await this.privRequestSession.onConnectionEstablishCompleted(response.statusCode);\r\n return Promise.resolve(connection);\r\n } else if (response.statusCode === 1006) {\r\n isUnAuthorized = true;\r\n }\r\n\r\n lastStatusCode = response.statusCode;\r\n lastReason = response.reason;\r\n\r\n this.privRequestSession.onRetryConnection();\r\n }\r\n\r\n await this.privRequestSession.onConnectionEstablishCompleted(lastStatusCode, lastReason);\r\n return Promise.reject(`Unable to contact server. StatusCode: ${lastStatusCode}, ${this.privRecognizerConfig.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint)} Reason: ${lastReason}`);\r\n }\r\n\r\n private delay(delayMs: number): Promise {\r\n return new Promise((resolve: () => void): number => this.privSetTimeout(resolve, delayMs));\r\n }\r\n\r\n private writeBufferToConsole(buffer: ArrayBuffer): void {\r\n let out: string = \"Buffer Size: \";\r\n if (null === buffer) {\r\n out += \"null\";\r\n } else {\r\n const readView: Uint8Array = new Uint8Array(buffer);\r\n out += `${buffer.byteLength}\\r\\n`;\r\n for (let i: number = 0; i < buffer.byteLength; i++) {\r\n out += readView[i].toString(16).padStart(2, \"0\") + \" \";\r\n if (((i + 1) % 16) === 0) {\r\n // eslint-disable-next-line no-console\r\n console.info(out);\r\n out = \"\";\r\n }\r\n }\r\n }\r\n // eslint-disable-next-line no-console\r\n console.info(out);\r\n }\r\n\r\n private async sendFinalAudio(): Promise {\r\n const connection: IConnection = await this.fetchConnection();\r\n await connection.send(new SpeechConnectionMessage(MessageType.Binary, \"audio\", this.privRequestSession.requestId, null, null));\r\n return;\r\n }\r\n\r\n // Takes an established websocket connection to the endpoint and sends speech configuration information.\r\n private async configureConnection(): Promise {\r\n const connection: IConnection = await this.connectImpl();\r\n if (this.configConnectionOverride !== undefined) {\r\n return this.configConnectionOverride(connection);\r\n }\r\n await this.sendSpeechServiceConfig(connection, this.privRequestSession, this.privRecognizerConfig.SpeechServiceConfig.serialize());\r\n await this.sendPrePayloadJSON(connection, false);\r\n return connection;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {\r\n AudioSourceErrorEvent,\r\n AudioStreamNodeAttachedEvent,\r\n AudioStreamNodeAttachingEvent,\r\n AudioStreamNodeDetachedEvent,\r\n AudioStreamNodeErrorEvent,\r\n ConnectionEstablishedEvent,\r\n ConnectionEstablishErrorEvent,\r\n ConnectionMessageReceivedEvent,\r\n ConnectionStartEvent,\r\n IEventListener,\r\n IStringDictionary,\r\n PlatformEvent,\r\n} from \"../common/Exports.js\";\r\nimport { ConnectingToServiceEvent, RecognitionTriggeredEvent } from \"./RecognitionEvents.js\";\r\n\r\nexport interface ITelemetry {\r\n Metrics: IMetric[];\r\n ReceivedMessages: IStringDictionary;\r\n}\r\n\r\nexport interface IMetric {\r\n End?: string;\r\n Error?: string;\r\n Id?: string;\r\n Name?: string;\r\n Start?: string;\r\n PhraseLatencyMs?: number[];\r\n FirstHypothesisLatencyMs?: number[];\r\n}\r\n\r\nexport class ServiceTelemetryListener implements IEventListener {\r\n private privIsDisposed: boolean = false;\r\n\r\n private privRequestId: string;\r\n private privAudioSourceId: string;\r\n private privAudioNodeId: string;\r\n\r\n private privListeningTriggerMetric: IMetric = null;\r\n private privMicMetric: IMetric = null;\r\n private privConnectionEstablishMetric: IMetric = null;\r\n\r\n private privMicStartTime: string;\r\n\r\n private privConnectionId: string;\r\n private privConnectionStartTime: string;\r\n\r\n private privReceivedMessages: IStringDictionary;\r\n private privPhraseLatencies: number[];\r\n private privHypothesisLatencies: number[];\r\n\r\n public constructor(requestId: string, audioSourceId: string, audioNodeId: string) {\r\n this.privRequestId = requestId;\r\n this.privAudioSourceId = audioSourceId;\r\n this.privAudioNodeId = audioNodeId;\r\n\r\n this.privReceivedMessages = {};\r\n this.privPhraseLatencies = [];\r\n this.privHypothesisLatencies = [];\r\n }\r\n\r\n public phraseReceived(audioReceivedTime: number): void {\r\n if (audioReceivedTime > 0) { // 0 indicates the time is unknown. Drop it.\r\n this.privPhraseLatencies.push(Date.now() - audioReceivedTime);\r\n }\r\n }\r\n\r\n public hypothesisReceived(audioReceivedTime: number): void {\r\n if (audioReceivedTime > 0) { // 0 indicates the time is unknown. Drop it.\r\n this.privHypothesisLatencies.push(Date.now() - audioReceivedTime);\r\n }\r\n }\r\n\r\n public onEvent(e: PlatformEvent): void {\r\n if (this.privIsDisposed) {\r\n return;\r\n }\r\n\r\n if (e instanceof RecognitionTriggeredEvent && e.requestId === this.privRequestId) {\r\n this.privListeningTriggerMetric = {\r\n End: e.eventTime,\r\n Name: \"ListeningTrigger\",\r\n Start: e.eventTime,\r\n };\r\n }\r\n\r\n if (e instanceof AudioStreamNodeAttachingEvent && e.audioSourceId === this.privAudioSourceId && e.audioNodeId === this.privAudioNodeId) {\r\n this.privMicStartTime = e.eventTime;\r\n }\r\n\r\n if (e instanceof AudioStreamNodeAttachedEvent && e.audioSourceId === this.privAudioSourceId && e.audioNodeId === this.privAudioNodeId) {\r\n this.privMicStartTime = e.eventTime;\r\n }\r\n\r\n if (e instanceof AudioSourceErrorEvent && e.audioSourceId === this.privAudioSourceId) {\r\n if (!this.privMicMetric) {\r\n this.privMicMetric = {\r\n End: e.eventTime,\r\n Error: e.error,\r\n Name: \"Microphone\",\r\n Start: this.privMicStartTime,\r\n };\r\n }\r\n }\r\n\r\n if (e instanceof AudioStreamNodeErrorEvent && e.audioSourceId === this.privAudioSourceId && e.audioNodeId === this.privAudioNodeId) {\r\n if (!this.privMicMetric) {\r\n this.privMicMetric = {\r\n End: e.eventTime,\r\n Error: e.error,\r\n Name: \"Microphone\",\r\n Start: this.privMicStartTime,\r\n };\r\n }\r\n }\r\n\r\n if (e instanceof AudioStreamNodeDetachedEvent && e.audioSourceId === this.privAudioSourceId && e.audioNodeId === this.privAudioNodeId) {\r\n if (!this.privMicMetric) {\r\n this.privMicMetric = {\r\n End: e.eventTime,\r\n Name: \"Microphone\",\r\n Start: this.privMicStartTime,\r\n };\r\n }\r\n }\r\n\r\n if (e instanceof ConnectingToServiceEvent && e.requestId === this.privRequestId) {\r\n this.privConnectionId = e.sessionId;\r\n }\r\n\r\n if (e instanceof ConnectionStartEvent && e.connectionId === this.privConnectionId) {\r\n this.privConnectionStartTime = e.eventTime;\r\n }\r\n\r\n if (e instanceof ConnectionEstablishedEvent && e.connectionId === this.privConnectionId) {\r\n if (!this.privConnectionEstablishMetric) {\r\n this.privConnectionEstablishMetric = {\r\n End: e.eventTime,\r\n Id: this.privConnectionId,\r\n Name: \"Connection\",\r\n Start: this.privConnectionStartTime,\r\n };\r\n }\r\n }\r\n\r\n if (e instanceof ConnectionEstablishErrorEvent && e.connectionId === this.privConnectionId) {\r\n if (!this.privConnectionEstablishMetric) {\r\n this.privConnectionEstablishMetric = {\r\n End: e.eventTime,\r\n Error: this.getConnectionError(e.statusCode),\r\n Id: this.privConnectionId,\r\n Name: \"Connection\",\r\n Start: this.privConnectionStartTime,\r\n };\r\n }\r\n }\r\n\r\n if (e instanceof ConnectionMessageReceivedEvent && e.connectionId === this.privConnectionId) {\r\n if (e.message && e.message.headers && e.message.headers.path) {\r\n if (!this.privReceivedMessages[e.message.headers.path]) {\r\n this.privReceivedMessages[e.message.headers.path] = new Array();\r\n }\r\n const maxMessagesToSend = 50;\r\n if (this.privReceivedMessages[e.message.headers.path].length < maxMessagesToSend) {\r\n this.privReceivedMessages[e.message.headers.path].push(e.networkReceivedTime);\r\n }\r\n }\r\n }\r\n }\r\n\r\n public getTelemetry(): string {\r\n const metrics = new Array();\r\n\r\n if (this.privListeningTriggerMetric) {\r\n metrics.push(this.privListeningTriggerMetric);\r\n }\r\n\r\n if (this.privMicMetric) {\r\n metrics.push(this.privMicMetric);\r\n }\r\n\r\n if (this.privConnectionEstablishMetric) {\r\n metrics.push(this.privConnectionEstablishMetric);\r\n }\r\n\r\n if (this.privPhraseLatencies.length > 0) {\r\n metrics.push({\r\n PhraseLatencyMs: this.privPhraseLatencies,\r\n });\r\n }\r\n\r\n if (this.privHypothesisLatencies.length > 0) {\r\n metrics.push({\r\n FirstHypothesisLatencyMs: this.privHypothesisLatencies,\r\n });\r\n }\r\n\r\n const telemetry: ITelemetry = {\r\n Metrics: metrics,\r\n ReceivedMessages: this.privReceivedMessages,\r\n };\r\n\r\n const json = JSON.stringify(telemetry);\r\n\r\n // We dont want to send the same telemetry again. So clean those out.\r\n this.privReceivedMessages = {};\r\n this.privListeningTriggerMetric = null;\r\n this.privMicMetric = null;\r\n this.privConnectionEstablishMetric = null;\r\n this.privPhraseLatencies = [];\r\n this.privHypothesisLatencies = [];\r\n return json;\r\n }\r\n\r\n // Determines if there are any telemetry events to send to the service.\r\n public get hasTelemetry(): boolean {\r\n return (Object.keys(this.privReceivedMessages).length !== 0 ||\r\n this.privListeningTriggerMetric !== null ||\r\n this.privMicMetric !== null ||\r\n this.privConnectionEstablishMetric !== null ||\r\n this.privPhraseLatencies.length !== 0 ||\r\n this.privHypothesisLatencies.length !== 0);\r\n }\r\n\r\n public dispose(): void {\r\n this.privIsDisposed = true;\r\n }\r\n\r\n private getConnectionError(statusCode: number): string {\r\n /*\r\n -- Websocket status codes --\r\n NormalClosure = 1000,\r\n EndpointUnavailable = 1001,\r\n ProtocolError = 1002,\r\n InvalidMessageType = 1003,\r\n Empty = 1005,\r\n InvalidPayloadData = 1007,\r\n PolicyViolation = 1008,\r\n MessageTooBig = 1009,\r\n MandatoryExtension = 1010,\r\n InternalServerError = 1011\r\n */\r\n\r\n switch (statusCode) {\r\n case 400:\r\n case 1002:\r\n case 1003:\r\n case 1005:\r\n case 1007:\r\n case 1008:\r\n case 1009: return \"BadRequest\";\r\n case 401: return \"Unauthorized\";\r\n case 403: return \"Forbidden\";\r\n case 503:\r\n case 1001: return \"ServerUnavailable\";\r\n case 500:\r\n case 1011: return \"ServerError\";\r\n case 408:\r\n case 504: return \"Timeout\";\r\n default: return \"statuscode:\" + statusCode.toString();\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection } from \"../sdk/Exports.js\";\r\nimport { Context } from \"./Exports.js\";\r\n\r\nexport class SpeakerRecognitionConfig {\r\n private privParameters: PropertyCollection;\r\n private privContext: Context;\r\n\r\n public constructor(\r\n context: Context,\r\n parameters: PropertyCollection) {\r\n this.privContext = context ? context : new Context(null);\r\n this.privParameters = parameters;\r\n }\r\n\r\n public get parameters(): PropertyCollection {\r\n return this.privParameters;\r\n }\r\n\r\n public get Context(): Context {\r\n return this.privContext;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {\r\n ProxyInfo,\r\n WebsocketConnection,\r\n} from \"../common.browser/Exports.js\";\r\nimport {\r\n IConnection,\r\n IStringDictionary\r\n} from \"../common/Exports.js\";\r\nimport {\r\n PropertyId\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n ConnectionFactoryBase\r\n} from \"./ConnectionFactoryBase.js\";\r\nimport {\r\n AuthInfo,\r\n RecognizerConfig,\r\n WebsocketMessageFormatter,\r\n} from \"./Exports.js\";\r\nimport { HeaderNames } from \"./HeaderNames.js\";\r\n\r\nclass SpeakerRecognitionConnectionFactoryBase extends ConnectionFactoryBase {\r\n\r\n public create(\r\n config: RecognizerConfig,\r\n authInfo: AuthInfo,\r\n endpointPath: string,\r\n connectionId?: string): IConnection {\r\n\r\n let endpoint: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint);\r\n if (!endpoint) {\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region);\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n const host: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Host, `wss://${region}.spr-frontend.speech${hostSuffix}`);\r\n const scenario: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_SpeakerIdMode, \"TextIndependentIdentification\");\r\n endpoint = `${host}/speaker/ws/${this.scenarioToPath(scenario)}/${endpointPath}`;\r\n }\r\n\r\n const queryParams: IStringDictionary = {\r\n format: \"simple\",\r\n language: config.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage),\r\n };\r\n\r\n this.setCommonUrlParams(config, queryParams, endpoint);\r\n\r\n const headers: IStringDictionary = {};\r\n if (authInfo.token !== undefined && authInfo.token !== \"\") {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n headers[HeaderNames.ConnectionId] = connectionId;\r\n headers[HeaderNames.SpIDAuthKey] = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Key);\r\n\r\n config.parameters.setProperty(PropertyId.SpeechServiceConnection_Url, endpoint);\r\n\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n return new WebsocketConnection(endpoint, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n }\r\n\r\n private scenarioToPath(mode: string): string {\r\n switch (mode) {\r\n case \"TextIndependentVerification\":\r\n case \"2\":\r\n return \"verification/text-independent\";\r\n case \"TextDependentVerification\":\r\n case \"1\":\r\n return \"verification/text-dependent\";\r\n default:\r\n return \"identification/text-independent\";\r\n }\r\n }\r\n}\r\n\r\nexport class SpeakerRecognitionConnectionFactory extends SpeakerRecognitionConnectionFactoryBase {\r\n public create( config: RecognizerConfig, authInfo: AuthInfo, connectionId?: string): IConnection {\r\n return super.create(config, authInfo, \"recognition\", connectionId);\r\n }\r\n}\r\n\r\nexport class VoiceProfileConnectionFactory extends SpeakerRecognitionConnectionFactoryBase {\r\n public create( config: RecognizerConfig, authInfo: AuthInfo, connectionId?: string): IConnection {\r\n return super.create(config, authInfo, \"profile\", connectionId);\r\n }\r\n}\r\n\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ReplayableAudioNode } from \"../common.browser/Exports.js\";\r\nimport {\r\n Deferred,\r\n IAudioSource,\r\n IAudioStreamNode,\r\n IConnection,\r\n MessageType,\r\n} from \"../common/Exports.js\";\r\nimport { AudioStreamFormatImpl } from \"../sdk/Audio/AudioStreamFormat.js\";\r\nimport { SpeakerRecognitionModel } from \"../sdk/SpeakerRecognitionModel.js\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n SpeakerRecognitionResult,\r\n SpeakerRecognizer,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n SessionEventArgs,\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n CancellationErrorCodePropertyName,\r\n ISpeechConfigAudioDevice,\r\n SpeakerResponse,\r\n ServiceRecognizerBase,\r\n} from \"./Exports.js\";\r\nimport { IAuthentication } from \"./IAuthentication.js\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory.js\";\r\nimport { RecognizerConfig } from \"./RecognizerConfig.js\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal.js\";\r\n\r\ninterface SpeakerContext {\r\n scenario: string;\r\n profileIds: string[];\r\n features: {\r\n interimResult: string;\r\n progressiveDetection: string;\r\n };\r\n}\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class SpeakerServiceRecognizer extends ServiceRecognizerBase {\r\n private privSpeakerRecognizer: SpeakerRecognizer;\r\n private privSpeakerAudioSource: IAudioSource;\r\n private privResultDeferral: Deferred;\r\n private privSpeakerModel: SpeakerRecognitionModel;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n recognizer: SpeakerRecognizer) {\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, recognizer);\r\n this.privSpeakerRecognizer = recognizer;\r\n this.privSpeakerAudioSource = audioSource;\r\n this.recognizeSpeaker = (model: SpeakerRecognitionModel): Promise => this.recognizeSpeakerOnce(model);\r\n this.sendPrePayloadJSONOverride = (): Promise => this.noOp();\r\n }\r\n\r\n protected processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n\r\n let processed: boolean = false;\r\n\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n if (connectionMessage.messageType === MessageType.Text) {\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, connectionMessage.textBody);\r\n }\r\n\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"speaker.response\":\r\n const response: SpeakerResponse = JSON.parse(connectionMessage.textBody) as SpeakerResponse;\r\n let result: SpeakerRecognitionResult;\r\n if (response.status.statusCode.toLowerCase() !== \"success\") {\r\n result = new SpeakerRecognitionResult(\r\n response,\r\n ResultReason.Canceled,\r\n CancellationErrorCode.ServiceError,\r\n response.status.reason\r\n );\r\n } else {\r\n result = new SpeakerRecognitionResult(\r\n response,\r\n ResultReason.RecognizedSpeaker,\r\n );\r\n }\r\n if (!!this.privResultDeferral) {\r\n this.privResultDeferral.resolve(result);\r\n }\r\n processed = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n const defferal = new Deferred();\r\n defferal.resolve(processed);\r\n return defferal.promise;\r\n }\r\n\r\n // Cancels recognition.\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n const properties: PropertyCollection = new PropertyCollection();\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n\r\n if (!!this.privResultDeferral) {\r\n const result: SpeakerRecognitionResult = new SpeakerRecognitionResult(\r\n {\r\n scenario: this.privSpeakerModel.scenario,\r\n status: { statusCode: error, reason: error }\r\n },\r\n ResultReason.Canceled,\r\n errorCode,\r\n error\r\n );\r\n try {\r\n this.privResultDeferral.resolve(result);\r\n } catch (error) {\r\n this.privResultDeferral.reject(error as string);\r\n }\r\n }\r\n }\r\n\r\n public async recognizeSpeakerOnce(model: SpeakerRecognitionModel): Promise {\r\n this.privSpeakerModel = model;\r\n this.voiceProfileType = model.scenario;\r\n if (!this.privResultDeferral) {\r\n this.privResultDeferral = new Deferred();\r\n }\r\n this.privRequestSession.startNewRecognition();\r\n this.privRequestSession.listenForServiceTelemetry(this.privSpeakerAudioSource.events);\r\n\r\n this.privRecognizerConfig.parameters.setProperty(PropertyId.Speech_SessionId, this.privRequestSession.sessionId);\r\n\r\n // Start the connection to the service. The promise this will create is stored and will be used by configureConnection().\r\n const conPromise: Promise = this.connectImpl();\r\n\r\n const preAudioPromise: Promise = this.sendPreAudioMessages(this.extractSpeakerContext(model));\r\n\r\n const node: IAudioStreamNode = await this.privSpeakerAudioSource.attach(this.privRequestSession.audioNodeId);\r\n const format: AudioStreamFormatImpl = await this.privSpeakerAudioSource.format;\r\n const deviceInfo: ISpeechConfigAudioDevice = await this.privSpeakerAudioSource.deviceInfo;\r\n\r\n const audioNode = new ReplayableAudioNode(node, format.avgBytesPerSec);\r\n await this.privRequestSession.onAudioSourceAttachCompleted(audioNode, false);\r\n\r\n this.privRecognizerConfig.SpeechServiceConfig.Context.audio = { source: deviceInfo };\r\n\r\n try {\r\n await conPromise;\r\n await preAudioPromise;\r\n } catch (err) {\r\n this.cancelRecognition(this.privRequestSession.sessionId, this.privRequestSession.requestId, CancellationReason.Error, CancellationErrorCode.ConnectionFailure, err as string);\r\n }\r\n\r\n const sessionStartEventArgs: SessionEventArgs = new SessionEventArgs(this.privRequestSession.sessionId);\r\n\r\n if (!!this.privRecognizer.sessionStarted) {\r\n this.privRecognizer.sessionStarted(this.privRecognizer, sessionStartEventArgs);\r\n }\r\n\r\n void this.receiveMessage();\r\n const audioSendPromise = this.sendAudio(audioNode);\r\n\r\n // /* eslint-disable no-empty */\r\n audioSendPromise.then((): void => { /* add? return true;*/ }, (error: string): void => {\r\n this.cancelRecognition(this.privRequestSession.sessionId, this.privRequestSession.requestId, CancellationReason.Error, CancellationErrorCode.RuntimeError, error);\r\n });\r\n\r\n return this.privResultDeferral.promise;\r\n }\r\n\r\n private async sendPreAudioMessages(context: SpeakerContext): Promise {\r\n const connection: IConnection = await this.fetchConnection();\r\n await this.sendSpeakerRecognition(connection, context);\r\n // await this.sendWaveHeader(connection);\r\n }\r\n\r\n private async sendSpeakerRecognition(connection: IConnection, context: SpeakerContext): Promise {\r\n const speakerContextJson = JSON.stringify(context);\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"speaker.context\",\r\n this.privRequestSession.requestId,\r\n \"application/json; charset=utf-8\",\r\n speakerContextJson));\r\n }\r\n\r\n private extractSpeakerContext(model: SpeakerRecognitionModel): SpeakerContext {\r\n return {\r\n features: {\r\n interimResult: \"enabled\",\r\n progressiveDetection: \"disabled\",\r\n },\r\n profileIds: model.profileIds,\r\n scenario: model.scenario,\r\n };\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ProxyInfo,\r\n WebsocketConnection,\r\n} from \"../common.browser/Exports.js\";\r\nimport {\r\n ForceDictationPropertyName,\r\n OutputFormatPropertyName,\r\n} from \"../common.speech/Exports.js\";\r\nimport {\r\n IConnection,\r\n IStringDictionary\r\n} from \"../common/Exports.js\";\r\nimport {\r\n OutputFormat,\r\n PropertyId\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n ConnectionFactoryBase\r\n} from \"./ConnectionFactoryBase.js\";\r\nimport {\r\n AuthInfo,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n WebsocketMessageFormatter\r\n} from \"./Exports.js\";\r\nimport { HeaderNames } from \"./HeaderNames.js\";\r\nimport {\r\n QueryParameterNames\r\n} from \"./QueryParameterNames.js\";\r\n\r\nexport class SpeechConnectionFactory extends ConnectionFactoryBase {\r\n\r\n private readonly interactiveRelativeUri: string = \"/speech/recognition/interactive/cognitiveservices/v1\";\r\n private readonly conversationRelativeUri: string = \"/speech/recognition/conversation/cognitiveservices/v1\";\r\n private readonly dictationRelativeUri: string = \"/speech/recognition/dictation/cognitiveservices/v1\";\r\n private readonly universalUri: string = \"/speech/universal/v\";\r\n\r\n public create(\r\n config: RecognizerConfig,\r\n authInfo: AuthInfo,\r\n connectionId?: string): IConnection {\r\n\r\n let endpoint: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint, undefined);\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region, undefined);\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n const host: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Host, \"wss://\" + region + \".stt.speech\" + hostSuffix);\r\n const queryParams: IStringDictionary = {};\r\n const endpointId: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_EndpointId, undefined);\r\n const language: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage, undefined);\r\n\r\n if (endpointId) {\r\n if (!endpoint || endpoint.search(QueryParameterNames.CustomSpeechDeploymentId) === -1) {\r\n queryParams[QueryParameterNames.CustomSpeechDeploymentId] = endpointId;\r\n }\r\n } else if (language) {\r\n if (!endpoint || endpoint.search(QueryParameterNames.Language) === -1) {\r\n queryParams[QueryParameterNames.Language] = language;\r\n }\r\n }\r\n\r\n if (!endpoint || endpoint.search(QueryParameterNames.Format) === -1) {\r\n queryParams[QueryParameterNames.Format] = config.parameters.getProperty(OutputFormatPropertyName, OutputFormat[OutputFormat.Simple]).toLowerCase();\r\n }\r\n\r\n if (config.autoDetectSourceLanguages !== undefined) {\r\n queryParams[QueryParameterNames.EnableLanguageId] = \"true\";\r\n }\r\n\r\n this.setCommonUrlParams(config, queryParams, endpoint);\r\n\r\n if (!endpoint) {\r\n switch (config.recognitionMode) {\r\n case RecognitionMode.Conversation:\r\n if (config.parameters.getProperty(ForceDictationPropertyName, \"false\") === \"true\") {\r\n endpoint = host + this.dictationRelativeUri;\r\n } else {\r\n if (config.recognitionEndpointVersion !== undefined && parseInt(config.recognitionEndpointVersion, 10) > 1) {\r\n endpoint = `${host}${this.universalUri}${config.recognitionEndpointVersion}`;\r\n } else {\r\n endpoint = host + this.conversationRelativeUri;\r\n }\r\n }\r\n break;\r\n case RecognitionMode.Dictation:\r\n endpoint = host + this.dictationRelativeUri;\r\n break;\r\n default:\r\n if (config.recognitionEndpointVersion !== undefined && parseInt(config.recognitionEndpointVersion, 10) > 1) {\r\n endpoint = `${host}${this.universalUri}${config.recognitionEndpointVersion}`;\r\n } else {\r\n endpoint = host + this.interactiveRelativeUri; // default is interactive\r\n }\r\n break;\r\n }\r\n }\r\n\r\n const headers: IStringDictionary = {};\r\n if (authInfo.token !== undefined && authInfo.token !== \"\") {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n headers[HeaderNames.ConnectionId] = connectionId;\r\n\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n\r\n const webSocketConnection = new WebsocketConnection(endpoint, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n\r\n // Set the value of SpeechServiceConnection_Url to webSocketConnection.uri (and not to `endpoint`), since this value is the final\r\n // URI that was used to make the connection (including query parameters).\r\n const uri: string = webSocketConnection.uri;\r\n config.parameters.setProperty(PropertyId.SpeechServiceConnection_Url, uri);\r\n\r\n return webSocketConnection;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ArgumentNullError, ConnectionMessage, IStringDictionary, MessageType } from \"../common/Exports.js\";\r\nimport { HeaderNames } from \"./HeaderNames.js\";\r\n\r\nexport class SpeechConnectionMessage extends ConnectionMessage {\r\n\r\n private privPath: string;\r\n private privRequestId: string;\r\n private privContentType: string;\r\n private privStreamId: string;\r\n private privAdditionalHeaders: IStringDictionary;\r\n\r\n public constructor(\r\n messageType: MessageType,\r\n path: string,\r\n requestId: string,\r\n contentType: string,\r\n body: any,\r\n streamId?: string,\r\n additionalHeaders?: IStringDictionary,\r\n id?: string) {\r\n\r\n if (!path) {\r\n throw new ArgumentNullError(\"path\");\r\n }\r\n\r\n if (!requestId) {\r\n throw new ArgumentNullError(\"requestId\");\r\n }\r\n\r\n const headers: IStringDictionary = {};\r\n headers[HeaderNames.Path] = path;\r\n headers[HeaderNames.RequestId] = requestId;\r\n headers[HeaderNames.RequestTimestamp] = new Date().toISOString();\r\n if (contentType) {\r\n headers[HeaderNames.ContentType] = contentType;\r\n }\r\n\r\n if (streamId) {\r\n headers[HeaderNames.RequestStreamId] = streamId;\r\n }\r\n\r\n if (additionalHeaders) {\r\n for (const headerName in additionalHeaders) {\r\n if (headerName) {\r\n headers[headerName] = additionalHeaders[headerName];\r\n }\r\n\r\n }\r\n }\r\n\r\n if (id) {\r\n super(messageType, body, headers, id);\r\n } else {\r\n super(messageType, body, headers);\r\n }\r\n\r\n this.privPath = path;\r\n this.privRequestId = requestId;\r\n this.privContentType = contentType;\r\n this.privStreamId = streamId;\r\n this.privAdditionalHeaders = additionalHeaders;\r\n }\r\n\r\n public get path(): string {\r\n return this.privPath;\r\n }\r\n\r\n public get requestId(): string {\r\n return this.privRequestId;\r\n }\r\n\r\n public get contentType(): string {\r\n return this.privContentType;\r\n }\r\n\r\n public get streamId(): string {\r\n return this.privStreamId;\r\n }\r\n\r\n public get additionalHeaders(): IStringDictionary {\r\n return this.privAdditionalHeaders;\r\n }\r\n\r\n public static fromConnectionMessage(message: ConnectionMessage): SpeechConnectionMessage {\r\n let path = null;\r\n let requestId = null;\r\n let contentType = null;\r\n // let requestTimestamp = null;\r\n let streamId = null;\r\n const additionalHeaders: IStringDictionary = {};\r\n\r\n if (message.headers) {\r\n for (const headerName in message.headers) {\r\n if (headerName) {\r\n if (headerName.toLowerCase() === HeaderNames.Path.toLowerCase()) {\r\n path = message.headers[headerName];\r\n } else if (headerName.toLowerCase() === HeaderNames.RequestId.toLowerCase()) {\r\n requestId = message.headers[headerName];\r\n // } else if (headerName.toLowerCase() === HeaderNames.RequestTimestamp.toLowerCase()) {\r\n // requestTimestamp = message.headers[headerName];\r\n } else if (headerName.toLowerCase() === HeaderNames.ContentType.toLowerCase()) {\r\n contentType = message.headers[headerName];\r\n } else if (headerName.toLowerCase() === HeaderNames.RequestStreamId.toLowerCase()) {\r\n streamId = message.headers[headerName];\r\n } else {\r\n additionalHeaders[headerName] = message.headers[headerName];\r\n }\r\n }\r\n }\r\n }\r\n\r\n return new SpeechConnectionMessage(\r\n message.messageType,\r\n path,\r\n requestId,\r\n contentType,\r\n message.body,\r\n streamId,\r\n additionalHeaders,\r\n message.id);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n DynamicGrammarBuilder,\r\n IDynamicGrammar,\r\n} from \"./Exports.js\";\r\n\r\ninterface Context {\r\n [section: string]: any;\r\n}\r\n\r\ninterface PhraseContext {\r\n [section: string]: any;\r\n phraseDetection?: {\r\n enrichment?: {\r\n pronunciationAssessment: any;\r\n contentAssessment?: {\r\n topic: string;\r\n };\r\n };\r\n speakerDiarization?: {\r\n mode?: string;\r\n audioSessionId?: string;\r\n audioOffsetMs?: number;\r\n identityProvider?: string;\r\n };\r\n mode?: string;\r\n };\r\n phraseOutput?: {\r\n detailed?: {\r\n options?: string[];\r\n };\r\n format?: any;\r\n };\r\n}\r\n\r\n/**\r\n * Represents the JSON used in the speech.context message sent to the speech service.\r\n * The dynamic grammar is always refreshed from the encapsulated dynamic grammar object.\r\n */\r\nexport class SpeechContext {\r\n private privContext: PhraseContext = {};\r\n private privDynamicGrammar: DynamicGrammarBuilder;\r\n\r\n public constructor(dynamicGrammar: DynamicGrammarBuilder) {\r\n this.privDynamicGrammar = dynamicGrammar;\r\n }\r\n\r\n /**\r\n * Gets a section of the speech.context object.\r\n * @param sectionName Name of the section to get.\r\n * @return string or Context JSON serializable object that represents the value.\r\n */\r\n public getSection(sectionName: string): string | Context {\r\n return (this.privContext[sectionName] || {}) as string | Context;\r\n }\r\n\r\n /**\r\n * Adds a section to the speech.context object.\r\n * @param sectionName Name of the section to add.\r\n * @param value JSON serializable object that represents the value.\r\n */\r\n public setSection(sectionName: string, value: string | Context): void {\r\n this.privContext[sectionName] = value;\r\n }\r\n\r\n /**\r\n * @Internal\r\n * This is only used by pronunciation assessment config.\r\n * Do not use externally, object returned will change without warning or notice.\r\n */\r\n public setPronunciationAssessmentParams(params: string,\r\n contentAssessmentTopic: string,\r\n isSpeakerDiarizationEnabled: boolean = false): void {\r\n if (this.privContext.phraseDetection === undefined) {\r\n this.privContext.phraseDetection = {\r\n enrichment: {\r\n pronunciationAssessment: {}\r\n }\r\n };\r\n }\r\n if (this.privContext.phraseDetection.enrichment === undefined) {\r\n this.privContext.phraseDetection.enrichment = {\r\n pronunciationAssessment: {}\r\n };\r\n }\r\n this.privContext.phraseDetection.enrichment.pronunciationAssessment = JSON.parse(params) as Context;\r\n if (isSpeakerDiarizationEnabled) {\r\n this.privContext.phraseDetection.mode = \"Conversation\";\r\n }\r\n this.setWordLevelTimings();\r\n this.privContext.phraseOutput.detailed.options.push(\"PronunciationAssessment\");\r\n if (this.privContext.phraseOutput.detailed.options.indexOf(\"SNR\") === -1) {\r\n this.privContext.phraseOutput.detailed.options.push(\"SNR\");\r\n }\r\n if (!!contentAssessmentTopic) {\r\n this.privContext.phraseDetection.enrichment.contentAssessment = {\r\n topic: contentAssessmentTopic\r\n };\r\n this.privContext.phraseOutput.detailed.options.push(\"ContentAssessment\");\r\n }\r\n }\r\n\r\n public setDetailedOutputFormat(): void {\r\n if (this.privContext.phraseOutput === undefined) {\r\n this.privContext.phraseOutput = {\r\n detailed: {\r\n options: []\r\n },\r\n format: {}\r\n };\r\n }\r\n if (this.privContext.phraseOutput.detailed === undefined) {\r\n this.privContext.phraseOutput.detailed = {\r\n options: []\r\n };\r\n }\r\n this.privContext.phraseOutput.format = \"Detailed\";\r\n }\r\n\r\n public setWordLevelTimings(): void {\r\n if (this.privContext.phraseOutput === undefined) {\r\n this.privContext.phraseOutput = {\r\n detailed: {\r\n options: []\r\n },\r\n format: {}\r\n };\r\n }\r\n if (this.privContext.phraseOutput.detailed === undefined) {\r\n this.privContext.phraseOutput.detailed = {\r\n options: []\r\n };\r\n }\r\n this.privContext.phraseOutput.format = \"Detailed\";\r\n if (this.privContext.phraseOutput.detailed.options.indexOf(\"WordTimings\") === -1) {\r\n this.privContext.phraseOutput.detailed.options.push(\"WordTimings\");\r\n }\r\n }\r\n\r\n public setSpeakerDiarizationAudioOffsetMs(audioOffsetMs: number): void {\r\n this.privContext.phraseDetection.speakerDiarization.audioOffsetMs = audioOffsetMs;\r\n }\r\n\r\n public toJSON(): string {\r\n\r\n const dgi: IDynamicGrammar = this.privDynamicGrammar.generateGrammarObject();\r\n this.setSection(\"dgi\", dgi);\r\n\r\n const ret: string = JSON.stringify(this.privContext);\r\n return ret;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\n// The config is serialized and sent as the Speech.Config\r\nexport class SpeechServiceConfig {\r\n private context: Context;\r\n private recognition: string;\r\n\r\n public constructor(context: Context) {\r\n this.context = context;\r\n }\r\n\r\n public serialize(): string {\r\n return JSON.stringify(this, (key: any, value: { [k: string]: any }): any => {\r\n if (value && typeof value === \"object\" && !Array.isArray(value)) {\r\n const replacement: { [k: string ]: any } = {};\r\n for (const k in value) {\r\n if (Object.hasOwnProperty.call(value, k)) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n replacement[k && k.charAt(0).toLowerCase() + k.substring(1)] = value[k];\r\n }\r\n }\r\n return replacement;\r\n }\r\n return value;\r\n });\r\n }\r\n\r\n public get Context(): Context {\r\n return this.context;\r\n }\r\n\r\n public get Recognition(): string {\r\n return this.recognition;\r\n }\r\n\r\n public set Recognition(value: string) {\r\n this.recognition = value.toLowerCase();\r\n }\r\n}\r\n\r\nexport class Context {\r\n public system: System;\r\n public os: OS;\r\n public audio: ISpeechConfigAudio;\r\n public synthesis: {\r\n video: ISynthesisSectionVideo;\r\n };\r\n\r\n public constructor(os: OS) {\r\n this.system = new System();\r\n this.os = os;\r\n }\r\n}\r\n\r\nexport class System {\r\n public name: string;\r\n public version: string;\r\n public build: string;\r\n public lang: string;\r\n\r\n public constructor() {\r\n // Note: below will be patched for official builds.\r\n const SPEECHSDK_CLIENTSDK_VERSION = \"1.41.0\";\r\n\r\n this.name = \"SpeechSDK\";\r\n this.version = SPEECHSDK_CLIENTSDK_VERSION;\r\n this.build = \"JavaScript\";\r\n this.lang = \"JavaScript\";\r\n }\r\n}\r\n\r\nexport class OS {\r\n public platform: string;\r\n public name: string;\r\n public version: string;\r\n\r\n public constructor(platform: string, name: string, version: string) {\r\n this.platform = platform;\r\n this.name = name;\r\n this.version = version;\r\n }\r\n}\r\n\r\nexport class Device {\r\n public manufacturer: string;\r\n public model: string;\r\n public version: string;\r\n\r\n public constructor(manufacturer: string, model: string, version: string) {\r\n this.manufacturer = manufacturer;\r\n this.model = model;\r\n this.version = version;\r\n }\r\n}\r\n\r\nexport interface ISpeechConfigAudio {\r\n source?: ISpeechConfigAudioDevice;\r\n playback?: ISpeechConfigAudioDevice;\r\n}\r\n\r\nexport interface ISpeechConfigAudioDevice {\r\n manufacturer: string;\r\n model: string;\r\n connectivity: connectivity;\r\n type: type;\r\n samplerate: number;\r\n bitspersample: number;\r\n channelcount: number;\r\n}\r\n\r\nexport enum connectivity {\r\n Bluetooth = \"Bluetooth\",\r\n Wired = \"Wired\",\r\n WiFi = \"WiFi\",\r\n Cellular = \"Cellular\",\r\n InBuilt = \"InBuilt\",\r\n Unknown = \"Unknown\",\r\n}\r\n\r\nexport enum type {\r\n Phone = \"Phone\",\r\n Speaker = \"Speaker\",\r\n Car = \"Car\",\r\n Headset = \"Headset\",\r\n Thermostat = \"Thermostat\",\r\n Microphones = \"Microphones\",\r\n Deskphone = \"Deskphone\",\r\n RemoteControl = \"RemoteControl\",\r\n Unknown = \"Unknown\",\r\n File = \"File\",\r\n Stream = \"Stream\",\r\n}\r\n\r\nexport interface ICoordinate {\r\n x: number;\r\n y: number;\r\n}\r\n\r\n// For avatar synthesis\r\nexport interface ISynthesisSectionVideo {\r\n protocol: {\r\n name: string;\r\n webrtcConfig: {\r\n clientDescription: string;\r\n iceServers: {\r\n urls: string[];\r\n username: string;\r\n credential: string;\r\n }[];\r\n };\r\n };\r\n format: {\r\n bitrate: number;\r\n codec: string;\r\n crop: {\r\n topLeft: ICoordinate;\r\n bottomRight: ICoordinate;\r\n };\r\n resolution: {\r\n width: number;\r\n height: number;\r\n };\r\n };\r\n talkingAvatar: {\r\n character: string;\r\n customized: boolean;\r\n style: string;\r\n background: {\r\n color: string;\r\n };\r\n };\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IAudioSource } from \"../common/Exports.js\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n OutputFormat,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n SpeechRecognitionCanceledEventArgs,\r\n SpeechRecognitionEventArgs,\r\n SpeechRecognitionResult,\r\n SpeechRecognizer,\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n CancellationErrorCodePropertyName,\r\n DetailedSpeechPhrase,\r\n EnumTranslation,\r\n OutputFormatPropertyName,\r\n RecognitionStatus,\r\n ServiceRecognizerBase,\r\n SimpleSpeechPhrase,\r\n SpeechHypothesis,\r\n} from \"./Exports.js\";\r\nimport { IAuthentication } from \"./IAuthentication.js\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory.js\";\r\nimport { RecognizerConfig } from \"./RecognizerConfig.js\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal.js\";\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class SpeechServiceRecognizer extends ServiceRecognizerBase {\r\n\r\n private privSpeechRecognizer: SpeechRecognizer;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n speechRecognizer: SpeechRecognizer) {\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, speechRecognizer);\r\n this.privSpeechRecognizer = speechRecognizer;\r\n\r\n }\r\n\r\n protected async processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n\r\n let result: SpeechRecognitionResult;\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, connectionMessage.textBody);\r\n let processed: boolean = false;\r\n\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"speech.hypothesis\":\r\n case \"speech.fragment\":\r\n const hypothesis: SpeechHypothesis = SpeechHypothesis.fromJSON(connectionMessage.textBody);\r\n const offset: number = hypothesis.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n\r\n result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n ResultReason.RecognizingSpeech,\r\n hypothesis.Text,\r\n hypothesis.Duration,\r\n offset,\r\n hypothesis.Language,\r\n hypothesis.LanguageDetectionConfidence,\r\n undefined, // Speaker Id\r\n undefined,\r\n connectionMessage.textBody,\r\n resultProps);\r\n\r\n this.privRequestSession.onHypothesis(offset);\r\n\r\n const ev = new SpeechRecognitionEventArgs(result, hypothesis.Duration, this.privRequestSession.sessionId);\r\n\r\n if (!!this.privSpeechRecognizer.recognizing) {\r\n try {\r\n this.privSpeechRecognizer.recognizing(this.privSpeechRecognizer, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n processed = true;\r\n break;\r\n case \"speech.phrase\":\r\n const simple: SimpleSpeechPhrase = SimpleSpeechPhrase.fromJSON(connectionMessage.textBody);\r\n const resultReason: ResultReason = EnumTranslation.implTranslateRecognitionResult(simple.RecognitionStatus, this.privExpectContentAssessmentResponse);\r\n\r\n this.privRequestSession.onPhraseRecognized(this.privRequestSession.currentTurnAudioOffset + simple.Offset + simple.Duration);\r\n\r\n if (ResultReason.Canceled === resultReason) {\r\n const cancelReason: CancellationReason = EnumTranslation.implTranslateCancelResult(simple.RecognitionStatus);\r\n const cancellationErrorCode: CancellationErrorCode = EnumTranslation.implTranslateCancelErrorCode(simple.RecognitionStatus);\r\n\r\n await this.cancelRecognitionLocal(\r\n cancelReason,\r\n cancellationErrorCode,\r\n EnumTranslation.implTranslateErrorDetails(cancellationErrorCode));\r\n\r\n } else {\r\n if (!(this.privRequestSession.isSpeechEnded && resultReason === ResultReason.NoMatch && simple.RecognitionStatus !== RecognitionStatus.InitialSilenceTimeout)) {\r\n if (this.privRecognizerConfig.parameters.getProperty(OutputFormatPropertyName) === OutputFormat[OutputFormat.Simple]) {\r\n result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n resultReason,\r\n simple.DisplayText,\r\n simple.Duration,\r\n simple.Offset + this.privRequestSession.currentTurnAudioOffset,\r\n simple.Language,\r\n simple.LanguageDetectionConfidence,\r\n undefined, // Speaker Id\r\n undefined,\r\n connectionMessage.textBody,\r\n resultProps);\r\n } else {\r\n const detailed: DetailedSpeechPhrase = DetailedSpeechPhrase.fromJSON(connectionMessage.textBody);\r\n const totalOffset: number = detailed.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n const offsetCorrectedJson: string = detailed.getJsonWithCorrectedOffsets(totalOffset);\r\n\r\n result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n resultReason,\r\n detailed.RecognitionStatus === RecognitionStatus.Success ? detailed.NBest[0].Display : undefined,\r\n detailed.Duration,\r\n totalOffset,\r\n detailed.Language,\r\n detailed.LanguageDetectionConfidence,\r\n undefined, // Speaker Id\r\n undefined,\r\n offsetCorrectedJson,\r\n resultProps);\r\n }\r\n\r\n const event: SpeechRecognitionEventArgs = new SpeechRecognitionEventArgs(result, result.offset, this.privRequestSession.sessionId);\r\n\r\n if (!!this.privSpeechRecognizer.recognized) {\r\n try {\r\n this.privSpeechRecognizer.recognized(this.privSpeechRecognizer, event);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n }\r\n\r\n if (!!this.privSuccessCallback) {\r\n try {\r\n this.privSuccessCallback(result);\r\n } catch (e) {\r\n if (!!this.privErrorCallback) {\r\n this.privErrorCallback(e as string);\r\n }\r\n }\r\n // Only invoke the call back once.\r\n // and if it's successful don't invoke the\r\n // error after that.\r\n this.privSuccessCallback = undefined;\r\n this.privErrorCallback = undefined;\r\n }\r\n }\r\n processed = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n return processed;\r\n }\r\n\r\n // Cancels recognition.\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n const properties: PropertyCollection = new PropertyCollection();\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n\r\n if (!!this.privSpeechRecognizer.canceled) {\r\n const cancelEvent: SpeechRecognitionCanceledEventArgs = new SpeechRecognitionCanceledEventArgs(\r\n cancellationReason,\r\n error,\r\n errorCode,\r\n undefined,\r\n sessionId);\r\n try {\r\n this.privSpeechRecognizer.canceled(this.privSpeechRecognizer, cancelEvent);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n\r\n if (!!this.privSuccessCallback) {\r\n const result: SpeechRecognitionResult = new SpeechRecognitionResult(\r\n requestId,\r\n ResultReason.Canceled,\r\n undefined, // Text\r\n undefined, // Duration\r\n undefined, // Offset\r\n undefined, // Language\r\n undefined, // Language Detection Confidence\r\n undefined, // Speaker Id\r\n error,\r\n undefined, // Json\r\n properties);\r\n try {\r\n this.privSuccessCallback(result);\r\n this.privSuccessCallback = undefined;\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IAudioDestination } from \"../common/Exports.js\";\r\nimport {\r\n ResultReason,\r\n SpeechSynthesisBookmarkEventArgs,\r\n SpeechSynthesisEventArgs,\r\n SpeechSynthesisResult,\r\n SpeechSynthesisVisemeEventArgs,\r\n SpeechSynthesisWordBoundaryEventArgs,\r\n SpeechSynthesizer,\r\n Synthesizer,\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n IAuthentication,\r\n ISynthesisConnectionFactory,\r\n SynthesisAdapterBase,\r\n SynthesizerConfig\r\n} from \"./Exports.js\";\r\n\r\nexport class SpeechSynthesisAdapter extends SynthesisAdapterBase {\r\n private privSpeechSynthesizer: SpeechSynthesizer;\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: ISynthesisConnectionFactory,\r\n synthesizerConfig: SynthesizerConfig,\r\n speechSynthesizer: SpeechSynthesizer,\r\n audioDestination: IAudioDestination) {\r\n super(authentication, connectionFactory, synthesizerConfig, audioDestination);\r\n this.privSpeechSynthesizer = speechSynthesizer;\r\n this.privSynthesizer = speechSynthesizer as Synthesizer;\r\n }\r\n\r\n protected setSynthesisContextSynthesisSection(): void {\r\n this.privSynthesisContext.setSynthesisSection(this.privSpeechSynthesizer);\r\n }\r\n\r\n protected onSynthesisStarted(requestId: string): void {\r\n const synthesisStartEventArgs: SpeechSynthesisEventArgs = new SpeechSynthesisEventArgs(\r\n new SpeechSynthesisResult(\r\n requestId,\r\n ResultReason.SynthesizingAudioStarted,\r\n )\r\n );\r\n\r\n if (!!this.privSpeechSynthesizer.synthesisStarted) {\r\n this.privSpeechSynthesizer.synthesisStarted(this.privSpeechSynthesizer, synthesisStartEventArgs);\r\n }\r\n }\r\n\r\n protected onSynthesizing(audio: ArrayBuffer): void {\r\n if (!!this.privSpeechSynthesizer.synthesizing) {\r\n try {\r\n const audioWithHeader = this.privSynthesisTurn.audioOutputFormat.addHeader(audio);\r\n const ev: SpeechSynthesisEventArgs = new SpeechSynthesisEventArgs(\r\n new SpeechSynthesisResult(\r\n this.privSynthesisTurn.requestId,\r\n ResultReason.SynthesizingAudio,\r\n audioWithHeader));\r\n this.privSpeechSynthesizer.synthesizing(this.privSpeechSynthesizer, ev);\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n }\r\n\r\n protected onSynthesisCancelled(result: SpeechSynthesisResult): void {\r\n if (!!this.privSpeechSynthesizer.SynthesisCanceled) {\r\n const cancelEvent: SpeechSynthesisEventArgs = new SpeechSynthesisEventArgs(result);\r\n try {\r\n this.privSpeechSynthesizer.SynthesisCanceled(this.privSpeechSynthesizer, cancelEvent);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n }\r\n\r\n protected onSynthesisCompleted(result: SpeechSynthesisResult): void {\r\n if (this.privSpeechSynthesizer.synthesisCompleted) {\r\n try {\r\n this.privSpeechSynthesizer.synthesisCompleted(\r\n this.privSpeechSynthesizer,\r\n new SpeechSynthesisEventArgs(result)\r\n );\r\n } catch (e) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n }\r\n\r\n protected onWordBoundary(wordBoundaryEventArgs: SpeechSynthesisWordBoundaryEventArgs): void {\r\n if (!!this.privSpeechSynthesizer.wordBoundary) {\r\n try {\r\n this.privSpeechSynthesizer.wordBoundary(this.privSpeechSynthesizer, wordBoundaryEventArgs);\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n }\r\n\r\n protected onVisemeReceived(visemeEventArgs: SpeechSynthesisVisemeEventArgs): void {\r\n if (!!this.privSpeechSynthesizer.visemeReceived) {\r\n try {\r\n this.privSpeechSynthesizer.visemeReceived(this.privSpeechSynthesizer, visemeEventArgs);\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n }\r\n\r\n protected onBookmarkReached(bookmarkEventArgs: SpeechSynthesisBookmarkEventArgs): void {\r\n if (!!this.privSpeechSynthesizer.bookmarkReached) {\r\n try {\r\n this.privSpeechSynthesizer.bookmarkReached(this.privSpeechSynthesizer, bookmarkEventArgs);\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ProxyInfo,\r\n WebsocketConnection\r\n} from \"../common.browser/Exports.js\";\r\nimport {\r\n IConnection,\r\n IStringDictionary\r\n} from \"../common/Exports.js\";\r\nimport { PropertyId } from \"../sdk/Exports.js\";\r\nimport { ConnectionFactoryBase } from \"./ConnectionFactoryBase.js\";\r\nimport {\r\n AuthInfo,\r\n SynthesizerConfig,\r\n WebsocketMessageFormatter\r\n} from \"./Exports.js\";\r\nimport { HeaderNames } from \"./HeaderNames.js\";\r\nimport { ISynthesisConnectionFactory } from \"./ISynthesisConnectionFactory.js\";\r\nimport {\r\n QueryParameterNames\r\n} from \"./QueryParameterNames.js\";\r\n\r\nexport class SpeechSynthesisConnectionFactory implements ISynthesisConnectionFactory {\r\n\r\n private readonly synthesisUri: string = \"/cognitiveservices/websocket/v1\";\r\n\r\n public create(\r\n config: SynthesizerConfig,\r\n authInfo: AuthInfo,\r\n connectionId?: string): IConnection {\r\n\r\n let endpoint: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint, undefined);\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region, undefined);\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n const endpointId = config.parameters.getProperty(PropertyId.SpeechServiceConnection_EndpointId, undefined);\r\n const hostPrefix = (endpointId === undefined) ? \"tts\" : \"voice\";\r\n const host: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Host, \"wss://\" + region + \".\" + hostPrefix + \".speech\" + hostSuffix);\r\n\r\n const queryParams: IStringDictionary = {};\r\n const headers: IStringDictionary = {};\r\n\r\n if (authInfo.token !== undefined && authInfo.token !== \"\") {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n headers[HeaderNames.ConnectionId] = connectionId;\r\n if (endpointId !== undefined && endpointId !== \"\") {\r\n if (!endpoint || endpoint.search(QueryParameterNames.CustomVoiceDeploymentId) === -1) {\r\n queryParams[QueryParameterNames.CustomVoiceDeploymentId] = endpointId;\r\n }\r\n }\r\n\r\n if (config.avatarEnabled) {\r\n if (!endpoint || endpoint.search(QueryParameterNames.EnableAvatar) === -1) {\r\n queryParams[QueryParameterNames.EnableAvatar] = \"true\";\r\n }\r\n }\r\n\r\n if (!endpoint) {\r\n endpoint = host + this.synthesisUri;\r\n }\r\n\r\n config.parameters.setProperty(PropertyId.SpeechServiceConnection_Url, endpoint);\r\n\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n return new WebsocketConnection(endpoint, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromParameters(config.parameters), enableCompression, connectionId);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ArgumentNullError,\r\n ConnectionClosedEvent,\r\n ConnectionEvent,\r\n ConnectionMessage,\r\n ConnectionState,\r\n createNoDashGuid,\r\n EventSource,\r\n IAudioDestination,\r\n IConnection,\r\n IDisposable,\r\n MessageType,\r\n ServiceEvent,\r\n} from \"../common/Exports.js\";\r\nimport { AudioOutputFormatImpl } from \"../sdk/Audio/AudioOutputFormat.js\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n SpeechSynthesisBookmarkEventArgs,\r\n SpeechSynthesisResult,\r\n SpeechSynthesisVisemeEventArgs,\r\n SpeechSynthesisWordBoundaryEventArgs,\r\n Synthesizer,\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n AgentConfig,\r\n CancellationErrorCodePropertyName,\r\n ISynthesisConnectionFactory,\r\n ISynthesisMetadata,\r\n MetadataType,\r\n SynthesisAudioMetadata,\r\n SynthesisContext,\r\n SynthesisTurn,\r\n SynthesizerConfig\r\n} from \"./Exports.js\";\r\nimport { AuthInfo, IAuthentication } from \"./IAuthentication.js\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal.js\";\r\n\r\nexport abstract class SynthesisAdapterBase implements IDisposable {\r\n protected privSynthesisTurn: SynthesisTurn;\r\n protected privConnectionId: string;\r\n protected privSynthesizerConfig: SynthesizerConfig;\r\n protected privSynthesizer: Synthesizer;\r\n protected privSuccessCallback: (e: SpeechSynthesisResult) => void;\r\n protected privErrorCallback: (e: string) => void;\r\n\r\n public get synthesisContext(): SynthesisContext {\r\n return this.privSynthesisContext;\r\n }\r\n\r\n public get agentConfig(): AgentConfig {\r\n return this.privAgentConfig;\r\n }\r\n\r\n public get connectionEvents(): EventSource {\r\n return this.privConnectionEvents;\r\n }\r\n\r\n public get serviceEvents(): EventSource {\r\n return this.privServiceEvents;\r\n }\r\n\r\n protected speakOverride: (ssml: string, requestId: string, sc: (e: SpeechSynthesisResult) => void, ec: (e: string) => void) => void = undefined;\r\n\r\n // Called when telemetry data is sent to the service.\r\n // Used for testing Telemetry capture.\r\n public static telemetryData: (json: string) => void;\r\n public static telemetryDataEnabled: boolean = true;\r\n\r\n public set activityTemplate(messagePayload: string) {\r\n this.privActivityTemplate = messagePayload;\r\n }\r\n public get activityTemplate(): string {\r\n return this.privActivityTemplate;\r\n }\r\n\r\n protected receiveMessageOverride: () => void = undefined;\r\n\r\n protected connectImplOverride: (isUnAuthorized: boolean) => void = undefined;\r\n\r\n protected configConnectionOverride: (connection: IConnection) => Promise = undefined;\r\n\r\n public set audioOutputFormat(format: AudioOutputFormatImpl) {\r\n this.privAudioOutputFormat = format;\r\n this.privSynthesisTurn.audioOutputFormat = format;\r\n if (this.privSessionAudioDestination !== undefined) {\r\n this.privSessionAudioDestination.format = format;\r\n }\r\n if (this.synthesisContext !== undefined) {\r\n this.synthesisContext.audioOutputFormat = format;\r\n }\r\n }\r\n private privAuthentication: IAuthentication;\r\n private privConnectionFactory: ISynthesisConnectionFactory;\r\n\r\n // A promise for a configured connection.\r\n // Do not consume directly, call fetchConnection instead.\r\n private privConnectionConfigurationPromise: Promise = undefined;\r\n\r\n // A promise for a connection, but one that has not had the speech context sent yet.\r\n // Do not consume directly, call fetchConnection instead.\r\n private privConnectionPromise: Promise;\r\n private privAuthFetchEventId: string;\r\n private privIsDisposed: boolean;\r\n private privConnectionEvents: EventSource;\r\n private privServiceEvents: EventSource;\r\n protected privSynthesisContext: SynthesisContext;\r\n private privAgentConfig: AgentConfig;\r\n private privActivityTemplate: string;\r\n protected privAudioOutputFormat: AudioOutputFormatImpl;\r\n private privSessionAudioDestination: IAudioDestination;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: ISynthesisConnectionFactory,\r\n synthesizerConfig: SynthesizerConfig,\r\n audioDestination: IAudioDestination) {\r\n\r\n if (!authentication) {\r\n throw new ArgumentNullError(\"authentication\");\r\n }\r\n\r\n if (!connectionFactory) {\r\n throw new ArgumentNullError(\"connectionFactory\");\r\n }\r\n\r\n if (!synthesizerConfig) {\r\n throw new ArgumentNullError(\"synthesizerConfig\");\r\n }\r\n\r\n this.privAuthentication = authentication;\r\n this.privConnectionFactory = connectionFactory;\r\n this.privSynthesizerConfig = synthesizerConfig;\r\n this.privIsDisposed = false;\r\n this.privSessionAudioDestination = audioDestination;\r\n this.privSynthesisTurn = new SynthesisTurn();\r\n this.privConnectionEvents = new EventSource();\r\n this.privServiceEvents = new EventSource();\r\n this.privSynthesisContext = new SynthesisContext();\r\n this.privAgentConfig = new AgentConfig();\r\n\r\n this.connectionEvents.attach((connectionEvent: ConnectionEvent): void => {\r\n if (connectionEvent.name === \"ConnectionClosedEvent\") {\r\n const connectionClosedEvent = connectionEvent as ConnectionClosedEvent;\r\n if (connectionClosedEvent.statusCode !== 1000) {\r\n this.cancelSynthesisLocal(CancellationReason.Error,\r\n connectionClosedEvent.statusCode === 1007 ? CancellationErrorCode.BadRequestParameters : CancellationErrorCode.ConnectionFailure,\r\n `${connectionClosedEvent.reason} websocket error code: ${connectionClosedEvent.statusCode}`);\r\n }\r\n }\r\n });\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privIsDisposed;\r\n }\r\n\r\n public async dispose(reason?: string): Promise {\r\n this.privIsDisposed = true;\r\n if (this.privSessionAudioDestination !== undefined) {\r\n this.privSessionAudioDestination.close();\r\n }\r\n if (this.privConnectionConfigurationPromise !== undefined) {\r\n const connection: IConnection = await this.privConnectionConfigurationPromise;\r\n await connection.dispose(reason);\r\n }\r\n }\r\n\r\n public async connect(): Promise {\r\n await this.connectImpl();\r\n }\r\n\r\n public async sendNetworkMessage(path: string, payload: string | ArrayBuffer): Promise {\r\n const type: MessageType = typeof payload === \"string\" ? MessageType.Text : MessageType.Binary;\r\n const contentType: string = typeof payload === \"string\" ? \"application/json\" : \"\";\r\n\r\n const connection: IConnection = await this.fetchConnection();\r\n return connection.send(new SpeechConnectionMessage(type, path, this.privSynthesisTurn.requestId, contentType, payload));\r\n }\r\n\r\n public async Speak(\r\n text: string,\r\n isSSML: boolean,\r\n requestId: string,\r\n successCallback: (e: SpeechSynthesisResult) => void,\r\n errorCallBack: (e: string) => void,\r\n audioDestination: IAudioDestination,\r\n ): Promise {\r\n\r\n let ssml: string;\r\n\r\n if (isSSML) {\r\n ssml = text;\r\n } else {\r\n ssml = this.privSynthesizer.buildSsml(text);\r\n }\r\n\r\n if (this.speakOverride !== undefined) {\r\n return this.speakOverride(ssml, requestId, successCallback, errorCallBack);\r\n }\r\n\r\n this.privSuccessCallback = successCallback;\r\n this.privErrorCallback = errorCallBack;\r\n\r\n this.privSynthesisTurn.startNewSynthesis(requestId, text, isSSML, audioDestination);\r\n\r\n try {\r\n await this.connectImpl();\r\n const connection: IConnection = await this.fetchConnection();\r\n await this.sendSynthesisContext(connection);\r\n await this.sendSsmlMessage(connection, ssml, requestId);\r\n this.onSynthesisStarted(requestId);\r\n\r\n void this.receiveMessage();\r\n } catch (e) {\r\n this.cancelSynthesisLocal(CancellationReason.Error, CancellationErrorCode.ConnectionFailure, e as string);\r\n return Promise.reject(e);\r\n }\r\n }\r\n\r\n public async stopSpeaking(): Promise {\r\n await this.connectImpl();\r\n const connection: IConnection = await this.fetchConnection();\r\n\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"synthesis.control\",\r\n this.privSynthesisTurn.requestId,\r\n \"application/json\",\r\n JSON.stringify({\r\n action: \"stop\"\r\n })\r\n ));\r\n }\r\n\r\n // Cancels synthesis.\r\n protected cancelSynthesis(\r\n requestId: string,\r\n _cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n const properties: PropertyCollection = new PropertyCollection();\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n const result: SpeechSynthesisResult = new SpeechSynthesisResult(\r\n requestId,\r\n ResultReason.Canceled,\r\n undefined,\r\n error,\r\n properties\r\n );\r\n\r\n this.onSynthesisCancelled(result);\r\n\r\n if (!!this.privSuccessCallback) {\r\n try {\r\n this.privSuccessCallback(result);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n }\r\n\r\n // Cancels synthesis.\r\n protected cancelSynthesisLocal(\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n if (!!this.privSynthesisTurn.isSynthesizing) {\r\n this.privSynthesisTurn.onStopSynthesizing();\r\n\r\n this.cancelSynthesis(\r\n this.privSynthesisTurn.requestId,\r\n cancellationReason,\r\n errorCode,\r\n error);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n protected processTypeSpecificMessages(_connectionMessage: SpeechConnectionMessage): boolean {\r\n return true;\r\n }\r\n\r\n protected async receiveMessage(): Promise {\r\n try {\r\n const connection: IConnection = await this.fetchConnection();\r\n const message: ConnectionMessage = await connection.read();\r\n\r\n if (this.receiveMessageOverride !== undefined) {\r\n return this.receiveMessageOverride();\r\n }\r\n if (this.privIsDisposed) {\r\n // We're done.\r\n return;\r\n }\r\n\r\n // indicates we are draining the queue and it came with no message;\r\n if (!message) {\r\n if (!this.privSynthesisTurn.isSynthesizing) {\r\n return;\r\n } else {\r\n return this.receiveMessage();\r\n }\r\n }\r\n\r\n\r\n const connectionMessage = SpeechConnectionMessage.fromConnectionMessage(message);\r\n\r\n if (connectionMessage.requestId.toLowerCase() === this.privSynthesisTurn.requestId.toLowerCase()) {\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"turn.start\":\r\n this.privSynthesisTurn.onServiceTurnStartResponse(connectionMessage.textBody);\r\n break;\r\n case \"response\":\r\n this.privSynthesisTurn.onServiceResponseMessage(connectionMessage.textBody);\r\n break;\r\n case \"audio\":\r\n if (this.privSynthesisTurn.streamId.toLowerCase() === connectionMessage.streamId.toLowerCase()\r\n && !!connectionMessage.binaryBody) {\r\n this.privSynthesisTurn.onAudioChunkReceived(connectionMessage.binaryBody);\r\n this.onSynthesizing(connectionMessage.binaryBody);\r\n if (this.privSessionAudioDestination !== undefined) {\r\n this.privSessionAudioDestination.write(connectionMessage.binaryBody);\r\n }\r\n }\r\n break;\r\n case \"audio.metadata\":\r\n const metadataList = SynthesisAudioMetadata.fromJSON(connectionMessage.textBody).Metadata;\r\n for (const metadata of metadataList) {\r\n switch (metadata.Type) {\r\n case MetadataType.WordBoundary:\r\n case MetadataType.SentenceBoundary:\r\n this.privSynthesisTurn.onTextBoundaryEvent(metadata);\r\n const wordBoundaryEventArgs: SpeechSynthesisWordBoundaryEventArgs = new SpeechSynthesisWordBoundaryEventArgs(\r\n metadata.Data.Offset,\r\n metadata.Data.Duration,\r\n metadata.Data.text.Text,\r\n metadata.Data.text.Length,\r\n metadata.Type === MetadataType.WordBoundary\r\n ? this.privSynthesisTurn.currentTextOffset : this.privSynthesisTurn.currentSentenceOffset,\r\n metadata.Data.text.BoundaryType);\r\n this.onWordBoundary(wordBoundaryEventArgs);\r\n break;\r\n case MetadataType.Bookmark:\r\n const bookmarkEventArgs: SpeechSynthesisBookmarkEventArgs = new SpeechSynthesisBookmarkEventArgs(\r\n metadata.Data.Offset,\r\n metadata.Data.Bookmark);\r\n this.onBookmarkReached(bookmarkEventArgs);\r\n break;\r\n case MetadataType.Viseme:\r\n this.privSynthesisTurn.onVisemeMetadataReceived(metadata);\r\n if (metadata.Data.IsLastAnimation) {\r\n const visemeEventArgs: SpeechSynthesisVisemeEventArgs = new SpeechSynthesisVisemeEventArgs(\r\n metadata.Data.Offset,\r\n metadata.Data.VisemeId,\r\n this.privSynthesisTurn.getAndClearVisemeAnimation());\r\n this.onVisemeReceived(visemeEventArgs);\r\n }\r\n break;\r\n case MetadataType.AvatarSignal:\r\n this.onAvatarEvent(metadata);\r\n break;\r\n case MetadataType.SessionEnd:\r\n this.privSynthesisTurn.onSessionEnd(metadata);\r\n break;\r\n }\r\n }\r\n break;\r\n case \"turn.end\":\r\n this.privSynthesisTurn.onServiceTurnEndResponse();\r\n let result: SpeechSynthesisResult;\r\n try {\r\n result = await this.privSynthesisTurn.constructSynthesisResult();\r\n if (!!this.privSuccessCallback) {\r\n this.privSuccessCallback(result);\r\n }\r\n } catch (error) {\r\n if (!!this.privErrorCallback) {\r\n this.privErrorCallback(error as string);\r\n }\r\n }\r\n this.onSynthesisCompleted(result);\r\n break;\r\n\r\n default:\r\n if (!this.processTypeSpecificMessages(connectionMessage)) {\r\n // here are some messages that the derived class has not processed, dispatch them to connect class\r\n if (!!this.privServiceEvents) {\r\n this.serviceEvents.onEvent(new ServiceEvent(connectionMessage.path.toLowerCase(), connectionMessage.textBody));\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n return this.receiveMessage();\r\n\r\n } catch (e) {\r\n // TODO: What goes here?\r\n }\r\n }\r\n\r\n protected sendSynthesisContext(connection: IConnection): Promise {\r\n this.setSynthesisContextSynthesisSection();\r\n const synthesisContextJson = this.synthesisContext.toJSON();\r\n\r\n if (synthesisContextJson) {\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"synthesis.context\",\r\n this.privSynthesisTurn.requestId,\r\n \"application/json\",\r\n synthesisContextJson));\r\n }\r\n return;\r\n }\r\n\r\n protected abstract setSynthesisContextSynthesisSection(): void;\r\n\r\n protected setSpeechConfigSynthesisSection(): void {\r\n return;\r\n }\r\n\r\n protected connectImpl(isUnAuthorized: boolean = false): Promise {\r\n if (this.privConnectionPromise != null) {\r\n return this.privConnectionPromise.then((connection: IConnection): Promise => {\r\n if (connection.state() === ConnectionState.Disconnected) {\r\n this.privConnectionId = null;\r\n this.privConnectionPromise = null;\r\n return this.connectImpl();\r\n }\r\n return this.privConnectionPromise;\r\n }, (): Promise => {\r\n this.privConnectionId = null;\r\n this.privConnectionPromise = null;\r\n return this.connectImpl();\r\n });\r\n }\r\n this.privAuthFetchEventId = createNoDashGuid();\r\n this.privConnectionId = createNoDashGuid();\r\n\r\n this.privSynthesisTurn.onPreConnectionStart(this.privAuthFetchEventId);\r\n\r\n const authPromise = isUnAuthorized ? this.privAuthentication.fetchOnExpiry(this.privAuthFetchEventId) : this.privAuthentication.fetch(this.privAuthFetchEventId);\r\n\r\n this.privConnectionPromise = authPromise.then(async (result: AuthInfo): Promise => {\r\n this.privSynthesisTurn.onAuthCompleted(false);\r\n\r\n const connection: IConnection = this.privConnectionFactory.create(this.privSynthesizerConfig, result, this.privConnectionId);\r\n\r\n // Attach to the underlying event. No need to hold onto the detach pointers as in the event the connection goes away,\r\n // it'll stop sending events.\r\n connection.events.attach((event: ConnectionEvent): void => {\r\n this.connectionEvents.onEvent(event);\r\n });\r\n const response = await connection.open();\r\n if (response.statusCode === 200) {\r\n this.privSynthesisTurn.onConnectionEstablishCompleted(response.statusCode);\r\n return Promise.resolve(connection);\r\n } else if (response.statusCode === 403 && !isUnAuthorized) {\r\n return this.connectImpl(true);\r\n } else {\r\n this.privSynthesisTurn.onConnectionEstablishCompleted(response.statusCode);\r\n return Promise.reject(\r\n `Unable to contact server. StatusCode: ${response.statusCode},\r\n ${this.privSynthesizerConfig.parameters.getProperty(PropertyId.SpeechServiceConnection_Url)} Reason: ${response.reason}`);\r\n }\r\n }, (error: string): Promise => {\r\n this.privSynthesisTurn.onAuthCompleted(true);\r\n throw new Error(error);\r\n });\r\n\r\n // Attach an empty handler to allow the promise to run in the background while\r\n // other startup events happen. It'll eventually be awaited on.\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n this.privConnectionPromise.catch((): void => { });\r\n\r\n return this.privConnectionPromise;\r\n }\r\n protected sendSpeechServiceConfig(connection: IConnection, SpeechServiceConfigJson: string): Promise {\r\n if (SpeechServiceConfigJson) {\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"speech.config\",\r\n this.privSynthesisTurn.requestId,\r\n \"application/json\",\r\n SpeechServiceConfigJson));\r\n }\r\n }\r\n\r\n protected sendSsmlMessage(connection: IConnection, ssml: string, requestId: string): Promise {\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"ssml\",\r\n requestId,\r\n \"application/ssml+xml\",\r\n ssml));\r\n }\r\n\r\n private async fetchConnection(): Promise {\r\n if (this.privConnectionConfigurationPromise !== undefined) {\r\n return this.privConnectionConfigurationPromise.then((connection: IConnection): Promise => {\r\n if (connection.state() === ConnectionState.Disconnected) {\r\n this.privConnectionId = null;\r\n this.privConnectionConfigurationPromise = undefined;\r\n return this.fetchConnection();\r\n }\r\n return this.privConnectionConfigurationPromise;\r\n }, (): Promise => {\r\n this.privConnectionId = null;\r\n this.privConnectionConfigurationPromise = undefined;\r\n return this.fetchConnection();\r\n });\r\n }\r\n this.privConnectionConfigurationPromise = this.configureConnection();\r\n return await this.privConnectionConfigurationPromise;\r\n }\r\n\r\n // Takes an established websocket connection to the endpoint and sends speech configuration information.\r\n private async configureConnection(): Promise {\r\n const connection: IConnection = await this.connectImpl();\r\n if (this.configConnectionOverride !== undefined) {\r\n return this.configConnectionOverride(connection);\r\n }\r\n this.setSpeechConfigSynthesisSection();\r\n await this.sendSpeechServiceConfig(connection, this.privSynthesizerConfig.SpeechServiceConfig.serialize());\r\n return connection;\r\n }\r\n\r\n protected onAvatarEvent(_metadata: ISynthesisMetadata): void {\r\n return;\r\n }\r\n\r\n protected onSynthesisStarted(_requestId: string): void {\r\n return;\r\n }\r\n\r\n protected onSynthesizing(_audio: ArrayBuffer): void {\r\n return;\r\n }\r\n\r\n protected onSynthesisCancelled(_result: SpeechSynthesisResult): void {\r\n return;\r\n }\r\n\r\n protected onSynthesisCompleted(_result: SpeechSynthesisResult): void {\r\n return;\r\n }\r\n\r\n protected onWordBoundary(_wordBoundaryEventArgs: SpeechSynthesisWordBoundaryEventArgs): void {\r\n return;\r\n }\r\n\r\n protected onVisemeReceived(_visemeEventArgs: SpeechSynthesisVisemeEventArgs): void {\r\n return;\r\n }\r\n\r\n protected onBookmarkReached(_bookmarkEventArgs: SpeechSynthesisBookmarkEventArgs): void {\r\n return;\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { AudioOutputFormatImpl } from \"../sdk/Audio/AudioOutputFormat.js\";\r\nimport { PropertyId, SpeechSynthesizer } from \"../sdk/Exports.js\";\r\n\r\n/**\r\n * Represents the JSON used in the synthesis.context message sent to the speech service.\r\n * The dynamic grammar is always refreshed from the encapsulated dynamic grammar object.\r\n */\r\nexport class SynthesisContext {\r\n private privContext: { [section: string]: any } = {};\r\n private privAudioOutputFormat: AudioOutputFormatImpl;\r\n\r\n /**\r\n * Adds a section to the synthesis.context object.\r\n * @param sectionName Name of the section to add.\r\n * @param value JSON serializable object that represents the value.\r\n */\r\n public setSection(sectionName: string, value: string | object): void {\r\n this.privContext[sectionName] = value;\r\n }\r\n\r\n /**\r\n * Sets the audio output format for synthesis context generation.\r\n * @param format {AudioOutputFormatImpl} the output format\r\n */\r\n public set audioOutputFormat(format: AudioOutputFormatImpl) {\r\n this.privAudioOutputFormat = format;\r\n }\r\n\r\n public toJSON(): string {\r\n return JSON.stringify(this.privContext);\r\n }\r\n\r\n public setSynthesisSection(speechSynthesizer: SpeechSynthesizer): void {\r\n const synthesisSection: ISynthesisSection = this.buildSynthesisContext(speechSynthesizer);\r\n this.setSection(\"synthesis\", synthesisSection);\r\n }\r\n\r\n private buildSynthesisContext(speechSynthesizer: SpeechSynthesizer): ISynthesisSection {\r\n return {\r\n audio: {\r\n metadataOptions: {\r\n bookmarkEnabled: (!!speechSynthesizer?.bookmarkReached),\r\n punctuationBoundaryEnabled: speechSynthesizer?.properties.getProperty(\r\n PropertyId.SpeechServiceResponse_RequestPunctuationBoundary, (!!speechSynthesizer?.wordBoundary)),\r\n sentenceBoundaryEnabled: speechSynthesizer?.properties.getProperty(\r\n PropertyId.SpeechServiceResponse_RequestSentenceBoundary, false),\r\n sessionEndEnabled: true,\r\n visemeEnabled: (!!speechSynthesizer?.visemeReceived),\r\n wordBoundaryEnabled: speechSynthesizer?.properties.getProperty(\r\n PropertyId.SpeechServiceResponse_RequestWordBoundary, (!!speechSynthesizer?.wordBoundary)),\r\n },\r\n outputFormat: this.privAudioOutputFormat.requestAudioFormatString,\r\n },\r\n language: {\r\n autoDetection: speechSynthesizer?.autoDetectSourceLanguage\r\n }\r\n } as ISynthesisSection;\r\n }\r\n}\r\n\r\ninterface ISynthesisSection {\r\n audio: {\r\n outputFormat: string;\r\n metadataOptions: {\r\n bookmarkEnabled: boolean;\r\n wordBoundaryEnabled: string;\r\n punctuationBoundaryEnabled: string;\r\n visemeEnabled: boolean;\r\n sentenceBoundaryEnabled: string;\r\n sessionEndEnabled: boolean;\r\n };\r\n };\r\n language: {\r\n autoDetection: boolean;\r\n };\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport { EventType, PlatformEvent } from \"../common/Exports.js\";\r\n\r\nexport class SpeechSynthesisEvent extends PlatformEvent {\r\n private privRequestId: string;\r\n\r\n public constructor(eventName: string, requestId: string, eventType: EventType = EventType.Info) {\r\n super(eventName, eventType);\r\n\r\n this.privRequestId = requestId;\r\n }\r\n\r\n public get requestId(): string {\r\n return this.privRequestId;\r\n }\r\n}\r\n\r\nexport class SynthesisTriggeredEvent extends SpeechSynthesisEvent {\r\n private privSessionAudioDestinationId: string;\r\n private privTurnAudioDestinationId: string;\r\n\r\n public constructor(requestId: string, sessionAudioDestinationId: string, turnAudioDestinationId: string) {\r\n super(\"SynthesisTriggeredEvent\", requestId);\r\n\r\n this.privSessionAudioDestinationId = sessionAudioDestinationId;\r\n this.privTurnAudioDestinationId = turnAudioDestinationId;\r\n }\r\n\r\n public get audioSessionDestinationId(): string {\r\n return this.privSessionAudioDestinationId;\r\n }\r\n\r\n public get audioTurnDestinationId(): string {\r\n return this.privTurnAudioDestinationId;\r\n }\r\n}\r\n\r\nexport class ConnectingToSynthesisServiceEvent extends SpeechSynthesisEvent {\r\n private privAuthFetchEventId: string;\r\n\r\n public constructor(requestId: string, authFetchEventId: string) {\r\n super(\"ConnectingToSynthesisServiceEvent\", requestId);\r\n this.privAuthFetchEventId = authFetchEventId;\r\n }\r\n\r\n public get authFetchEventId(): string {\r\n return this.privAuthFetchEventId;\r\n }\r\n}\r\n\r\nexport class SynthesisStartedEvent extends SpeechSynthesisEvent {\r\n private privAuthFetchEventId: string;\r\n\r\n public constructor(requestId: string, authFetchEventId: string) {\r\n super(\"SynthesisStartedEvent\", requestId);\r\n\r\n this.privAuthFetchEventId = authFetchEventId;\r\n }\r\n\r\n public get authFetchEventId(): string {\r\n return this.privAuthFetchEventId;\r\n }\r\n}\r\n","import {\r\n IRequestOptions,\r\n IRestResponse,\r\n RestConfigBase,\r\n RestMessageAdapter,\r\n RestRequestType,\r\n} from \"../common.browser/Exports.js\";\r\nimport {\r\n PropertyId,\r\n} from \"../sdk/Exports.js\";\r\nimport { ConnectionFactoryBase } from \"./ConnectionFactoryBase.js\";\r\nimport { AuthInfo, IAuthentication, SynthesizerConfig } from \"./Exports.js\";\r\nimport { HeaderNames } from \"./HeaderNames.js\";\r\n\r\n/**\r\n * Implements methods for speaker recognition classes, sending requests to endpoint\r\n * and parsing response into expected format\r\n * @class SynthesisRestAdapter\r\n */\r\nexport class SynthesisRestAdapter {\r\n private privRestAdapter: RestMessageAdapter;\r\n private privUri: string;\r\n private privAuthentication: IAuthentication;\r\n\r\n public constructor(config: SynthesizerConfig, authentication: IAuthentication) {\r\n\r\n let endpoint = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint, undefined);\r\n if (!endpoint) {\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region, \"westus\");\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n endpoint = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Host, `https://${region}.tts.speech${hostSuffix}`);\r\n }\r\n this.privUri = `${endpoint}/cognitiveservices/voices/list`;\r\n\r\n const options: IRequestOptions = RestConfigBase.requestOptions;\r\n this.privRestAdapter = new RestMessageAdapter(options);\r\n this.privAuthentication = authentication;\r\n }\r\n\r\n /**\r\n * Sends list voices request to endpoint.\r\n * @function\r\n * @public\r\n * @param connectionId - guid for connectionId\r\n * @returns {Promise} rest response to status request\r\n */\r\n public getVoicesList(connectionId: string): Promise {\r\n this.privRestAdapter.setHeaders(HeaderNames.ConnectionId, connectionId);\r\n return this.privAuthentication.fetch(connectionId).then((authInfo: AuthInfo): Promise => {\r\n this.privRestAdapter.setHeaders(authInfo.headerName, authInfo.token);\r\n return this.privRestAdapter.request(RestRequestType.Get, this.privUri);\r\n });\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n createNoDashGuid,\r\n Deferred,\r\n Events,\r\n IAudioDestination\r\n} from \"../common/Exports.js\";\r\nimport { AudioOutputFormatImpl } from \"../sdk/Audio/AudioOutputFormat.js\";\r\nimport { PullAudioOutputStreamImpl } from \"../sdk/Audio/AudioOutputStream.js\";\r\nimport {\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n SpeechSynthesisResult,\r\n} from \"../sdk/Exports.js\";\r\nimport { ISynthesisMetadata, MetadataType } from \"./ServiceMessages/SynthesisAudioMetadata.js\";\r\nimport {\r\n ConnectingToSynthesisServiceEvent,\r\n SpeechSynthesisEvent,\r\n SynthesisStartedEvent,\r\n SynthesisTriggeredEvent,\r\n} from \"./SynthesisEvents.js\";\r\n\r\nexport interface ISynthesisResponseContext {\r\n serviceTag: string;\r\n}\r\n\r\nexport interface ISynthesisResponseAudio {\r\n type: string;\r\n streamId: string;\r\n}\r\n\r\nexport interface ISynthesisResponse {\r\n context: ISynthesisResponseContext;\r\n audio: ISynthesisResponseAudio;\r\n webrtc: {\r\n connectionString: string;\r\n };\r\n}\r\n\r\nexport class SynthesisTurn {\r\n\r\n public get requestId(): string {\r\n return this.privRequestId;\r\n }\r\n\r\n public get streamId(): string {\r\n return this.privStreamId;\r\n }\r\n\r\n public set streamId(value: string) {\r\n this.privStreamId = value;\r\n }\r\n\r\n public get audioOutputFormat(): AudioOutputFormatImpl {\r\n return this.privAudioOutputFormat;\r\n }\r\n\r\n public set audioOutputFormat(format: AudioOutputFormatImpl) {\r\n this.privAudioOutputFormat = format;\r\n }\r\n\r\n public get turnCompletionPromise(): Promise {\r\n return this.privTurnDeferral.promise;\r\n }\r\n\r\n public get isSynthesisEnded(): boolean {\r\n return this.privIsSynthesisEnded;\r\n }\r\n\r\n public get isSynthesizing(): boolean {\r\n return this.privIsSynthesizing;\r\n }\r\n\r\n public get currentTextOffset(): number {\r\n return this.privTextOffset;\r\n }\r\n\r\n public get currentSentenceOffset(): number {\r\n return this.privSentenceOffset;\r\n }\r\n\r\n // The number of bytes received for current turn\r\n public get bytesReceived(): number {\r\n return this.privBytesReceived;\r\n }\r\n\r\n public get audioDuration(): number {\r\n return this.privAudioDuration;\r\n }\r\n\r\n public get extraProperties(): PropertyCollection {\r\n if (!!this.privWebRTCSDP) {\r\n const properties = new PropertyCollection();\r\n properties.setProperty(PropertyId.TalkingAvatarService_WebRTC_SDP, this.privWebRTCSDP);\r\n return properties;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private privIsDisposed: boolean = false;\r\n private privAuthFetchEventId: string;\r\n private privIsSynthesizing: boolean = false;\r\n private privIsSynthesisEnded: boolean = false;\r\n private privBytesReceived: number = 0;\r\n private privRequestId: string;\r\n private privStreamId: string;\r\n private privTurnDeferral: Deferred;\r\n private privInTurn: boolean = false;\r\n private privAudioOutputFormat: AudioOutputFormatImpl;\r\n private privAudioOutputStream: PullAudioOutputStreamImpl;\r\n private privReceivedAudio: ArrayBuffer;\r\n private privReceivedAudioWithHeader: ArrayBuffer;\r\n private privTextOffset: number = 0;\r\n private privNextSearchTextIndex: number = 0;\r\n private privSentenceOffset: number = 0;\r\n private privNextSearchSentenceIndex: number = 0;\r\n private privPartialVisemeAnimation: string;\r\n private privRawText: string;\r\n private privIsSSML: boolean;\r\n private privTurnAudioDestination: IAudioDestination;\r\n private privAudioDuration: number;\r\n private privWebRTCSDP: string;\r\n\r\n public constructor() {\r\n this.privRequestId = createNoDashGuid();\r\n this.privTurnDeferral = new Deferred();\r\n\r\n // We're not in a turn, so resolve.\r\n this.privTurnDeferral.resolve();\r\n }\r\n\r\n public async getAllReceivedAudio(): Promise {\r\n if (!!this.privReceivedAudio) {\r\n return Promise.resolve(this.privReceivedAudio);\r\n }\r\n if (!this.privIsSynthesisEnded) {\r\n return null;\r\n }\r\n await this.readAllAudioFromStream();\r\n return Promise.resolve(this.privReceivedAudio);\r\n }\r\n\r\n public async getAllReceivedAudioWithHeader(): Promise {\r\n if (!!this.privReceivedAudioWithHeader) {\r\n return this.privReceivedAudioWithHeader;\r\n }\r\n if (!this.privIsSynthesisEnded) {\r\n return null;\r\n }\r\n if (this.audioOutputFormat.hasHeader) {\r\n const audio: ArrayBuffer = await this.getAllReceivedAudio();\r\n this.privReceivedAudioWithHeader = this.audioOutputFormat.addHeader(audio);\r\n return this.privReceivedAudioWithHeader;\r\n } else {\r\n return this.getAllReceivedAudio();\r\n }\r\n }\r\n\r\n public startNewSynthesis(requestId: string, rawText: string, isSSML: boolean, audioDestination?: IAudioDestination): void {\r\n this.privIsSynthesisEnded = false;\r\n this.privIsSynthesizing = true;\r\n this.privRequestId = requestId;\r\n this.privRawText = rawText;\r\n this.privIsSSML = isSSML;\r\n this.privAudioOutputStream = new PullAudioOutputStreamImpl();\r\n this.privAudioOutputStream.format = this.privAudioOutputFormat;\r\n this.privReceivedAudio = null;\r\n this.privReceivedAudioWithHeader = null;\r\n this.privBytesReceived = 0;\r\n this.privTextOffset = 0;\r\n this.privNextSearchTextIndex = 0;\r\n this.privSentenceOffset = 0;\r\n this.privNextSearchSentenceIndex = 0;\r\n this.privPartialVisemeAnimation = \"\";\r\n this.privWebRTCSDP = \"\";\r\n if (audioDestination !== undefined) {\r\n this.privTurnAudioDestination = audioDestination;\r\n this.privTurnAudioDestination.format = this.privAudioOutputFormat;\r\n }\r\n this.onEvent(new SynthesisTriggeredEvent(this.requestId, undefined, audioDestination === undefined ? undefined : audioDestination.id()));\r\n }\r\n\r\n public onPreConnectionStart(authFetchEventId: string): void {\r\n this.privAuthFetchEventId = authFetchEventId;\r\n this.onEvent(new ConnectingToSynthesisServiceEvent(this.privRequestId, this.privAuthFetchEventId));\r\n }\r\n\r\n public onAuthCompleted(isError: boolean): void {\r\n if (isError) {\r\n this.onComplete();\r\n }\r\n }\r\n\r\n public onConnectionEstablishCompleted(statusCode: number): void {\r\n if (statusCode === 200) {\r\n this.onEvent(new SynthesisStartedEvent(this.requestId, this.privAuthFetchEventId));\r\n this.privBytesReceived = 0;\r\n return;\r\n } else if (statusCode === 403) {\r\n this.onComplete();\r\n }\r\n }\r\n\r\n public onServiceResponseMessage(responseJson: string): void {\r\n const response: ISynthesisResponse = JSON.parse(responseJson) as ISynthesisResponse;\r\n this.streamId = response.audio.streamId;\r\n }\r\n\r\n public onServiceTurnEndResponse(): void {\r\n this.privInTurn = false;\r\n this.privTurnDeferral.resolve();\r\n this.onComplete();\r\n }\r\n\r\n public onServiceTurnStartResponse(responseJson: string): void {\r\n if (!!this.privTurnDeferral && !!this.privInTurn) {\r\n // What? How are we starting a turn with another not done?\r\n this.privTurnDeferral.reject(\"Another turn started before current completed.\");\r\n // Avoid UnhandledPromiseRejection if privTurnDeferral is not being awaited\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n this.privTurnDeferral.promise.then().catch((): void => { });\r\n }\r\n this.privInTurn = true;\r\n this.privTurnDeferral = new Deferred();\r\n const response: ISynthesisResponse = JSON.parse(responseJson) as ISynthesisResponse;\r\n if (!!response.webrtc) {\r\n this.privWebRTCSDP = response.webrtc.connectionString;\r\n }\r\n }\r\n\r\n public onAudioChunkReceived(data: ArrayBuffer): void {\r\n if (this.isSynthesizing) {\r\n this.privAudioOutputStream.write(data);\r\n this.privBytesReceived += data.byteLength;\r\n if (this.privTurnAudioDestination !== undefined) {\r\n this.privTurnAudioDestination.write(data);\r\n }\r\n }\r\n }\r\n\r\n public onTextBoundaryEvent(metadata: ISynthesisMetadata): void {\r\n this.updateTextOffset(metadata.Data.text.Text, metadata.Type);\r\n }\r\n\r\n public onVisemeMetadataReceived(metadata: ISynthesisMetadata): void {\r\n if (metadata.Data.AnimationChunk !== undefined) {\r\n this.privPartialVisemeAnimation += metadata.Data.AnimationChunk;\r\n }\r\n }\r\n\r\n public onSessionEnd(metadata: ISynthesisMetadata): void {\r\n this.privAudioDuration = metadata.Data.Offset;\r\n }\r\n\r\n public async constructSynthesisResult(): Promise {\r\n const audioBuffer: ArrayBuffer = await this.getAllReceivedAudioWithHeader();\r\n return new SpeechSynthesisResult(\r\n this.requestId,\r\n ResultReason.SynthesizingAudioCompleted,\r\n audioBuffer,\r\n undefined,\r\n this.extraProperties,\r\n this.audioDuration\r\n );\r\n }\r\n\r\n public dispose(): void {\r\n if (!this.privIsDisposed) {\r\n // we should have completed by now. If we did not its an unknown error.\r\n this.privIsDisposed = true;\r\n }\r\n }\r\n\r\n public onStopSynthesizing(): void {\r\n this.onComplete();\r\n }\r\n\r\n /**\r\n * Gets the viseme animation string (merged from animation chunk), and clears the internal\r\n * partial animation.\r\n */\r\n public getAndClearVisemeAnimation(): string {\r\n const animation: string = this.privPartialVisemeAnimation;\r\n this.privPartialVisemeAnimation = \"\";\r\n return animation;\r\n }\r\n\r\n protected onEvent(event: SpeechSynthesisEvent): void {\r\n Events.instance.onEvent(event);\r\n }\r\n\r\n /**\r\n * Check if the text is an XML(SSML) tag\r\n * @param text\r\n * @private\r\n */\r\n private static isXmlTag(text: string): boolean {\r\n return text.length >= 2 && text[0] === \"<\" && text[text.length - 1] === \">\";\r\n }\r\n\r\n private updateTextOffset(text: string, type: MetadataType): void {\r\n if (type === MetadataType.WordBoundary) {\r\n this.privTextOffset = this.privRawText.indexOf(text, this.privNextSearchTextIndex);\r\n if (this.privTextOffset >= 0) {\r\n this.privNextSearchTextIndex = this.privTextOffset + text.length;\r\n if (this.privIsSSML) {\r\n if (this.withinXmlTag(this.privTextOffset) && !SynthesisTurn.isXmlTag(text)) {\r\n this.updateTextOffset(text, type);\r\n }\r\n }\r\n }\r\n } else {\r\n this.privSentenceOffset = this.privRawText.indexOf(text, this.privNextSearchSentenceIndex);\r\n if (this.privSentenceOffset >= 0) {\r\n this.privNextSearchSentenceIndex = this.privSentenceOffset + text.length;\r\n if (this.privIsSSML) {\r\n if (this.withinXmlTag(this.privSentenceOffset) && !SynthesisTurn.isXmlTag(text)) {\r\n this.updateTextOffset(text, type);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private onComplete(): void {\r\n if (this.privIsSynthesizing) {\r\n this.privIsSynthesizing = false;\r\n this.privIsSynthesisEnded = true;\r\n this.privAudioOutputStream.close();\r\n this.privInTurn = false;\r\n if (this.privTurnAudioDestination !== undefined) {\r\n this.privTurnAudioDestination.close();\r\n this.privTurnAudioDestination = undefined;\r\n }\r\n }\r\n }\r\n\r\n private async readAllAudioFromStream(): Promise {\r\n if (this.privIsSynthesisEnded) {\r\n this.privReceivedAudio = new ArrayBuffer(this.bytesReceived);\r\n try {\r\n await this.privAudioOutputStream.read(this.privReceivedAudio);\r\n } catch (e) {\r\n this.privReceivedAudio = new ArrayBuffer(0);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Check if current idx is in XML(SSML) tag\r\n * @param idx\r\n * @private\r\n */\r\n private withinXmlTag(idx: number): boolean {\r\n return this.privRawText.indexOf(\"<\", idx + 1) > this.privRawText.indexOf(\">\", idx + 1);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection } from \"../sdk/Exports.js\";\r\nimport {\r\n Context,\r\n ISynthesisSectionVideo,\r\n SpeechServiceConfig\r\n } from \"./Exports.js\";\r\n\r\nexport enum SynthesisServiceType {\r\n Standard,\r\n Custom,\r\n}\r\n\r\nexport class SynthesizerConfig {\r\n private privSynthesisServiceType: SynthesisServiceType = SynthesisServiceType.Standard;\r\n private privSpeechServiceConfig: SpeechServiceConfig;\r\n private privParameters: PropertyCollection;\r\n public avatarEnabled: boolean = false;\r\n\r\n public constructor(\r\n speechServiceConfig: SpeechServiceConfig,\r\n parameters: PropertyCollection) {\r\n this.privSpeechServiceConfig = speechServiceConfig ? speechServiceConfig : new SpeechServiceConfig(new Context(null));\r\n this.privParameters = parameters;\r\n }\r\n\r\n public get parameters(): PropertyCollection {\r\n return this.privParameters;\r\n }\r\n\r\n public get synthesisServiceType(): SynthesisServiceType {\r\n return this.privSynthesisServiceType;\r\n }\r\n\r\n public set synthesisServiceType(value: SynthesisServiceType) {\r\n this.privSynthesisServiceType = value;\r\n }\r\n\r\n public set synthesisVideoSection(value: ISynthesisSectionVideo) {\r\n this.privSpeechServiceConfig.Context.synthesis = {\r\n video: value\r\n };\r\n }\r\n\r\n public get SpeechServiceConfig(): SpeechServiceConfig {\r\n return this.privSpeechServiceConfig;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ProxyInfo,\r\n WebsocketConnection,\r\n} from \"../common.browser/Exports.js\";\r\nimport {\r\n IConnection,\r\n IStringDictionary\r\n} from \"../common/Exports.js\";\r\nimport {\r\n OutputFormat,\r\n PropertyId\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n ConnectionFactoryBase\r\n} from \"./ConnectionFactoryBase.js\";\r\nimport {\r\n AuthInfo,\r\n OutputFormatPropertyName,\r\n RecognizerConfig,\r\n WebsocketMessageFormatter\r\n} from \"./Exports.js\";\r\nimport { HeaderNames } from \"./HeaderNames.js\";\r\nimport {\r\n QueryParameterNames\r\n} from \"./QueryParameterNames.js\";\r\n\r\nexport class TranscriberConnectionFactory extends ConnectionFactoryBase {\r\n\r\n private readonly multiaudioRelativeUri: string = \"/speech/recognition/multiaudio\";\r\n\r\n public create(\r\n config: RecognizerConfig,\r\n authInfo: AuthInfo,\r\n connectionId?: string): IConnection {\r\n\r\n let endpoint: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint, undefined);\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region, \"centralus\");\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n const hostDefault: string = \"wss://transcribe.\" + region + \".cts.speech\" + hostSuffix + this.multiaudioRelativeUri;\r\n const host: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Host, hostDefault);\r\n\r\n const queryParams: IStringDictionary = {};\r\n this.setQueryParams(queryParams, config, endpoint);\r\n\r\n if (!endpoint) {\r\n endpoint = host;\r\n }\r\n\r\n const headers: IStringDictionary = {};\r\n if (authInfo.token !== undefined && authInfo.token !== \"\") {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n headers[HeaderNames.ConnectionId] = connectionId;\r\n\r\n config.parameters.setProperty(PropertyId.SpeechServiceConnection_Url, endpoint);\r\n\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n return new WebsocketConnection(endpoint, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n }\r\n\r\n public setQueryParams(queryParams: IStringDictionary, config: RecognizerConfig, endpointUrl: string): void {\r\n\r\n const endpointId: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_EndpointId, undefined);\r\n const language: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage, undefined);\r\n\r\n if (endpointId && !(QueryParameterNames.CustomSpeechDeploymentId in queryParams)) {\r\n queryParams[QueryParameterNames.CustomSpeechDeploymentId] = endpointId;\r\n }\r\n\r\n if (language && !(QueryParameterNames.Language in queryParams)) {\r\n queryParams[QueryParameterNames.Language] = language;\r\n }\r\n\r\n const wordLevelTimings: boolean = config.parameters.getProperty(PropertyId.SpeechServiceResponse_RequestWordLevelTimestamps, \"false\").toLowerCase() === \"true\";\r\n const detailed: boolean = config.parameters.getProperty(OutputFormatPropertyName, OutputFormat[OutputFormat.Simple]) !== OutputFormat[OutputFormat.Simple];\r\n if (wordLevelTimings || detailed) {\r\n queryParams[QueryParameterNames.Format] = OutputFormat[OutputFormat.Detailed].toLowerCase();\r\n }\r\n\r\n this.setCommonUrlParams(config, queryParams, endpointUrl);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n IAudioSource,\r\n IConnection,\r\n MessageType\r\n} from \"../common/Exports.js\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n ConversationTranscriptionCanceledEventArgs,\r\n MeetingTranscriptionCanceledEventArgs,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n SpeechRecognitionEventArgs,\r\n SpeechRecognitionResult,\r\n} from \"../sdk/Exports.js\";\r\nimport { ConversationInfo, MeetingInfo } from \"../sdk/Transcription/Exports.js\";\r\nimport { ConversationProperties } from \"../sdk/Transcription/IConversation.js\";\r\nimport { MeetingProperties } from \"../sdk/Transcription/IMeeting.js\";\r\nimport {\r\n CancellationErrorCodePropertyName,\r\n ConversationServiceRecognizer,\r\n TranscriberRecognizer\r\n} from \"./Exports.js\";\r\nimport { IAuthentication } from \"./IAuthentication.js\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory.js\";\r\nimport { RecognizerConfig } from \"./RecognizerConfig.js\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal.js\";\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class TranscriptionServiceRecognizer extends ConversationServiceRecognizer {\r\n\r\n private privTranscriberRecognizer: TranscriberRecognizer;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n transcriber: TranscriberRecognizer) {\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, transcriber);\r\n this.privTranscriberRecognizer = transcriber;\r\n this.sendPrePayloadJSONOverride = (connection: IConnection): Promise => this.sendTranscriptionStartJSON(connection);\r\n if (this.privRecognizerConfig.parameters.getProperty(PropertyId.SpeechServiceResponse_RequestWordLevelTimestamps) === \"true\") {\r\n this.privSpeechContext.setWordLevelTimings();\r\n }\r\n }\r\n\r\n public async sendSpeechEventAsync(info: ConversationInfo, command: string): Promise {\r\n if (!!this.privRequestSession.isRecognizing) {\r\n const connection: IConnection = await this.fetchConnection();\r\n await this.sendSpeechEvent(connection, this.createSpeechEventPayload(info, command));\r\n }\r\n }\r\n\r\n public async sendMeetingSpeechEventAsync(info: MeetingInfo, command: string): Promise {\r\n if (!!this.privRequestSession.isRecognizing) {\r\n const connection: IConnection = await this.fetchConnection();\r\n await this.sendSpeechEvent(connection, this.createMeetingSpeechEventPayload(info, command));\r\n }\r\n }\r\n\r\n protected processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n return this.processSpeechMessages(connectionMessage);\r\n }\r\n\r\n protected handleRecognizedCallback(result: SpeechRecognitionResult, offset: number, sessionId: string): void {\r\n try {\r\n const event: SpeechRecognitionEventArgs = new SpeechRecognitionEventArgs(result, offset, sessionId);\r\n this.privTranscriberRecognizer.recognized(this.privTranscriberRecognizer, event);\r\n if (!!this.privSuccessCallback) {\r\n try {\r\n this.privSuccessCallback(result);\r\n } catch (e) {\r\n if (!!this.privErrorCallback) {\r\n this.privErrorCallback(e as string);\r\n }\r\n }\r\n // Only invoke the call back once.\r\n // and if it's successful don't invoke the\r\n // error after that.\r\n this.privSuccessCallback = undefined;\r\n this.privErrorCallback = undefined;\r\n }\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n protected handleRecognizingCallback(result: SpeechRecognitionResult, duration: number, sessionId: string): void {\r\n try {\r\n const ev = new SpeechRecognitionEventArgs(result, duration, sessionId);\r\n this.privTranscriberRecognizer.recognizing(this.privTranscriberRecognizer, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n // Cancels recognition.\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n const properties: PropertyCollection = new PropertyCollection();\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n\r\n if (this.privTranscriberRecognizer.IsMeetingRecognizer()) {\r\n if (!!this.privTranscriberRecognizer.canceled) {\r\n const cancelEvent: MeetingTranscriptionCanceledEventArgs = new MeetingTranscriptionCanceledEventArgs(\r\n cancellationReason,\r\n error,\r\n errorCode,\r\n undefined,\r\n sessionId);\r\n try {\r\n this.privTranscriberRecognizer.canceled(this.privTranscriberRecognizer, cancelEvent);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n } else {\r\n if (!!this.privTranscriberRecognizer.canceled) {\r\n const cancelEvent: ConversationTranscriptionCanceledEventArgs = new ConversationTranscriptionCanceledEventArgs(\r\n cancellationReason,\r\n error,\r\n errorCode,\r\n undefined,\r\n sessionId);\r\n try {\r\n this.privTranscriberRecognizer.canceled(this.privTranscriberRecognizer, cancelEvent);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n }\r\n\r\n if (!!this.privSuccessCallback) {\r\n const result: SpeechRecognitionResult = new SpeechRecognitionResult(\r\n requestId,\r\n ResultReason.Canceled,\r\n undefined, // Text\r\n undefined, // Duration\r\n undefined, // Offset\r\n undefined, // Language\r\n undefined, // Language Detection Confidence\r\n undefined, // Speaker Id\r\n error,\r\n undefined, // Json\r\n properties);\r\n try {\r\n this.privSuccessCallback(result);\r\n this.privSuccessCallback = undefined;\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n }\r\n\r\n // Encapsulated for derived service recognizers that need to send additional JSON\r\n protected async sendTranscriptionStartJSON(connection: IConnection): Promise {\r\n await this.sendSpeechContext(connection, true);\r\n if (this.privTranscriberRecognizer.IsMeetingRecognizer()) {\r\n const info: MeetingInfo = this.privTranscriberRecognizer.getMeetingInfo();\r\n const payload: { [id: string]: any } = this.createMeetingSpeechEventPayload(info, \"start\");\r\n await this.sendSpeechEvent(connection, payload);\r\n } else {\r\n const info: ConversationInfo = this.privTranscriberRecognizer.getConversationInfo();\r\n const payload: { [id: string]: any } = this.createSpeechEventPayload(info, \"start\");\r\n await this.sendSpeechEvent(connection, payload);\r\n }\r\n await this.sendWaveHeader(connection);\r\n return;\r\n }\r\n\r\n protected sendSpeechEvent(connection: IConnection, payload: { [id: string]: any }): Promise {\r\n const speechEventJson = JSON.stringify(payload);\r\n\r\n if (speechEventJson) {\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"speech.event\",\r\n this.privRequestSession.requestId,\r\n \"application/json\",\r\n speechEventJson));\r\n }\r\n return;\r\n }\r\n\r\n private createSpeechEventPayload(info: ConversationInfo, command: string): { [id: string]: any } {\r\n const eventDict: { id: string; name: string; meeting: ConversationProperties } = { id: \"meeting\", name: command, meeting: info.conversationProperties };\r\n eventDict.meeting.id = info.id;\r\n eventDict.meeting.attendees = info.participants;\r\n return eventDict;\r\n }\r\n\r\n private createMeetingSpeechEventPayload(info: MeetingInfo, command: string): { [id: string]: any } {\r\n const eventDict: { id: string; name: string; meeting: MeetingProperties } = { id: \"meeting\", name: command, meeting: info.meetingProperties };\r\n eventDict.meeting.id = info.id;\r\n eventDict.meeting.attendees = info.participants;\r\n return eventDict;\r\n }\r\n\r\n}\r\n","\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n RestConfigBase\r\n} from \"../../common.browser/RestConfigBase.js\";\r\n\r\nexport class ConversationConnectionConfig extends RestConfigBase {\r\n\r\n private static readonly privHost: string = \"dev.microsofttranslator.com\";\r\n private static readonly privRestPath: string = \"/capito/room\";\r\n private static readonly privApiVersion: string = \"2.0\";\r\n private static readonly privDefaultLanguageCode: string = \"en-US\";\r\n private static readonly privClientAppId: string = \"FC539C22-1767-4F1F-84BC-B4D811114F15\";\r\n private static readonly privWebSocketPath: string = \"/capito/translate\";\r\n private static readonly privTranscriptionEventKeys: string[] = [\"iCalUid\", \"callId\", \"organizer\", \"FLAC\", \"MTUri\", \"DifferentiateGuestSpeakers\", \"audiorecording\", \"Threadid\", \"OrganizerMri\", \"OrganizerTenantId\", \"UserToken\"];\r\n\r\n public static get host(): string {\r\n return ConversationConnectionConfig.privHost;\r\n }\r\n\r\n public static get apiVersion(): string {\r\n return ConversationConnectionConfig.privApiVersion;\r\n }\r\n\r\n public static get clientAppId(): string {\r\n return ConversationConnectionConfig.privClientAppId;\r\n }\r\n\r\n public static get defaultLanguageCode(): string {\r\n return ConversationConnectionConfig.privDefaultLanguageCode;\r\n }\r\n\r\n public static get restPath(): string {\r\n return ConversationConnectionConfig.privRestPath;\r\n }\r\n\r\n public static get webSocketPath(): string {\r\n return ConversationConnectionConfig.privWebSocketPath;\r\n }\r\n\r\n public static get transcriptionEventKeys(): string[] {\r\n return ConversationConnectionConfig.privTranscriptionEventKeys;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ProxyInfo, WebsocketConnection } from \"../../common.browser/Exports.js\";\r\nimport { createGuid, IConnection, IStringDictionary } from \"../../common/Exports.js\";\r\nimport { Contracts } from \"../../sdk/Contracts.js\";\r\nimport { PropertyId } from \"../../sdk/Exports.js\";\r\nimport { ConnectionFactoryBase } from \"../ConnectionFactoryBase.js\";\r\nimport { AuthInfo, RecognizerConfig } from \"../Exports.js\";\r\nimport { ConversationConnectionConfig } from \"./ConversationConnectionConfig.js\";\r\nimport { ConversationWebsocketMessageFormatter } from \"./ConversationWebsocketMessageFormatter.js\";\r\n\r\n/**\r\n * Create a connection to the Conversation Translator websocket for sending instant messages and commands, and for receiving translated messages.\r\n * The conversation must already have been started or joined.\r\n */\r\nexport class ConversationConnectionFactory extends ConnectionFactoryBase {\r\n\r\n public create(config: RecognizerConfig, authInfo: AuthInfo, connectionId?: string): IConnection {\r\n\r\n const endpointHost: string = config.parameters.getProperty(PropertyId.ConversationTranslator_Host, ConversationConnectionConfig.host);\r\n const correlationId: string = config.parameters.getProperty(PropertyId.ConversationTranslator_CorrelationId, createGuid());\r\n\r\n const endpoint: string = `wss://${endpointHost}${ConversationConnectionConfig.webSocketPath}`;\r\n const token: string = config.parameters.getProperty(PropertyId.ConversationTranslator_Token, undefined);\r\n Contracts.throwIfNullOrUndefined(token, \"token\");\r\n\r\n const queryParams: IStringDictionary = {};\r\n queryParams[ConversationConnectionConfig.configParams.apiVersion] = ConversationConnectionConfig.apiVersion;\r\n queryParams[ConversationConnectionConfig.configParams.token] = token;\r\n queryParams[ConversationConnectionConfig.configParams.correlationId] = correlationId;\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n return new WebsocketConnection(endpoint, queryParams, {}, new ConversationWebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ConnectionMessage, IStringDictionary, MessageType } from \"../../common/Exports.js\";\r\n\r\nexport class ConversationConnectionMessage extends ConnectionMessage {\r\n private privConversationMessageType: string;\r\n\r\n public constructor(\r\n messageType: MessageType,\r\n body: any,\r\n headers?: IStringDictionary,\r\n id?: string) {\r\n super(messageType, body, headers, id);\r\n const json: { type: string } = JSON.parse(this.textBody) as { type: string };\r\n if (json.type !== undefined) {\r\n this.privConversationMessageType = json.type;\r\n }\r\n }\r\n\r\n public get conversationMessageType(): string {\r\n return this.privConversationMessageType;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n IRequestOptions,\r\n IRestParams,\r\n IRestResponse,\r\n RestMessageAdapter,\r\n RestRequestType\r\n} from \"../../common.browser/Exports.js\";\r\nimport { IErrorMessages, IStringDictionary } from \"../../common/Exports.js\";\r\nimport { Contracts } from \"../../sdk/Contracts.js\";\r\nimport { PropertyCollection, PropertyId } from \"../../sdk/Exports.js\";\r\nimport { ConversationConnectionConfig } from \"./ConversationConnectionConfig.js\";\r\nimport { IConversationResponseError, IInternalConversation } from \"./ConversationTranslatorInterfaces.js\";\r\n\r\nexport class ConversationManager {\r\n\r\n private privRequestParams: IRestParams;\r\n private privErrors: IErrorMessages;\r\n private privHost: string;\r\n private privApiVersion: string;\r\n private privRestPath: string;\r\n private privRestAdapter: RestMessageAdapter;\r\n\r\n public constructor() {\r\n //\r\n this.privRequestParams = ConversationConnectionConfig.configParams;\r\n this.privErrors = ConversationConnectionConfig.restErrors;\r\n this.privHost = ConversationConnectionConfig.host;\r\n this.privApiVersion = ConversationConnectionConfig.apiVersion;\r\n this.privRestPath = ConversationConnectionConfig.restPath;\r\n this.privRestAdapter = new RestMessageAdapter({});\r\n }\r\n\r\n /**\r\n * Make a POST request to the Conversation Manager service endpoint to create or join a conversation.\r\n * @param args\r\n * @param conversationCode\r\n * @param callback\r\n * @param errorCallback\r\n */\r\n public createOrJoin(args: PropertyCollection, conversationCode: string, cb?: (c: any) => void, err?: (e: string) => void): void {\r\n\r\n try {\r\n\r\n Contracts.throwIfNullOrUndefined(args, \"args\");\r\n\r\n const languageCode: string = args.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage, ConversationConnectionConfig.defaultLanguageCode);\r\n const nickname: string = args.getProperty(PropertyId.ConversationTranslator_Name, \"conversation_host\");\r\n const endpointHost: string = args.getProperty(PropertyId.ConversationTranslator_Host, this.privHost);\r\n const correlationId: string = args.getProperty(PropertyId.ConversationTranslator_CorrelationId);\r\n const subscriptionKey: string = args.getProperty(PropertyId.SpeechServiceConnection_Key);\r\n const subscriptionRegion: string = args.getProperty(PropertyId.SpeechServiceConnection_Region);\r\n const authToken: string = args.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n\r\n Contracts.throwIfNullOrWhitespace(languageCode, \"languageCode\");\r\n Contracts.throwIfNullOrWhitespace(nickname, \"nickname\");\r\n Contracts.throwIfNullOrWhitespace(endpointHost, \"endpointHost\");\r\n\r\n const queryParams: IStringDictionary = {};\r\n queryParams[this.privRequestParams.apiVersion] = this.privApiVersion;\r\n queryParams[this.privRequestParams.languageCode] = languageCode;\r\n queryParams[this.privRequestParams.nickname] = nickname;\r\n\r\n const headers: IStringDictionary = {};\r\n if (correlationId) {\r\n headers[this.privRequestParams.correlationId] = correlationId;\r\n }\r\n headers[this.privRequestParams.clientAppId] = ConversationConnectionConfig.clientAppId;\r\n\r\n if (conversationCode !== undefined) {\r\n queryParams[this.privRequestParams.roomId] = conversationCode;\r\n } else {\r\n Contracts.throwIfNullOrUndefined(subscriptionRegion, this.privErrors.authInvalidSubscriptionRegion);\r\n headers[this.privRequestParams.subscriptionRegion] = subscriptionRegion;\r\n if (subscriptionKey) {\r\n headers[this.privRequestParams.subscriptionKey] = subscriptionKey;\r\n } else if (authToken) {\r\n headers[this.privRequestParams.authorization] = `Bearer ${authToken}`;\r\n } else {\r\n Contracts.throwIfNullOrUndefined(subscriptionKey, this.privErrors.authInvalidSubscriptionKey);\r\n }\r\n }\r\n\r\n const config: IRequestOptions = {};\r\n config.headers = headers;\r\n this.privRestAdapter.options = config;\r\n\r\n const endpoint: string = `https://${endpointHost}${this.privRestPath}`;\r\n\r\n // TODO: support a proxy and certificate validation\r\n this.privRestAdapter.request(RestRequestType.Post, endpoint, queryParams, null).then((response: IRestResponse): void => {\r\n\r\n const requestId: string = RestMessageAdapter.extractHeaderValue(this.privRequestParams.requestId, response.headers);\r\n\r\n if (!response.ok) {\r\n if (!!err) {\r\n // get the error\r\n let errorMessage: string = this.privErrors.invalidCreateJoinConversationResponse.replace(\"{status}\", response.status.toString());\r\n let errMessageRaw: IConversationResponseError;\r\n try {\r\n errMessageRaw = JSON.parse(response.data) as IConversationResponseError;\r\n errorMessage += ` [${errMessageRaw.error.code}: ${errMessageRaw.error.message}]`;\r\n } catch (e) {\r\n errorMessage += ` [${response.data}]`;\r\n }\r\n if (requestId) {\r\n errorMessage += ` ${requestId}`;\r\n }\r\n\r\n err(errorMessage);\r\n }\r\n return;\r\n }\r\n const conversation: IInternalConversation = JSON.parse(response.data) as IInternalConversation;\r\n if (conversation) {\r\n conversation.requestId = requestId;\r\n }\r\n if (!!cb) {\r\n try {\r\n cb(conversation);\r\n } catch (e) {\r\n if (!!err) {\r\n err(e as string);\r\n }\r\n }\r\n cb = undefined;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n }).catch( (): void => { });\r\n\r\n } catch (error) {\r\n if (!!err) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n\r\n } else {\r\n err(error as string);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Make a DELETE request to the Conversation Manager service endpoint to leave the conversation.\r\n * @param args\r\n * @param sessionToken\r\n * @param callback\r\n */\r\n public leave(args: PropertyCollection, sessionToken: string): Promise {\r\n return new Promise((resolve: () => void, reject: (reason: string) => void): void => {\r\n try {\r\n\r\n Contracts.throwIfNullOrUndefined(args, this.privErrors.invalidArgs.replace(\"{arg}\", \"config\"));\r\n Contracts.throwIfNullOrWhitespace(sessionToken, this.privErrors.invalidArgs.replace(\"{arg}\", \"token\"));\r\n\r\n const endpointHost: string = args.getProperty(PropertyId.ConversationTranslator_Host, this.privHost);\r\n const correlationId: string = args.getProperty(PropertyId.ConversationTranslator_CorrelationId);\r\n\r\n const queryParams: IStringDictionary = {};\r\n queryParams[this.privRequestParams.apiVersion] = this.privApiVersion;\r\n queryParams[this.privRequestParams.sessionToken] = sessionToken;\r\n\r\n const headers: IStringDictionary = {};\r\n if (correlationId) {\r\n headers[this.privRequestParams.correlationId] = correlationId;\r\n }\r\n\r\n const config: IRequestOptions = {};\r\n config.headers = headers;\r\n this.privRestAdapter.options = config;\r\n\r\n const endpoint: string = `https://${endpointHost}${this.privRestPath}`;\r\n\r\n // TODO: support a proxy and certificate validation\r\n this.privRestAdapter.request(RestRequestType.Delete, endpoint, queryParams, null).then((response: IRestResponse): void => {\r\n\r\n if (!response.ok) {\r\n // ignore errors on delete\r\n }\r\n\r\n resolve();\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n }).catch( (): void => {});\r\n\r\n } catch (error) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n reject(typedError.name + \": \" + typedError.message);\r\n\r\n } else {\r\n reject(error as string);\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n createNoDashGuid,\r\n Deferred,\r\n IDetachable,\r\n} from \"../../common/Exports.js\";\r\n\r\n/**\r\n * Placeholder class for the Conversation Request Session. Based off RequestSession.\r\n * TODO: define what telemetry is required.\r\n */\r\nexport class ConversationRequestSession {\r\n private privIsDisposed: boolean = false;\r\n private privDetachables: IDetachable[] = new Array();\r\n private privRequestId: string;\r\n private privRequestCompletionDeferral: Deferred;\r\n private privSessionId: string;\r\n\r\n public constructor(sessionId: string) {\r\n this.privSessionId = sessionId;\r\n this.privRequestId = createNoDashGuid();\r\n this.privRequestCompletionDeferral = new Deferred();\r\n }\r\n\r\n public get sessionId(): string {\r\n return this.privSessionId;\r\n }\r\n\r\n public get requestId(): string {\r\n return this.privRequestId;\r\n }\r\n\r\n public get completionPromise(): Promise {\r\n return this.privRequestCompletionDeferral.promise;\r\n }\r\n\r\n public onPreConnectionStart(authFetchEventId: string, connectionId: string): void {\r\n this.privSessionId = connectionId;\r\n }\r\n\r\n public onAuthCompleted(isError: boolean): void {\r\n if (isError) {\r\n this.onComplete();\r\n }\r\n }\r\n\r\n public onConnectionEstablishCompleted(statusCode: number): void {\r\n if (statusCode === 200) {\r\n return;\r\n } else if (statusCode === 403) {\r\n this.onComplete();\r\n }\r\n }\r\n\r\n public onServiceTurnEndResponse(continuousRecognition: boolean): void {\r\n if (!continuousRecognition) {\r\n this.onComplete();\r\n } else {\r\n this.privRequestId = createNoDashGuid();\r\n }\r\n }\r\n\r\n public async dispose(): Promise {\r\n if (!this.privIsDisposed) {\r\n // we should have completed by now. If we did not its an unknown error.\r\n this.privIsDisposed = true;\r\n for (const detachable of this.privDetachables) {\r\n await detachable.detach();\r\n }\r\n }\r\n }\r\n\r\n private onComplete(): void {\r\n //\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ConnectionState,\r\n createNoDashGuid,\r\n Deferred,\r\n IAudioSource,\r\n IConnection,\r\n MessageType,\r\n} from \"../../common/Exports.js\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n ConversationExpirationEventArgs,\r\n ConversationTranslationCanceledEventArgs,\r\n ConversationTranslationResult,\r\n ResultReason,\r\n Translations\r\n} from \"../../sdk/Exports.js\";\r\nimport {\r\n CognitiveTokenAuthentication,\r\n IAuthentication,\r\n IConnectionFactory,\r\n RecognizerConfig,\r\n ServiceRecognizerBase\r\n} from \"../Exports.js\";\r\nimport { ConversationConnectionMessage } from \"./ConversationConnectionMessage.js\";\r\nimport { ConversationRequestSession } from \"./ConversationRequestSession.js\";\r\nimport {\r\n ConversationReceivedTranslationEventArgs,\r\n LockRoomEventArgs,\r\n MuteAllEventArgs,\r\n ParticipantAttributeEventArgs,\r\n ParticipantEventArgs,\r\n ParticipantsListEventArgs\r\n} from \"./ConversationTranslatorEventArgs.js\";\r\nimport {\r\n ConversationTranslatorCommandTypes,\r\n ConversationTranslatorMessageTypes,\r\n IInternalParticipant\r\n} from \"./ConversationTranslatorInterfaces.js\";\r\nimport { ConversationTranslatorRecognizer } from \"./ConversationTranslatorRecognizer.js\";\r\nimport {\r\n CommandResponsePayload,\r\n IParticipantPayloadResponse,\r\n IParticipantsListPayloadResponse,\r\n ITranslationResponsePayload,\r\n ParticipantPayloadResponse,\r\n ParticipantsListPayloadResponse,\r\n SpeechResponsePayload,\r\n TextResponsePayload\r\n} from \"./ServiceMessages/Exports.js\";\r\n\r\n/**\r\n * The service adapter handles sending and receiving messages to the Conversation Translator websocket.\r\n */\r\nexport class ConversationServiceAdapter extends ServiceRecognizerBase {\r\n private privConversationServiceConnector: ConversationTranslatorRecognizer;\r\n private privConversationConnectionFactory: IConnectionFactory;\r\n private privConversationAuthFetchEventId: string;\r\n private privConversationAuthentication: IAuthentication;\r\n private privConversationRequestSession: ConversationRequestSession;\r\n private privConnectionConfigPromise: Promise = undefined;\r\n private privConnectionLoop: Promise;\r\n private terminateMessageLoop: boolean;\r\n private privLastPartialUtteranceId: string;\r\n private privConversationIsDisposed: boolean;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n conversationServiceConnector: ConversationTranslatorRecognizer) {\r\n\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, conversationServiceConnector);\r\n\r\n this.privLastPartialUtteranceId = \"\";\r\n this.privConversationServiceConnector = conversationServiceConnector;\r\n this.privConversationAuthentication = authentication;\r\n this.receiveMessageOverride = (): Promise => this.receiveConversationMessageOverride();\r\n this.recognizeOverride = (): Promise => this.noOp();\r\n this.postConnectImplOverride = (connection: Promise): Promise => this.conversationConnectImpl(connection);\r\n this.configConnectionOverride = (): Promise => this.configConnection();\r\n this.disconnectOverride = (): Promise => this.privDisconnect();\r\n this.privConversationRequestSession = new ConversationRequestSession(createNoDashGuid());\r\n this.privConversationConnectionFactory = connectionFactory;\r\n this.privConversationIsDisposed = false;\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return super.isDisposed() || this.privConversationIsDisposed;\r\n }\r\n\r\n public async dispose(reason?: string): Promise {\r\n this.privConversationIsDisposed = true;\r\n if (this.privConnectionConfigPromise !== undefined) {\r\n const connection: IConnection = await this.privConnectionConfigPromise;\r\n await connection.dispose(reason);\r\n }\r\n await super.dispose(reason);\r\n }\r\n\r\n public async sendMessage(message: string): Promise {\r\n const connection: IConnection = await this.fetchConnection();\r\n return connection.send(new ConversationConnectionMessage(\r\n MessageType.Text,\r\n message));\r\n }\r\n\r\n public async sendMessageAsync(message: string): Promise {\r\n const connection: IConnection = await this.fetchConnection();\r\n\r\n await connection.send(new ConversationConnectionMessage(MessageType.Text, message));\r\n }\r\n\r\n protected privDisconnect(): Promise {\r\n if (this.terminateMessageLoop) {\r\n return;\r\n }\r\n this.cancelRecognition(this.privConversationRequestSession.sessionId,\r\n this.privConversationRequestSession.requestId,\r\n CancellationReason.Error,\r\n CancellationErrorCode.NoError,\r\n \"Disconnecting\");\r\n\r\n this.terminateMessageLoop = true;\r\n return Promise.resolve();\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/require-await\r\n protected async processTypeSpecificMessages(): Promise {\r\n return true;\r\n }\r\n\r\n // Cancels recognition.\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n this.terminateMessageLoop = true;\r\n\r\n const cancelEvent: ConversationTranslationCanceledEventArgs = new ConversationTranslationCanceledEventArgs(\r\n cancellationReason,\r\n error,\r\n errorCode,\r\n undefined,\r\n sessionId);\r\n\r\n try {\r\n if (!!this.privConversationServiceConnector.canceled) {\r\n this.privConversationServiceConnector.canceled(this.privConversationServiceConnector, cancelEvent);\r\n }\r\n } catch {\r\n // continue on error\r\n }\r\n }\r\n\r\n /**\r\n * Establishes a websocket connection to the end point.\r\n */\r\n protected async conversationConnectImpl(connection: Promise): Promise {\r\n this.privConnectionLoop = this.startMessageLoop();\r\n return connection;\r\n }\r\n\r\n /**\r\n * Process incoming websocket messages\r\n */\r\n private async receiveConversationMessageOverride(): Promise {\r\n if (this.isDisposed() || this.terminateMessageLoop) {\r\n return Promise.resolve();\r\n }\r\n // we won't rely on the cascading promises of the connection since we want to continually be available to receive messages\r\n const communicationCustodian: Deferred = new Deferred();\r\n\r\n try {\r\n const connection: IConnection = await this.fetchConnection();\r\n const message: ConversationConnectionMessage = await connection.read() as ConversationConnectionMessage;\r\n if (this.isDisposed() || this.terminateMessageLoop) {\r\n // We're done.\r\n communicationCustodian.resolve();\r\n return Promise.resolve();\r\n }\r\n\r\n if (!message) {\r\n return this.receiveConversationMessageOverride();\r\n }\r\n\r\n const sessionId: string = this.privConversationRequestSession.sessionId;\r\n const conversationMessageType: string = message.conversationMessageType.toLowerCase();\r\n let sendFinal: boolean = false;\r\n\r\n try {\r\n switch (conversationMessageType) {\r\n case \"info\":\r\n case \"participant_command\":\r\n case \"command\":\r\n const commandPayload: CommandResponsePayload = CommandResponsePayload.fromJSON(message.textBody);\r\n switch (commandPayload.command.toLowerCase()) {\r\n\r\n /**\r\n * 'ParticpantList' is the first message sent to the user after the websocket connection has opened.\r\n * The consuming client must wait for this message to arrive\r\n * before starting to send their own data.\r\n */\r\n case \"participantlist\":\r\n\r\n const participantsPayload: IParticipantsListPayloadResponse = ParticipantsListPayloadResponse.fromJSON(message.textBody);\r\n\r\n const participantsResult: IInternalParticipant[] = participantsPayload.participants.map((p: IParticipantPayloadResponse): IInternalParticipant => {\r\n const participant: IInternalParticipant = {\r\n avatar: p.avatar,\r\n displayName: p.nickname,\r\n id: p.participantId,\r\n isHost: p.ishost,\r\n isMuted: p.ismuted,\r\n isUsingTts: p.usetts,\r\n preferredLanguage: p.locale\r\n };\r\n return participant;\r\n });\r\n\r\n if (!!this.privConversationServiceConnector.participantsListReceived) {\r\n this.privConversationServiceConnector.participantsListReceived(this.privConversationServiceConnector,\r\n new ParticipantsListEventArgs(participantsPayload.roomid, participantsPayload.token,\r\n participantsPayload.translateTo, participantsPayload.profanityFilter,\r\n participantsPayload.roomProfanityFilter, participantsPayload.roomLocked,\r\n participantsPayload.muteAll, participantsResult, sessionId));\r\n }\r\n break;\r\n\r\n /**\r\n * 'SetTranslateToLanguages' represents the list of languages being used in the Conversation by all users(?).\r\n * This is sent at the start of the Conversation\r\n */\r\n case \"settranslatetolanguages\":\r\n\r\n if (!!this.privConversationServiceConnector.participantUpdateCommandReceived) {\r\n this.privConversationServiceConnector.participantUpdateCommandReceived(this.privConversationServiceConnector,\r\n new ParticipantAttributeEventArgs(commandPayload.participantId,\r\n ConversationTranslatorCommandTypes.setTranslateToLanguages,\r\n commandPayload.value, sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'SetProfanityFiltering' lets the client set the level of profanity filtering.\r\n * If sent by the participant the setting will effect only their own profanity level.\r\n * If sent by the host, the setting will effect all participants including the host.\r\n * Note: the profanity filters differ from Speech Service (?): 'marked', 'raw', 'removed', 'tagged'\r\n */\r\n case \"setprofanityfiltering\":\r\n\r\n if (!!this.privConversationServiceConnector.participantUpdateCommandReceived) {\r\n this.privConversationServiceConnector.participantUpdateCommandReceived(this.privConversationServiceConnector,\r\n new ParticipantAttributeEventArgs(commandPayload.participantId,\r\n ConversationTranslatorCommandTypes.setProfanityFiltering,\r\n commandPayload.value, sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'SetMute' is sent if the participant has been muted by the host.\r\n * Check the 'participantId' to determine if the current user has been muted.\r\n */\r\n case \"setmute\":\r\n\r\n if (!!this.privConversationServiceConnector.participantUpdateCommandReceived) {\r\n this.privConversationServiceConnector.participantUpdateCommandReceived(this.privConversationServiceConnector,\r\n new ParticipantAttributeEventArgs(commandPayload.participantId,\r\n ConversationTranslatorCommandTypes.setMute,\r\n commandPayload.value, sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'SetMuteAll' is sent if the Conversation has been muted by the host.\r\n */\r\n case \"setmuteall\":\r\n\r\n if (!!this.privConversationServiceConnector.muteAllCommandReceived) {\r\n this.privConversationServiceConnector.muteAllCommandReceived(this.privConversationServiceConnector,\r\n new MuteAllEventArgs(commandPayload.value as boolean, sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'RoomExpirationWarning' is sent towards the end of the Conversation session to give a timeout warning.\r\n */\r\n case \"roomexpirationwarning\":\r\n\r\n if (!!this.privConversationServiceConnector.conversationExpiration) {\r\n this.privConversationServiceConnector.conversationExpiration(this.privConversationServiceConnector,\r\n new ConversationExpirationEventArgs(commandPayload.value as number, this.privConversationRequestSession.sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'SetUseTts' is sent as a confirmation if the user requests TTS to be turned on or off.\r\n */\r\n case \"setusetts\":\r\n\r\n if (!!this.privConversationServiceConnector.participantUpdateCommandReceived) {\r\n this.privConversationServiceConnector.participantUpdateCommandReceived(this.privConversationServiceConnector,\r\n new ParticipantAttributeEventArgs(commandPayload.participantId,\r\n ConversationTranslatorCommandTypes.setUseTTS,\r\n commandPayload.value, sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'SetLockState' is set if the host has locked or unlocked the Conversation.\r\n */\r\n case \"setlockstate\":\r\n\r\n if (!!this.privConversationServiceConnector.lockRoomCommandReceived) {\r\n this.privConversationServiceConnector.lockRoomCommandReceived(this.privConversationServiceConnector,\r\n new LockRoomEventArgs(commandPayload.value as boolean, sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'ChangeNickname' is received if a user changes their display name.\r\n * Any cached particpiants list should be updated to reflect the display name.\r\n */\r\n case \"changenickname\":\r\n\r\n if (!!this.privConversationServiceConnector.participantUpdateCommandReceived) {\r\n this.privConversationServiceConnector.participantUpdateCommandReceived(this.privConversationServiceConnector,\r\n new ParticipantAttributeEventArgs(commandPayload.participantId,\r\n ConversationTranslatorCommandTypes.changeNickname,\r\n commandPayload.value, sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'JoinSession' is sent when a user joins the Conversation.\r\n */\r\n case \"joinsession\":\r\n\r\n const joinParticipantPayload: ParticipantPayloadResponse = ParticipantPayloadResponse.fromJSON(message.textBody);\r\n\r\n const joiningParticipant: IInternalParticipant = {\r\n avatar: joinParticipantPayload.avatar,\r\n displayName: joinParticipantPayload.nickname,\r\n id: joinParticipantPayload.participantId,\r\n isHost: joinParticipantPayload.ishost,\r\n isMuted: joinParticipantPayload.ismuted,\r\n isUsingTts: joinParticipantPayload.usetts,\r\n preferredLanguage: joinParticipantPayload.locale,\r\n };\r\n\r\n if (!!this.privConversationServiceConnector.participantJoinCommandReceived) {\r\n this.privConversationServiceConnector.participantJoinCommandReceived(this.privConversationServiceConnector,\r\n new ParticipantEventArgs(\r\n joiningParticipant,\r\n sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'LeaveSession' is sent when a user leaves the Conversation'.\r\n */\r\n case \"leavesession\":\r\n\r\n const leavingParticipant: IInternalParticipant = {\r\n id: commandPayload.participantId\r\n };\r\n\r\n if (!!this.privConversationServiceConnector.participantLeaveCommandReceived) {\r\n this.privConversationServiceConnector.participantLeaveCommandReceived(this.privConversationServiceConnector,\r\n new ParticipantEventArgs(leavingParticipant, sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'DisconnectSession' is sent when a user is disconnected from the session (e.g. network problem).\r\n * Check the 'ParticipantId' to check whether the message is for the current user.\r\n */\r\n case \"disconnectsession\":\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const disconnectParticipant: IInternalParticipant = {\r\n id: commandPayload.participantId\r\n };\r\n\r\n break;\r\n\r\n case \"token\":\r\n const token = new CognitiveTokenAuthentication(\r\n (): Promise => {\r\n const authorizationToken = commandPayload.token;\r\n return Promise.resolve(authorizationToken);\r\n },\r\n (): Promise => {\r\n const authorizationToken = commandPayload.token;\r\n return Promise.resolve(authorizationToken);\r\n });\r\n this.authentication = token;\r\n this.privConversationServiceConnector.onToken(token);\r\n\r\n break;\r\n\r\n /**\r\n * Message not recognized.\r\n */\r\n default:\r\n break;\r\n }\r\n break;\r\n\r\n /**\r\n * 'partial' (or 'hypothesis') represents a unfinalized speech message.\r\n */\r\n case \"partial\":\r\n\r\n /**\r\n * 'final' (or 'phrase') represents a finalized speech message.\r\n */\r\n case \"final\":\r\n\r\n const speechPayload: SpeechResponsePayload = SpeechResponsePayload.fromJSON(message.textBody);\r\n const conversationResultReason: ResultReason = (conversationMessageType === \"final\") ? ResultReason.TranslatedParticipantSpeech : ResultReason.TranslatingParticipantSpeech;\r\n\r\n const speechResult: ConversationTranslationResult = new ConversationTranslationResult(speechPayload.participantId,\r\n this.getTranslations(speechPayload.translations),\r\n speechPayload.language,\r\n speechPayload.id,\r\n conversationResultReason,\r\n speechPayload.recognition,\r\n undefined,\r\n undefined,\r\n message.textBody,\r\n undefined);\r\n\r\n if (speechPayload.isFinal) {\r\n // check the length, sometimes empty finals are returned\r\n if (speechResult.text !== undefined && speechResult.text.length > 0) {\r\n sendFinal = true;\r\n } else if (speechPayload.id === this.privLastPartialUtteranceId) {\r\n // send final as normal. We had a non-empty partial for this same utterance\r\n // so sending the empty final is important\r\n sendFinal = true;\r\n } else {\r\n // suppress unneeded final\r\n }\r\n\r\n if (sendFinal) {\r\n if (!!this.privConversationServiceConnector.translationReceived) {\r\n this.privConversationServiceConnector.translationReceived(this.privConversationServiceConnector,\r\n new ConversationReceivedTranslationEventArgs(ConversationTranslatorMessageTypes.final, speechResult, sessionId));\r\n }\r\n }\r\n } else if (speechResult.text !== undefined) {\r\n this.privLastPartialUtteranceId = speechPayload.id;\r\n if (!!this.privConversationServiceConnector.translationReceived) {\r\n this.privConversationServiceConnector.translationReceived(this.privConversationServiceConnector,\r\n new ConversationReceivedTranslationEventArgs(ConversationTranslatorMessageTypes.partial, speechResult, sessionId));\r\n }\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * \"translated_message\" is a text message or instant message (IM).\r\n */\r\n case \"translated_message\":\r\n\r\n const textPayload: TextResponsePayload = TextResponsePayload.fromJSON(message.textBody);\r\n // TODO: (Native parity) a result reason should be set based whether the participantId is ours or not\r\n\r\n const textResult: ConversationTranslationResult = new ConversationTranslationResult(textPayload.participantId,\r\n this.getTranslations(textPayload.translations),\r\n textPayload.language,\r\n undefined,\r\n undefined,\r\n textPayload.originalText,\r\n undefined,\r\n undefined,\r\n undefined,\r\n message.textBody,\r\n undefined);\r\n\r\n if (!!this.privConversationServiceConnector.translationReceived) {\r\n this.privConversationServiceConnector.translationReceived(this.privConversationServiceConnector,\r\n new ConversationReceivedTranslationEventArgs(ConversationTranslatorMessageTypes.instantMessage, textResult, sessionId));\r\n }\r\n break;\r\n\r\n default:\r\n // ignore any unsupported message types\r\n break;\r\n }\r\n } catch (e) {\r\n // continue\r\n }\r\n return this.receiveConversationMessageOverride();\r\n } catch (e) {\r\n this.terminateMessageLoop = true;\r\n }\r\n\r\n return communicationCustodian.promise;\r\n }\r\n\r\n private async startMessageLoop(): Promise {\r\n if (this.isDisposed()) {\r\n return Promise.resolve();\r\n }\r\n this.terminateMessageLoop = false;\r\n\r\n const messageRetrievalPromise = this.receiveConversationMessageOverride();\r\n\r\n try {\r\n const r = await messageRetrievalPromise;\r\n return r;\r\n } catch (error) {\r\n this.cancelRecognition(this.privRequestSession ? this.privRequestSession.sessionId : \"\", this.privRequestSession ? this.privRequestSession.requestId : \"\", CancellationReason.Error, CancellationErrorCode.RuntimeError, error as string);\r\n return null;\r\n }\r\n }\r\n\r\n // Takes an established websocket connection to the endpoint\r\n private configConnection(): Promise {\r\n if (this.isDisposed()) {\r\n return Promise.resolve(undefined);\r\n }\r\n if (this.privConnectionConfigPromise !== undefined) {\r\n return this.privConnectionConfigPromise.then((connection: IConnection): Promise => {\r\n if (connection.state() === ConnectionState.Disconnected) {\r\n this.privConnectionId = null;\r\n this.privConnectionConfigPromise = undefined;\r\n return this.configConnection();\r\n }\r\n return this.privConnectionConfigPromise;\r\n }, (): Promise => {\r\n this.privConnectionId = null;\r\n this.privConnectionConfigPromise = undefined;\r\n return this.configConnection();\r\n });\r\n }\r\n if (this.terminateMessageLoop) {\r\n return Promise.resolve(undefined);\r\n }\r\n\r\n this.privConnectionConfigPromise = this.connectImpl().then((connection: IConnection): IConnection => connection);\r\n\r\n return this.privConnectionConfigPromise;\r\n }\r\n\r\n private getTranslations(serviceResultTranslations: ITranslationResponsePayload[]): Translations {\r\n let translations: Translations;\r\n\r\n if (undefined !== serviceResultTranslations) {\r\n translations = new Translations();\r\n for (const translation of serviceResultTranslations) {\r\n translations.set(translation.lang, translation.translation);\r\n }\r\n }\r\n\r\n return translations;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ProxyInfo,\r\n RestConfigBase,\r\n WebsocketConnection,\r\n} from \"../../common.browser/Exports.js\";\r\nimport {\r\n IConnection,\r\n IStringDictionary,\r\n} from \"../../common/Exports.js\";\r\nimport { StringUtils } from \"../../common/StringUtils.js\";\r\nimport { Contracts } from \"../../sdk/Contracts.js\";\r\nimport {\r\n PropertyId\r\n} from \"../../sdk/Exports.js\";\r\nimport {\r\n ConversationImpl\r\n} from \"../../sdk/Transcription/Conversation.js\";\r\nimport { HeaderNames } from \"../HeaderNames.js\";\r\nimport { QueryParameterNames } from \"../QueryParameterNames.js\";\r\nimport {\r\n ConnectionFactoryBase\r\n} from \"./../ConnectionFactoryBase.js\";\r\nimport {\r\n AuthInfo,\r\n RecognizerConfig,\r\n TranscriberConnectionFactory,\r\n TranslationConnectionFactory,\r\n WebsocketMessageFormatter,\r\n} from \"./../Exports.js\";\r\n\r\n/**\r\n * Connection factory for the conversation translator. Handles connecting to the regular translator endpoint,\r\n * as well as the virtual microphone array transcription endpoint\r\n */\r\nexport class ConversationTranslatorConnectionFactory extends ConnectionFactoryBase {\r\n\r\n private static readonly CTS_VIRT_MIC_PATH: string = \"/speech/recognition/dynamicaudio\";\r\n\r\n private privConvGetter: () => ConversationImpl;\r\n\r\n public constructor(convGetter: () => ConversationImpl) {\r\n super();\r\n\r\n Contracts.throwIfNullOrUndefined(convGetter, \"convGetter\");\r\n this.privConvGetter = convGetter;\r\n }\r\n\r\n public create(config: RecognizerConfig, authInfo: AuthInfo, connectionId?: string): IConnection {\r\n const isVirtMicArrayEndpoint = config.parameters.getProperty(\"ConversationTranslator_MultiChannelAudio\", \"\").toUpperCase() === \"TRUE\";\r\n\r\n const convInfo = this.privConvGetter().room;\r\n const region = convInfo.cognitiveSpeechRegion || config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region, \"\");\r\n\r\n const replacementValues: IStringDictionary = {\r\n hostSuffix: ConnectionFactoryBase.getHostSuffix(region),\r\n path: ConversationTranslatorConnectionFactory.CTS_VIRT_MIC_PATH,\r\n region: encodeURIComponent(region)\r\n };\r\n replacementValues[QueryParameterNames.Language] = encodeURIComponent(config.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage, \"\"));\r\n replacementValues[QueryParameterNames.CtsMeetingId] = encodeURIComponent(convInfo.roomId);\r\n replacementValues[QueryParameterNames.CtsDeviceId] = encodeURIComponent(convInfo.participantId);\r\n replacementValues[QueryParameterNames.CtsIsParticipant] = convInfo.isHost ? \"\" : (\"&\" + QueryParameterNames.CtsIsParticipant);\r\n\r\n let endpointUrl: string = \"\";\r\n const queryParams: IStringDictionary = {};\r\n const headers: IStringDictionary = {};\r\n\r\n if (isVirtMicArrayEndpoint) {\r\n // connecting to the conversation transcription virtual microphone array endpoint\r\n endpointUrl = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint);\r\n if (!endpointUrl) {\r\n const hostName = config.parameters.getProperty(\r\n PropertyId.SpeechServiceConnection_Host,\r\n \"transcribe.{region}.cts.speech{hostSuffix}\");\r\n\r\n endpointUrl = \"wss://\" + hostName + \"{path}\";\r\n }\r\n\r\n // because the region can change during a session, we support being passed a format string which we can then\r\n // replace with the correct information.\r\n endpointUrl = StringUtils.formatString(endpointUrl, replacementValues);\r\n\r\n const parsedUrl = new URL(endpointUrl);\r\n parsedUrl.searchParams.forEach((val: string, key: string): void => {\r\n queryParams[key] = val;\r\n });\r\n\r\n const connFactory = new TranscriberConnectionFactory();\r\n connFactory.setQueryParams(queryParams, config, endpointUrl);\r\n\r\n // Some query parameters are required for the CTS endpoint, let's explicity set them here\r\n queryParams[QueryParameterNames.CtsMeetingId] = replacementValues[QueryParameterNames.CtsMeetingId];\r\n queryParams[QueryParameterNames.CtsDeviceId] = replacementValues[QueryParameterNames.CtsDeviceId];\r\n if (!convInfo.isHost) {\r\n queryParams[QueryParameterNames.CtsIsParticipant] = \"\"; // this doesn't have a value so set to an empty string\r\n }\r\n\r\n if (!(QueryParameterNames.Format in queryParams)) {\r\n queryParams[QueryParameterNames.Format] = \"simple\";\r\n }\r\n\r\n parsedUrl.searchParams.forEach((val: string, key: string): void => {\r\n parsedUrl.searchParams.set(key, queryParams[key]);\r\n delete queryParams[key];\r\n });\r\n\r\n endpointUrl = parsedUrl.toString();\r\n\r\n } else {\r\n // connecting to regular translation endpoint\r\n const connFactory = new TranslationConnectionFactory();\r\n\r\n endpointUrl = connFactory.getEndpointUrl(config, true);\r\n endpointUrl = StringUtils.formatString(endpointUrl, replacementValues);\r\n\r\n connFactory.setQueryParams(queryParams, config, endpointUrl);\r\n }\r\n\r\n headers[HeaderNames.ConnectionId] = connectionId;\r\n headers[RestConfigBase.configParams.token] = convInfo.token;\r\n if (!!authInfo.token) {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n\r\n const enableCompression = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"\").toUpperCase() === \"TRUE\";\r\n return new WebsocketConnection(endpointUrl, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n/* eslint-disable max-classes-per-file */\r\nimport { ConversationTranslationResult, SessionEventArgs } from \"../../sdk/Exports.js\";\r\nimport { IInternalParticipant } from \"./ConversationTranslatorInterfaces.js\";\r\n\r\nexport class MuteAllEventArgs extends SessionEventArgs {\r\n private privIsMuted: boolean;\r\n\r\n public constructor(isMuted: boolean, sessionId?: string) {\r\n super(sessionId);\r\n\r\n this.privIsMuted = isMuted;\r\n }\r\n\r\n public get isMuted(): boolean {\r\n return this.privIsMuted;\r\n }\r\n}\r\n\r\nexport class LockRoomEventArgs extends SessionEventArgs {\r\n private privIsLocked: boolean;\r\n\r\n public constructor(isLocked: boolean, sessionId?: string) {\r\n super(sessionId);\r\n\r\n this.privIsLocked = isLocked;\r\n }\r\n\r\n public get isMuted(): boolean {\r\n return this.privIsLocked;\r\n }\r\n}\r\n\r\nexport class ParticipantEventArgs extends SessionEventArgs {\r\n private privParticipant: IInternalParticipant;\r\n\r\n public constructor(participant: IInternalParticipant, sessionId?: string) {\r\n super(sessionId);\r\n this.privParticipant = participant;\r\n }\r\n\r\n public get participant(): IInternalParticipant {\r\n return this.privParticipant;\r\n }\r\n}\r\n\r\nexport class ParticipantAttributeEventArgs extends SessionEventArgs {\r\n private privValue: boolean | number | string | string[];\r\n private privKey: string;\r\n private privParticipantId: string;\r\n\r\n public constructor(participantId: string, key: string, value: boolean | number | string | string[], sessionId?: string) {\r\n super(sessionId);\r\n\r\n this.privKey = key;\r\n this.privValue = value;\r\n this.privParticipantId = participantId;\r\n }\r\n\r\n public get value(): boolean | number | string | string[] {\r\n return this.privValue;\r\n }\r\n\r\n public get key(): string {\r\n return this.privKey;\r\n }\r\n public get id(): string {\r\n return this.privParticipantId;\r\n }\r\n}\r\n\r\nexport class ParticipantsListEventArgs extends SessionEventArgs {\r\n\r\n private privRoomId: string;\r\n private privSessionToken: string;\r\n private privTranslateTo: string[];\r\n private privProfanityFilter: string;\r\n private privRoomProfanityFilter: string;\r\n private privIsRoomLocked: boolean;\r\n private privIsMuteAll: boolean;\r\n private privParticipants: IInternalParticipant[];\r\n\r\n public constructor(conversationId: string, token: string, translateTo: string[], profanityFilter: string,\r\n roomProfanityFilter: string, isRoomLocked: boolean, isMuteAll: boolean, participants: IInternalParticipant[], sessionId?: string) {\r\n super(sessionId);\r\n this.privRoomId = conversationId;\r\n this.privSessionToken = token;\r\n this.privTranslateTo = translateTo;\r\n this.privProfanityFilter = profanityFilter;\r\n this.privRoomProfanityFilter = roomProfanityFilter;\r\n this.privIsRoomLocked = isRoomLocked;\r\n this.privIsRoomLocked = isMuteAll;\r\n this.privParticipants = participants;\r\n }\r\n public get sessionToken(): string {\r\n return this.privSessionToken;\r\n }\r\n\r\n public get conversationId(): string {\r\n return this.privRoomId;\r\n }\r\n\r\n public get translateTo(): string[] {\r\n return this.privTranslateTo;\r\n }\r\n\r\n public get profanityFilter(): string {\r\n return this.privProfanityFilter;\r\n }\r\n\r\n public get roomProfanityFilter(): string {\r\n return this.privRoomProfanityFilter;\r\n }\r\n\r\n public get isRoomLocked(): boolean {\r\n return this.privIsRoomLocked;\r\n }\r\n\r\n public get isMuteAll(): boolean {\r\n return this.privIsMuteAll;\r\n }\r\n\r\n public get participants(): IInternalParticipant[] {\r\n return this.privParticipants;\r\n }\r\n}\r\n\r\nexport class ConversationReceivedTranslationEventArgs {\r\n private privPayload: ConversationTranslationResult;\r\n private privCommand: string;\r\n private privSessionId: string;\r\n\r\n public constructor(command: string, payload: ConversationTranslationResult, sessionId?: string) {\r\n this.privPayload = payload;\r\n this.privCommand = command;\r\n this.privSessionId = sessionId;\r\n }\r\n\r\n public get payload(): ConversationTranslationResult {\r\n return this.privPayload;\r\n }\r\n\r\n public get command(): string {\r\n return this.privCommand;\r\n }\r\n\r\n public get sessionId(): string {\r\n return this.privSessionId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ConnectionEventArgs,\r\n ConversationExpirationEventArgs,\r\n ConversationTranslationCanceledEventArgs,\r\n SessionEventArgs,\r\n } from \"../../sdk/Exports.js\";\r\n// import { ConversationClient } from \"./ConversationConnection\";\r\nimport {\r\n ConversationReceivedTranslationEventArgs,\r\n LockRoomEventArgs,\r\n MuteAllEventArgs,\r\n ParticipantAttributeEventArgs,\r\n ParticipantEventArgs,\r\n ParticipantsListEventArgs } from \"./ConversationTranslatorEventArgs.js\";\r\n\r\n/**\r\n * Internal conversation data\r\n */\r\nexport interface IInternalConversation {\r\n // the token to use for connecting to the Speech Service\r\n cognitiveSpeechAuthToken: string;\r\n // the region to use for connecting to the Speech Service\r\n cognitiveSpeechRegion: string;\r\n // the unique id of the user who started or joined the Conversation\r\n participantId: string;\r\n // a descriptive name for the Conversation\r\n name: string;\r\n // a descriptive name for the Conversation\r\n description: string;\r\n // the speech model ID for custom speech\r\n speechModel: string;\r\n // represents the level of speech supported in the Conversation (0: everyone can speak, 2: only host can speak, 3: no-one can speak)\r\n modalities: number;\r\n // ?\r\n isApproved: boolean;\r\n // the mute flag has been set at conversation level and only the host can speak\r\n isMuted: boolean;\r\n // the 5 character conversation Id\r\n roomId: string;\r\n // the hex color string to represent a user. If there are many users this hex color may be reused (?).\r\n avatar: string;\r\n // the token to use when calling the websocket\r\n token: string;\r\n // used for tracking the session and help with troubleshooting problems in the logs\r\n correlationId: string;\r\n // extracted from the headers\r\n requestId: string;\r\n // set programmatically\r\n isHost: boolean;\r\n}\r\n\r\n/**\r\n * The user who is participating in the conversation.\r\n */\r\nexport interface IInternalParticipant {\r\n avatar?: string;\r\n displayName?: string;\r\n id?: string;\r\n isHost?: boolean;\r\n isMuted?: boolean;\r\n isUsingTts?: boolean;\r\n profanity?: boolean;\r\n preferredLanguage?: string;\r\n translateToLanguages?: string[];\r\n voice?: string;\r\n}\r\n\r\n/** Users participating in the conversation */\r\nexport class InternalParticipants {\r\n\r\n public constructor(public participants: IInternalParticipant[] = [], public meId?: string) {\r\n\r\n }\r\n\r\n /**\r\n * Add or update a participant\r\n * @param value\r\n */\r\n public addOrUpdateParticipant(value: IInternalParticipant): IInternalParticipant {\r\n if (value === undefined) {\r\n return;\r\n }\r\n\r\n const exists: number = this.getParticipantIndex(value.id);\r\n if (exists > -1) {\r\n this.participants.splice(exists, 1, value);\r\n } else {\r\n this.participants.push(value);\r\n }\r\n\r\n // ensure it was added ok\r\n return this.getParticipant(value.id);\r\n }\r\n\r\n /**\r\n * Find the participant's position in the participants list.\r\n * @param id\r\n */\r\n public getParticipantIndex(id: string): number {\r\n return this.participants.findIndex((p: IInternalParticipant): boolean => p.id === id);\r\n }\r\n\r\n /**\r\n * Find the participant by id.\r\n * @param id\r\n */\r\n public getParticipant(id: string): IInternalParticipant {\r\n return this.participants.find((p: IInternalParticipant): boolean => p.id === id);\r\n }\r\n\r\n /**\r\n * Remove a participant from the participants list.\r\n */\r\n public deleteParticipant(id: string): void {\r\n this.participants = this.participants.filter((p: IInternalParticipant): boolean => p.id !== id);\r\n }\r\n\r\n /**\r\n * Helper to return the conversation host.\r\n */\r\n public get host(): IInternalParticipant {\r\n return this.participants.find((p: IInternalParticipant): boolean => p.isHost === true );\r\n }\r\n\r\n /**\r\n * Helper to return the current user.\r\n */\r\n public get me(): IInternalParticipant {\r\n return this.getParticipant(this.meId);\r\n }\r\n}\r\n\r\n/**\r\n * Recognizer for handling Conversation Translator websocket messages\r\n */\r\nexport interface ConversationRecognizer {\r\n isDisposed(): boolean;\r\n sendRequest: (command: string, cb?: () => void, err?: (e: string) => void) => void;\r\n cancelSpeech?: () => Promise;\r\n close?: () => Promise;\r\n conversationExpiration?: (sender: ConversationRecognizer, event: ConversationExpirationEventArgs) => void;\r\n connected?: (e: ConnectionEventArgs) => void;\r\n disconnected?: (e: ConnectionEventArgs) => void;\r\n canceled?: (sender: ConversationRecognizer, event: ConversationTranslationCanceledEventArgs) => void;\r\n connectionOpened?: (sender: ConversationRecognizer, event: SessionEventArgs) => void;\r\n connectionClosed?: (sender: ConversationRecognizer, event: SessionEventArgs) => void;\r\n participantsListReceived?: (sender: ConversationRecognizer, event: ParticipantsListEventArgs) => void;\r\n translationReceived?: (sender: ConversationRecognizer, event: ConversationReceivedTranslationEventArgs) => void;\r\n lockRoomCommandReceived?: (sender: ConversationRecognizer, event: LockRoomEventArgs) => void;\r\n muteAllCommandReceived?: (sender: ConversationRecognizer, event: MuteAllEventArgs) => void;\r\n participantJoinCommandReceived?: (sender: ConversationRecognizer, event: ParticipantEventArgs) => void;\r\n participantLeaveCommandReceived?: (sender: ConversationRecognizer, event: ParticipantEventArgs) => void;\r\n participantUpdateCommandReceived?: (sender: ConversationRecognizer, event: ParticipantAttributeEventArgs) => void;\r\n connect?: (token: string, cb?: () => void, err?: (e: string) => void) => void;\r\n}\r\n\r\n/**\r\n * Error message returned from the Conversation Translator websocket\r\n */\r\nexport interface IConversationResponseErrorMessage {\r\n code: string;\r\n message: string;\r\n}\r\n\r\n/**\r\n * Error returned from the Conversation Translator websocket\r\n */\r\nexport interface IConversationResponseError {\r\n error: IConversationResponseErrorMessage;\r\n}\r\n\r\n/**\r\n * Base message command\r\n */\r\nexport interface IClientMessage {\r\n type: any;\r\n}\r\n\r\n/**\r\n * Command message\r\n */\r\nexport interface ICommandMessage extends IClientMessage {\r\n command?: string;\r\n}\r\n\r\n/**\r\n * Text message command\r\n */\r\nexport interface IInstantMessageCommand extends ICommandMessage {\r\n roomId: string;\r\n nickname?: string;\r\n participantId: string;\r\n text: string;\r\n}\r\n\r\n/**\r\n * Lock command\r\n */\r\nexport interface ILockConversationCommand extends ICommandMessage {\r\n id?: string; // incoming ws\r\n nickname?: string; // incoming ws\r\n participantId: string; // host - incoming ws\r\n roomid: string;\r\n value: boolean;\r\n}\r\n\r\n/**\r\n * Mute all command\r\n */\r\nexport interface IMuteAllCommand extends ICommandMessage {\r\n roomid: string;\r\n nickname?: string; // incoming ws\r\n participantId: string; // host\r\n value: boolean;\r\n id?: string; // incoming ws\r\n}\r\n\r\n/**\r\n * Mute participant command\r\n */\r\nexport interface IMuteCommand extends ICommandMessage {\r\n roomid: string;\r\n nickname?: string;\r\n participantId: string; // participant\r\n value: boolean;\r\n id?: string; // incoming ws\r\n}\r\n\r\n/**\r\n * Remove participant command\r\n */\r\nexport interface IEjectParticipantCommand extends ICommandMessage {\r\n roomid: string;\r\n participantId: string; // participant\r\n}\r\n\r\n/**\r\n * Change nickname command\r\n */\r\nexport interface IChangeNicknameCommand extends ICommandMessage {\r\n roomid: string;\r\n participantId: string;\r\n nickname: string;\r\n value: string;\r\n}\r\n\r\n/**\r\n * List of command message types\r\n */\r\nexport const ConversationTranslatorMessageTypes = {\r\n command: \"command\",\r\n final: \"final\",\r\n info: \"info\",\r\n instantMessage: \"instant_message\",\r\n keepAlive: \"keep_alive\",\r\n partial: \"partial\",\r\n participantCommand: \"participant_command\",\r\n translatedMessage: \"translated_message\"\r\n};\r\n\r\n/**\r\n * List of command types\r\n */\r\nexport const ConversationTranslatorCommandTypes = {\r\n changeNickname: \"ChangeNickname\",\r\n disconnectSession: \"DisconnectSession\",\r\n ejectParticipant: \"EjectParticipant\",\r\n instant_message: \"instant_message\",\r\n joinSession: \"JoinSession\",\r\n leaveSession: \"LeaveSession\",\r\n participantList: \"ParticipantList\",\r\n roomExpirationWarning: \"RoomExpirationWarning\",\r\n setLockState: \"SetLockState\",\r\n setMute: \"SetMute\",\r\n setMuteAll: \"SetMuteAll\",\r\n setProfanityFiltering: \"SetProfanityFiltering\",\r\n setTranslateToLanguages: \"SetTranslateToLanguages\",\r\n setUseTTS: \"SetUseTTS\"\r\n};\r\n\r\n/**\r\n * HTTP response helper\r\n */\r\nexport interface IResponse {\r\n ok: boolean;\r\n status: number;\r\n statusText: string;\r\n data: string;\r\n json: () => T;\r\n headers: string;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nimport {\r\n IAuthentication,\r\n IConnectionFactory,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeechServiceConfig\r\n} from \"../../common.speech/Exports.js\";\r\nimport {\r\n BackgroundEvent,\r\n Events,\r\n Timeout,\r\n} from \"../../common/Exports.js\";\r\nimport { AudioConfigImpl } from \"../../sdk/Audio/AudioConfig.js\";\r\nimport { Contracts } from \"../../sdk/Contracts.js\";\r\nimport {\r\n AudioConfig,\r\n Connection,\r\n ConnectionEventArgs,\r\n ConversationExpirationEventArgs,\r\n ConversationParticipantsChangedEventArgs,\r\n ConversationTranslationCanceledEventArgs,\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer,\r\n SessionEventArgs,\r\n SpeechTranslationConfig\r\n} from \"../../sdk/Exports.js\";\r\nimport { SpeechTranslationConfigImpl } from \"../../sdk/SpeechTranslationConfig.js\";\r\nimport { ConversationImpl } from \"../../sdk/Transcription/Conversation.js\";\r\nimport { Callback, IConversation } from \"../../sdk/Transcription/IConversation.js\";\r\nimport { ConversationConnectionFactory } from \"./ConversationConnectionFactory.js\";\r\nimport { ConversationServiceAdapter } from \"./ConversationServiceAdapter.js\";\r\nimport {\r\n ConversationReceivedTranslationEventArgs,\r\n LockRoomEventArgs,\r\n MuteAllEventArgs,\r\n ParticipantAttributeEventArgs,\r\n ParticipantEventArgs,\r\n ParticipantsListEventArgs\r\n} from \"./ConversationTranslatorEventArgs.js\";\r\nimport {\r\n ConversationRecognizer,\r\n} from \"./ConversationTranslatorInterfaces.js\";\r\n\r\nexport class ConversationRecognizerFactory {\r\n public static fromConfig(conversation: IConversation, speechConfig: SpeechTranslationConfig, audioConfig?: AudioConfig): ConversationRecognizer {\r\n return new ConversationTranslatorRecognizer(conversation, speechConfig, audioConfig);\r\n }\r\n}\r\n\r\n/**\r\n * Sends messages to the Conversation Translator websocket and listens for incoming events containing websocket messages.\r\n * Based off the recognizers in the SDK folder.\r\n */\r\nexport class ConversationTranslatorRecognizer extends Recognizer implements ConversationRecognizer {\r\n\r\n private privIsDisposed: boolean;\r\n private privSpeechRecognitionLanguage: string;\r\n private privConnection: Connection;\r\n private privConversation: ConversationImpl;\r\n private privTimeoutToken: any;\r\n private privSetTimeout: (cb: () => void, delay: number) => number;\r\n private privClearTimeout: (id: number) => void;\r\n\r\n public constructor(conversation: IConversation, speechConfig: SpeechTranslationConfig, audioConfig?: AudioConfig) {\r\n const serviceConfigImpl = speechConfig as SpeechTranslationConfigImpl;\r\n Contracts.throwIfNull(serviceConfigImpl, \"speechConfig\");\r\n const conversationImpl = conversation as ConversationImpl;\r\n Contracts.throwIfNull(conversationImpl, \"conversationImpl\");\r\n\r\n super(audioConfig, serviceConfigImpl.properties, new ConversationConnectionFactory());\r\n\r\n this.privConversation = conversationImpl;\r\n this.privIsDisposed = false;\r\n this.privProperties = serviceConfigImpl.properties.clone();\r\n this.privConnection = Connection.fromRecognizer(this);\r\n const webWorkerLoadType: string = this.privProperties.getProperty(PropertyId.WebWorkerLoadType, \"on\").toLowerCase();\r\n if (webWorkerLoadType === \"on\" && typeof (Blob) !== \"undefined\" && typeof (Worker) !== \"undefined\") {\r\n this.privSetTimeout = Timeout.setTimeout;\r\n this.privClearTimeout = Timeout.clearTimeout;\r\n } else {\r\n if (typeof window !== \"undefined\") {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n this.privSetTimeout = window.setTimeout.bind(window);\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n this.privClearTimeout = window.clearTimeout.bind(window);\r\n } else {\r\n this.privSetTimeout = setTimeout;\r\n this.privClearTimeout = clearTimeout;\r\n }\r\n }\r\n }\r\n\r\n public canceled: (sender: ConversationRecognizer, event: ConversationTranslationCanceledEventArgs) => void;\r\n public conversationExpiration: (sender: ConversationRecognizer, event: ConversationExpirationEventArgs) => void;\r\n public lockRoomCommandReceived: (sender: ConversationRecognizer, event: LockRoomEventArgs) => void;\r\n public muteAllCommandReceived: (sender: ConversationRecognizer, event: MuteAllEventArgs) => void;\r\n public participantJoinCommandReceived: (sender: ConversationRecognizer, event: ParticipantEventArgs) => void;\r\n public participantLeaveCommandReceived: (sender: ConversationRecognizer, event: ParticipantEventArgs) => void;\r\n public participantUpdateCommandReceived: (sender: ConversationRecognizer, event: ParticipantAttributeEventArgs) => void;\r\n public connectionOpened: (sender: ConversationRecognizer, event: SessionEventArgs) => void;\r\n public connectionClosed: (sender: ConversationRecognizer, event: SessionEventArgs) => void;\r\n public translationReceived: (sender: ConversationRecognizer, event: ConversationReceivedTranslationEventArgs) => void;\r\n public participantsListReceived: (sender: ConversationRecognizer, event: ParticipantsListEventArgs) => void;\r\n public participantsChanged: (sender: ConversationRecognizer, event: ConversationParticipantsChangedEventArgs) => void;\r\n\r\n public set connected(cb: (e: ConnectionEventArgs) => void) {\r\n this.privConnection.connected = cb;\r\n }\r\n\r\n public set disconnected(cb: (e: ConnectionEventArgs) => void) {\r\n this.privConnection.disconnected = cb;\r\n }\r\n\r\n /**\r\n * Return the speech language used by the recognizer\r\n */\r\n public get speechRecognitionLanguage(): string {\r\n return this.privSpeechRecognitionLanguage;\r\n }\r\n\r\n /**\r\n * Return the properties for the recognizer\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privIsDisposed;\r\n }\r\n\r\n /**\r\n * Connect to the recognizer\r\n * @param token\r\n */\r\n public connect(token: string, cb?: () => void, err?: (e: string) => void): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.privReco.conversationTranslatorToken = token;\r\n this.resetConversationTimeout();\r\n this.privReco.connectAsync(cb, err);\r\n } catch (error) {\r\n if (!!err) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n } else {\r\n err(error as string);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Disconnect from the recognizer\r\n */\r\n public disconnect(cb?: () => void, err?: (e: string) => void): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n if (this.privTimeoutToken !== undefined) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n this.privClearTimeout(this.privTimeoutToken);\r\n }\r\n this.privReco.disconnect().then((): void => {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }, (error: string): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n } catch (error) {\r\n if (!!err) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n } else {\r\n err(error as string);\r\n }\r\n }\r\n // Destroy the recognizer.\r\n this.dispose(true).catch((reason: string): void => {\r\n Events.instance.onEvent(new BackgroundEvent(reason));\r\n });\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Send the mute all participants command to the websocket\r\n * @param conversationId\r\n * @param participantId\r\n * @param isMuted\r\n */\r\n public sendRequest(command: string, cb?: () => void, err?: (e: string) => void): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n this.sendMessage(command, cb, err);\r\n } catch (error) {\r\n if (!!err) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n } else {\r\n err(error as string);\r\n }\r\n }\r\n\r\n // Destroy the recognizer.\r\n this.dispose(true).catch((reason: string): void => {\r\n Events.instance.onEvent(new BackgroundEvent(reason));\r\n });\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Handle update of service auth token (#694)\r\n */\r\n public onToken(token: IAuthentication): void {\r\n this.privConversation.onToken(token);\r\n }\r\n\r\n /**\r\n * Close and dispose the recognizer\r\n */\r\n public async close(): Promise {\r\n if (!this.privIsDisposed) {\r\n if (!!this.privConnection) {\r\n this.privConnection.closeConnection();\r\n this.privConnection.close();\r\n }\r\n this.privConnection = undefined;\r\n await this.dispose(true);\r\n }\r\n }\r\n\r\n /**\r\n * Dispose the recognizer\r\n * @param disposing\r\n */\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privIsDisposed) {\r\n return;\r\n }\r\n if (disposing) {\r\n if (this.privTimeoutToken !== undefined) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n this.privClearTimeout(this.privTimeoutToken);\r\n }\r\n this.privIsDisposed = true;\r\n if (!!this.privConnection) {\r\n this.privConnection.closeConnection();\r\n this.privConnection.close();\r\n this.privConnection = undefined;\r\n }\r\n await super.dispose(disposing);\r\n }\r\n }\r\n\r\n /**\r\n * Create the config for the recognizer\r\n * @param speechConfig\r\n */\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(speechConfig, this.privProperties);\r\n }\r\n\r\n /**\r\n * Create the service recognizer.\r\n * The audio source is redundnant here but is required by the implementation.\r\n * @param authentication\r\n * @param connectionFactory\r\n * @param audioConfig\r\n * @param recognizerConfig\r\n */\r\n protected createServiceRecognizer(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioConfig: AudioConfig,\r\n recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n\r\n const audioSource: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n\r\n return new ConversationServiceAdapter(authentication, connectionFactory, audioSource, recognizerConfig, this);\r\n }\r\n\r\n private sendMessage(msg: string, cb?: Callback, err?: Callback): void {\r\n const withAsync = this.privReco as ConversationServiceAdapter;\r\n const PromiseToEmptyCallback = (promise: Promise, cb?: Callback, err?: Callback): void => {\r\n if (promise !== undefined) {\r\n promise.then((): void => {\r\n try {\r\n if (!!cb) {\r\n cb();\r\n }\r\n } catch (e) {\r\n if (!!err) {\r\n err(`'Unhandled error on promise callback: ${e as string}'`);\r\n }\r\n }\r\n }, (reason: any): void => {\r\n try {\r\n if (!!err) {\r\n err(reason);\r\n }\r\n // eslint-disable-next-line no-empty\r\n } catch (error) { }\r\n });\r\n } else {\r\n if (!!err) {\r\n err(\"Null promise\");\r\n }\r\n }\r\n };\r\n\r\n PromiseToEmptyCallback(withAsync.sendMessageAsync(msg), cb, err);\r\n this.resetConversationTimeout();\r\n }\r\n\r\n private resetConversationTimeout(): void {\r\n if (this.privTimeoutToken !== undefined) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n this.privClearTimeout(this.privTimeoutToken);\r\n }\r\n\r\n this.privTimeoutToken = this.privSetTimeout((): void => {\r\n this.sendRequest(this.privConversation.getKeepAlive());\r\n }, 60000);\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ConnectionMessage,\r\n Deferred,\r\n IWebsocketMessageFormatter,\r\n MessageType,\r\n RawWebsocketMessage,\r\n} from \"../../common/Exports.js\";\r\nimport { ConversationConnectionMessage } from \"./ConversationConnectionMessage.js\";\r\n\r\n/**\r\n * Based off WebsocketMessageFormatter. The messages for Conversation Translator have some variations from the Speech messages.\r\n */\r\nexport class ConversationWebsocketMessageFormatter implements IWebsocketMessageFormatter {\r\n\r\n /**\r\n * Format incoming messages: text (speech partial/final, IM) or binary (tts)\r\n */\r\n public toConnectionMessage(message: RawWebsocketMessage): Promise {\r\n const deferral = new Deferred();\r\n\r\n try {\r\n if (message.messageType === MessageType.Text) {\r\n const incomingMessage: ConversationConnectionMessage = new ConversationConnectionMessage(message.messageType, message.textContent, {}, message.id);\r\n deferral.resolve(incomingMessage);\r\n } else if (message.messageType === MessageType.Binary) {\r\n deferral.resolve(new ConversationConnectionMessage(message.messageType, message.binaryContent, undefined, message.id));\r\n }\r\n } catch (e) {\r\n deferral.reject(`Error formatting the message. Error: ${e as string}`);\r\n }\r\n\r\n return deferral.promise;\r\n }\r\n\r\n /**\r\n * Format outgoing messages: text (commands or IM)\r\n */\r\n public fromConnectionMessage(message: ConnectionMessage): Promise {\r\n\r\n const deferral = new Deferred();\r\n\r\n try {\r\n if (message.messageType === MessageType.Text) {\r\n const payload = `${message.textBody ? message.textBody : \"\"}`;\r\n deferral.resolve(new RawWebsocketMessage(MessageType.Text, payload, message.id));\r\n }\r\n } catch (e) {\r\n deferral.reject(`Error formatting the message. ${e as string}`);\r\n }\r\n\r\n return deferral.promise;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport { ConversationManager } from \"./ConversationManager.js\";\r\nexport { ConversationConnectionConfig } from \"./ConversationConnectionConfig.js\";\r\nexport { ConversationRecognizerFactory } from \"./ConversationTranslatorRecognizer.js\";\r\nexport { TranscriberRecognizer } from \"./TranscriberRecognizer.js\";\r\nexport {\r\n ConversationReceivedTranslationEventArgs,\r\n LockRoomEventArgs,\r\n MuteAllEventArgs,\r\n ParticipantAttributeEventArgs,\r\n ParticipantEventArgs,\r\n ParticipantsListEventArgs } from \"./ConversationTranslatorEventArgs.js\";\r\nexport {\r\n ConversationRecognizer,\r\n ConversationTranslatorCommandTypes,\r\n ConversationTranslatorMessageTypes,\r\n IInternalConversation,\r\n IInternalParticipant,\r\n InternalParticipants} from \"./ConversationTranslatorInterfaces.js\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines the payload for incoming websocket commands\r\n */\r\nexport interface ICommandResponsePayload {\r\n type: string;\r\n command?: string;\r\n id?: string; // incoming ws\r\n nickname?: string; // incoming ws\r\n participantId?: string;\r\n roomid?: string;\r\n value: boolean | number | string;\r\n token?: string;\r\n}\r\n\r\nconst parseCommandResponse = (json: string): ICommandResponsePayload => JSON.parse(json) as ICommandResponsePayload;\r\n\r\nexport class CommandResponsePayload implements ICommandResponsePayload {\r\n private privCommandResponse: ICommandResponsePayload;\r\n\r\n public constructor(json: string) {\r\n this.privCommandResponse = parseCommandResponse(json);\r\n }\r\n\r\n public get type(): string {\r\n return this.privCommandResponse.type;\r\n }\r\n public get command(): string {\r\n return this.privCommandResponse.command;\r\n }\r\n public get id(): string {\r\n return this.privCommandResponse.id;\r\n }\r\n public get nickname(): string {\r\n return this.privCommandResponse.nickname;\r\n }\r\n public get participantId(): string {\r\n return this.privCommandResponse.participantId;\r\n }\r\n public get roomid(): string {\r\n return this.privCommandResponse.roomid;\r\n }\r\n public get value(): boolean | number | string {\r\n return this.privCommandResponse.value;\r\n }\r\n public get token(): string {\r\n return this.privCommandResponse.token;\r\n }\r\n\r\n public static fromJSON(json: string): CommandResponsePayload {\r\n return new CommandResponsePayload(json);\r\n }\r\n\r\n}\r\n","export { CommandResponsePayload } from \"./CommandResponsePayload.js\";\r\nexport { IParticipantsListPayloadResponse, IParticipantPayloadResponse, ParticipantsListPayloadResponse, ParticipantPayloadResponse } from \"./ParticipantResponsePayload.js\";\r\nexport { ITranslationResponsePayload, SpeechResponsePayload, TextResponsePayload } from \"./TranslationResponsePayload.js\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n/**\r\n * Defines the payload for incoming list of participants\r\n */\r\nexport interface IParticipantsListPayloadResponse {\r\n roomid: string;\r\n id: string;\r\n command: string;\r\n participants: IParticipantPayloadResponse[];\r\n token: string;\r\n translateTo: string[];\r\n profanityFilter: string;\r\n roomProfanityFilter: string;\r\n roomLocked: boolean;\r\n muteAll: boolean;\r\n type: string;\r\n}\r\n\r\n/**\r\n * Defines the payload for incoming participant\r\n */\r\nexport interface IParticipantPayloadResponse {\r\n nickname: string;\r\n locale: string;\r\n usetts: boolean;\r\n ismuted: boolean;\r\n ishost: boolean;\r\n participantId: string;\r\n avatar?: string;\r\n}\r\n\r\nconst parseListResponse = (json: string): IParticipantsListPayloadResponse => JSON.parse(json) as IParticipantsListPayloadResponse;\r\nconst parseParticipantResponse = (json: string): IParticipantPayloadResponse => JSON.parse(json) as IParticipantPayloadResponse;\r\n\r\nexport class ParticipantsListPayloadResponse implements IParticipantsListPayloadResponse {\r\n private privParticipantsPayloadResponse: IParticipantsListPayloadResponse;\r\n\r\n private constructor(json: string) {\r\n this.privParticipantsPayloadResponse = parseListResponse(json);\r\n }\r\n\r\n public get roomid(): string {\r\n return this.privParticipantsPayloadResponse.roomid;\r\n }\r\n\r\n public get id(): string {\r\n return this.privParticipantsPayloadResponse.id;\r\n }\r\n\r\n public get command(): string {\r\n return this.privParticipantsPayloadResponse.command;\r\n }\r\n\r\n public get participants(): IParticipantPayloadResponse[] {\r\n return this.privParticipantsPayloadResponse.participants;\r\n }\r\n\r\n public get token(): string {\r\n return this.privParticipantsPayloadResponse.token;\r\n }\r\n\r\n public get translateTo(): string[] {\r\n return this.privParticipantsPayloadResponse.translateTo;\r\n }\r\n\r\n public get profanityFilter(): string {\r\n return this.privParticipantsPayloadResponse.profanityFilter;\r\n }\r\n\r\n public get roomProfanityFilter(): string {\r\n return this.privParticipantsPayloadResponse.roomProfanityFilter;\r\n }\r\n\r\n public get roomLocked(): boolean {\r\n return this.privParticipantsPayloadResponse.roomLocked;\r\n }\r\n\r\n public get muteAll(): boolean {\r\n return this.privParticipantsPayloadResponse.muteAll;\r\n }\r\n\r\n public get type(): string {\r\n return this.privParticipantsPayloadResponse.type;\r\n }\r\n\r\n public static fromJSON(json: string): ParticipantsListPayloadResponse {\r\n return new ParticipantsListPayloadResponse(json);\r\n }\r\n\r\n}\r\n\r\nexport class ParticipantPayloadResponse implements IParticipantPayloadResponse {\r\n\r\n private privParticipantPayloadResponse: IParticipantPayloadResponse;\r\n\r\n private constructor(json: string) {\r\n this.privParticipantPayloadResponse = parseParticipantResponse(json);\r\n }\r\n\r\n public get nickname(): string {\r\n return this.privParticipantPayloadResponse.nickname;\r\n }\r\n\r\n public get locale(): string {\r\n return this.privParticipantPayloadResponse.locale;\r\n }\r\n\r\n public get usetts(): boolean {\r\n return this.privParticipantPayloadResponse.usetts;\r\n }\r\n\r\n public get ismuted(): boolean {\r\n return this.privParticipantPayloadResponse.ismuted;\r\n }\r\n\r\n public get ishost(): boolean {\r\n return this.privParticipantPayloadResponse.ishost;\r\n }\r\n\r\n public get participantId(): string {\r\n return this.privParticipantPayloadResponse.participantId;\r\n }\r\n\r\n public get avatar(): string {\r\n return this.privParticipantPayloadResponse.avatar;\r\n }\r\n\r\n public static fromJSON(json: string): ParticipantPayloadResponse {\r\n return new ParticipantPayloadResponse(json);\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n/**\r\n * Defines the payload for incoming translation messages\r\n */\r\nexport interface ITranslationResponsePayload {\r\n lang: string;\r\n translation: string;\r\n}\r\n\r\nexport interface ITranslationCommandMessage {\r\n translations: ITranslationResponsePayload[];\r\n id: string;\r\n language: string;\r\n nickname: string;\r\n participantId: string;\r\n roomid: string;\r\n timestamp: string;\r\n type: string;\r\n}\r\n\r\nexport interface ISpeechResponsePayload extends ITranslationCommandMessage {\r\n recognition: string;\r\n isFinal: boolean;\r\n}\r\n\r\nexport interface ITextResponsePayload extends ITranslationCommandMessage {\r\n originalText: string;\r\n}\r\n\r\nconst parseSpeechResponse = (json: string): ISpeechResponsePayload => JSON.parse(json) as ISpeechResponsePayload;\r\nconst parseTextResponse = (json: string): ITextResponsePayload => JSON.parse(json) as ITextResponsePayload;\r\n\r\nexport class SpeechResponsePayload implements ISpeechResponsePayload {\r\n\r\n private privSpeechResponse: ISpeechResponsePayload;\r\n\r\n private constructor(json: string) {\r\n this.privSpeechResponse = parseSpeechResponse(json);\r\n }\r\n\r\n public get recognition(): string {\r\n return this.privSpeechResponse.recognition;\r\n }\r\n\r\n public get translations(): ITranslationResponsePayload[] {\r\n return this.privSpeechResponse.translations;\r\n }\r\n\r\n public get id(): string {\r\n return this.privSpeechResponse.id;\r\n }\r\n\r\n public get language(): string {\r\n return this.privSpeechResponse.language;\r\n }\r\n\r\n public get nickname(): string {\r\n return this.privSpeechResponse.nickname;\r\n }\r\n\r\n public get participantId(): string {\r\n return this.privSpeechResponse.participantId;\r\n }\r\n\r\n public get roomid(): string {\r\n return this.privSpeechResponse.roomid;\r\n }\r\n\r\n public get timestamp(): string {\r\n return this.privSpeechResponse.timestamp;\r\n }\r\n\r\n public get type(): string {\r\n return this.privSpeechResponse.type;\r\n }\r\n\r\n public get isFinal(): boolean {\r\n return this.privSpeechResponse.type === \"final\";\r\n }\r\n\r\n public static fromJSON(json: string): SpeechResponsePayload {\r\n return new SpeechResponsePayload(json);\r\n }\r\n\r\n}\r\n\r\nexport class TextResponsePayload implements ITextResponsePayload {\r\n\r\n private privTextResponse: ITextResponsePayload;\r\n\r\n private constructor(json: string) {\r\n this.privTextResponse = parseTextResponse(json);\r\n }\r\n\r\n public get originalText(): string {\r\n return this.privTextResponse.originalText;\r\n }\r\n\r\n public get translations(): ITranslationResponsePayload[] {\r\n return this.privTextResponse.translations;\r\n }\r\n\r\n public get id(): string {\r\n return this.privTextResponse.id;\r\n }\r\n\r\n public get language(): string {\r\n return this.privTextResponse.language;\r\n }\r\n\r\n public get nickname(): string {\r\n return this.privTextResponse.nickname;\r\n }\r\n\r\n public get participantId(): string {\r\n return this.privTextResponse.participantId;\r\n }\r\n\r\n public get roomid(): string {\r\n return this.privTextResponse.roomid;\r\n }\r\n\r\n public get timestamp(): string {\r\n return this.privTextResponse.timestamp;\r\n }\r\n\r\n public get type(): string {\r\n return this.privTextResponse.type;\r\n }\r\n\r\n public static fromJSON(json: string): TextResponsePayload {\r\n return new TextResponsePayload(json);\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\nimport { marshalPromiseToCallbacks } from \"../../common/Exports.js\";\r\nimport { AudioConfigImpl } from \"../../sdk/Audio/AudioConfig.js\";\r\nimport { AudioStreamFormatImpl } from \"../../sdk/Audio/AudioStreamFormat.js\";\r\nimport { Contracts } from \"../../sdk/Contracts.js\";\r\nimport {\r\n AudioConfig,\r\n CancellationEventArgs,\r\n Conversation,\r\n ConversationInfo,\r\n Meeting,\r\n MeetingInfo,\r\n MeetingTranscriber,\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer,\r\n SessionEventArgs,\r\n SpeechRecognitionEventArgs,\r\n SpeechTranslationConfig,\r\n SpeechTranslationConfigImpl,\r\n} from \"../../sdk/Exports.js\";\r\nimport {\r\n IAuthentication,\r\n IConnectionFactory,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeechServiceConfig,\r\n TranscriberConnectionFactory,\r\n TranscriptionServiceRecognizer,\r\n} from \"../Exports.js\";\r\n\r\nexport class TranscriberRecognizer extends Recognizer {\r\n\r\n public recognizing: (sender: Recognizer, event: SpeechRecognitionEventArgs) => void;\r\n\r\n public recognized: (sender: Recognizer, event: SpeechRecognitionEventArgs) => void;\r\n\r\n public canceled: (sender: Recognizer, event: CancellationEventArgs) => void;\r\n\r\n private privDisposedRecognizer: boolean;\r\n private privConversation: Conversation;\r\n private privMeeting: Meeting;\r\n private isMeetingRecognizer: boolean;\r\n\r\n /**\r\n * TranscriberRecognizer constructor.\r\n * @constructor\r\n * @param {SpeechTranslationConfig} speechTranslationConfig - Non-audio configuration associated with the recognizer\r\n * @param {AudioConfig} audioConfig - An audio configuration associated with the recognizer\r\n */\r\n public constructor(speechTranslationConfig: SpeechTranslationConfig, audioConfig: AudioConfig) {\r\n const speechTranslationConfigImpl: SpeechTranslationConfigImpl = speechTranslationConfig as SpeechTranslationConfigImpl;\r\n Contracts.throwIfNull(speechTranslationConfigImpl, \"speechTranslationConfig\");\r\n\r\n const audioConfigImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n Contracts.throwIfNull(audioConfigImpl, \"audioConfigImpl\");\r\n\r\n Contracts.throwIfNullOrWhitespace(\r\n speechTranslationConfigImpl.speechRecognitionLanguage,\r\n PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n\r\n super(audioConfig, speechTranslationConfigImpl.properties, new TranscriberConnectionFactory());\r\n this.privDisposedRecognizer = false;\r\n this.isMeetingRecognizer = false;\r\n }\r\n\r\n public get speechRecognitionLanguage(): string {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage);\r\n }\r\n\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n public set authorizationToken(token: string) {\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, token);\r\n }\r\n\r\n public set conversation(c: Conversation) {\r\n Contracts.throwIfNullOrUndefined(c, \"Conversation\");\r\n this.isMeetingRecognizer = false;\r\n this.privConversation = c;\r\n }\r\n\r\n public getConversationInfo(): ConversationInfo {\r\n Contracts.throwIfNullOrUndefined(this.privConversation, \"Conversation\");\r\n return this.privConversation.conversationInfo;\r\n }\r\n\r\n public set meeting(m: Meeting) {\r\n Contracts.throwIfNullOrUndefined(m, \"Meeting\");\r\n this.isMeetingRecognizer = true;\r\n this.privMeeting = m;\r\n }\r\n\r\n public getMeetingInfo(): MeetingInfo {\r\n Contracts.throwIfNullOrUndefined(this.privMeeting, \"Meeting\");\r\n return this.privMeeting.meetingInfo;\r\n }\r\n\r\n public IsMeetingRecognizer(): boolean {\r\n return this.isMeetingRecognizer;\r\n }\r\n\r\n public startContinuousRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.startContinuousRecognitionAsyncImpl(RecognitionMode.Conversation), cb, err);\r\n }\r\n\r\n public stopContinuousRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.stopContinuousRecognitionAsyncImpl(), cb, err);\r\n }\r\n\r\n public async close(): Promise {\r\n if (!this.privDisposedRecognizer) {\r\n await this.dispose(true);\r\n }\r\n }\r\n\r\n // Push async join/leave conversation message via serviceRecognizer\r\n public async pushConversationEvent(conversationInfo: ConversationInfo, command: string): Promise {\r\n const reco = (this.privReco) as TranscriptionServiceRecognizer;\r\n Contracts.throwIfNullOrUndefined(reco, \"serviceRecognizer\");\r\n await reco.sendSpeechEventAsync(conversationInfo, command);\r\n }\r\n\r\n // Push async join/leave meeting message via serviceRecognizer\r\n public async pushMeetingEvent(meetingInfo: MeetingInfo, command: string): Promise {\r\n const reco = (this.privReco) as TranscriptionServiceRecognizer;\r\n Contracts.throwIfNullOrUndefined(reco, \"serviceRecognizer\");\r\n await reco.sendMeetingSpeechEventAsync(meetingInfo, command);\r\n }\r\n\r\n public async enforceAudioGating(): Promise {\r\n const audioConfigImpl = this.audioConfig as AudioConfigImpl;\r\n const format: AudioStreamFormatImpl = await audioConfigImpl.format;\r\n const channels = format.channels;\r\n if (channels === 1) {\r\n if (this.properties.getProperty(\"f0f5debc-f8c9-4892-ac4b-90a7ab359fd2\", \"false\").toLowerCase() !== \"true\") {\r\n throw new Error(\"Single channel audio configuration for MeetingTranscriber is currently under private preview, please contact diarizationrequest@microsoft.com for more details\");\r\n }\r\n } else if (channels !== 8) {\r\n throw new Error(`Unsupported audio configuration: Detected ${channels}-channel audio`);\r\n }\r\n return;\r\n }\r\n\r\n public connectMeetingCallbacks(transcriber: MeetingTranscriber): void {\r\n this.isMeetingRecognizer = true;\r\n this.canceled = (s: any, e: CancellationEventArgs): void => {\r\n if (!!transcriber.canceled) {\r\n transcriber.canceled(transcriber, e);\r\n }\r\n };\r\n this.recognizing = (s: any, e: SpeechRecognitionEventArgs): void => {\r\n if (!!transcriber.transcribing) {\r\n transcriber.transcribing(transcriber, e);\r\n }\r\n };\r\n this.recognized = (s: any, e: SpeechRecognitionEventArgs): void => {\r\n if (!!transcriber.transcribed) {\r\n transcriber.transcribed(transcriber, e);\r\n }\r\n };\r\n this.sessionStarted = (s: any, e: SessionEventArgs): void => {\r\n if (!!transcriber.sessionStarted) {\r\n transcriber.sessionStarted(transcriber, e);\r\n }\r\n };\r\n this.sessionStopped = (s: any, e: SessionEventArgs): void => {\r\n if (!!transcriber.sessionStopped) {\r\n transcriber.sessionStopped(transcriber, e);\r\n }\r\n };\r\n }\r\n\r\n public disconnectCallbacks(): void {\r\n this.canceled = undefined;\r\n this.recognizing = undefined;\r\n this.recognized = undefined;\r\n this.sessionStarted = undefined;\r\n this.sessionStopped = undefined;\r\n }\r\n\r\n /**\r\n * Disposes any resources held by the object.\r\n * @member ConversationTranscriber.prototype.dispose\r\n * @function\r\n * @public\r\n * @param {boolean} disposing - true if disposing the object.\r\n */\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposedRecognizer) {\r\n return;\r\n }\r\n\r\n if (disposing) {\r\n this.privDisposedRecognizer = true;\r\n await this.implRecognizerStop();\r\n }\r\n\r\n await super.dispose(disposing);\r\n }\r\n\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(\r\n speechConfig,\r\n this.properties);\r\n }\r\n\r\n protected createServiceRecognizer(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioConfig: AudioConfig,\r\n recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n const configImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n return new TranscriptionServiceRecognizer(authentication, connectionFactory, configImpl, recognizerConfig, this);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ProxyInfo,\r\n WebsocketConnection,\r\n} from \"../common.browser/Exports.js\";\r\nimport {\r\n IConnection,\r\n IStringDictionary,\r\n} from \"../common/Exports.js\";\r\nimport { StringUtils } from \"../common/StringUtils.js\";\r\nimport {\r\n PropertyId\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n ConnectionFactoryBase\r\n} from \"./ConnectionFactoryBase.js\";\r\nimport {\r\n AuthInfo,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n WebsocketMessageFormatter,\r\n} from \"./Exports.js\";\r\nimport { HeaderNames } from \"./HeaderNames.js\";\r\nimport { QueryParameterNames } from \"./QueryParameterNames.js\";\r\n\r\nexport class TranslationConnectionFactory extends ConnectionFactoryBase {\r\n\r\n public create(\r\n config: RecognizerConfig,\r\n authInfo: AuthInfo,\r\n connectionId?: string): IConnection {\r\n\r\n const endpoint: string = this.getEndpointUrl(config);\r\n\r\n const queryParams: IStringDictionary = {};\r\n\r\n if (config.autoDetectSourceLanguages !== undefined) {\r\n queryParams[QueryParameterNames.EnableLanguageId] = \"true\";\r\n }\r\n this.setQueryParams(queryParams, config, endpoint);\r\n\r\n const headers: IStringDictionary = {};\r\n if (authInfo.token !== undefined && authInfo.token !== \"\") {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n headers[HeaderNames.ConnectionId] = connectionId;\r\n\r\n config.parameters.setProperty(PropertyId.SpeechServiceConnection_Url, endpoint);\r\n\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n return new WebsocketConnection(endpoint, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n }\r\n\r\n public getEndpointUrl(config: RecognizerConfig, returnRegionPlaceholder?: boolean): string {\r\n\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region);\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n\r\n let endpointUrl: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint, undefined);\r\n if (!endpointUrl) {\r\n if (config.autoDetectSourceLanguages !== undefined) {\r\n const host: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Host, \"wss://{region}.stt.speech\" + hostSuffix);\r\n endpointUrl = host + \"/speech/universal/v2\";\r\n } else {\r\n const host: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Host, \"wss://{region}.s2s.speech\" + hostSuffix);\r\n endpointUrl = host + \"/speech/translation/cognitiveservices/v1\";\r\n }\r\n }\r\n\r\n if (returnRegionPlaceholder === true) {\r\n return endpointUrl;\r\n }\r\n\r\n return StringUtils.formatString(endpointUrl, { region });\r\n }\r\n\r\n public setQueryParams(queryParams: IStringDictionary, config: RecognizerConfig, endpointUrl: string): void {\r\n\r\n queryParams.from = config.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage);\r\n queryParams.to = config.parameters.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages);\r\n queryParams.scenario = config.recognitionMode === RecognitionMode.Interactive ? \"interactive\" :\r\n config.recognitionMode === RecognitionMode.Conversation ? \"conversation\" : \"\";\r\n\r\n this.setCommonUrlParams(config, queryParams, endpointUrl);\r\n this.setUrlParameter(\r\n PropertyId.SpeechServiceResponse_TranslationRequestStablePartialResult,\r\n QueryParameterNames.StableTranslation,\r\n config,\r\n queryParams,\r\n endpointUrl\r\n );\r\n\r\n const translationVoice: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_TranslationVoice, undefined);\r\n if (translationVoice !== undefined) {\r\n queryParams.voice = translationVoice;\r\n queryParams.features = \"texttospeech\";\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ConnectionEvent,\r\n IAudioSource,\r\n MessageType,\r\n TranslationStatus,\r\n} from \"../common/Exports.js\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n SpeechRecognitionResult,\r\n TranslationRecognitionCanceledEventArgs,\r\n TranslationRecognitionEventArgs,\r\n TranslationRecognitionResult,\r\n TranslationRecognizer,\r\n Translations,\r\n TranslationSynthesisEventArgs,\r\n TranslationSynthesisResult,\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n CancellationErrorCodePropertyName,\r\n ConversationServiceRecognizer,\r\n EnumTranslation,\r\n ITranslationHypothesis,\r\n RecognitionStatus,\r\n SynthesisStatus,\r\n TranslationHypothesis,\r\n TranslationPhrase,\r\n TranslationSynthesisEnd,\r\n} from \"./Exports.js\";\r\nimport { IAuthentication } from \"./IAuthentication.js\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory.js\";\r\nimport { RecognizerConfig } from \"./RecognizerConfig.js\";\r\nimport { ITranslationPhrase } from \"./ServiceMessages/TranslationPhrase.js\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal.js\";\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class TranslationServiceRecognizer extends ConversationServiceRecognizer {\r\n private privTranslationRecognizer: TranslationRecognizer;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n translationRecognizer: TranslationRecognizer) {\r\n\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, translationRecognizer);\r\n this.privTranslationRecognizer = translationRecognizer;\r\n this.connectionEvents.attach((connectionEvent: ConnectionEvent): void => {\r\n if (connectionEvent.name === \"ConnectionEstablishedEvent\") {\r\n this.privTranslationRecognizer.onConnection();\r\n }\r\n });\r\n\r\n }\r\n\r\n protected async processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n let processed: boolean = await this.processSpeechMessages(connectionMessage);\r\n if (processed) {\r\n return true;\r\n }\r\n\r\n const handleTranslationPhrase = async (translatedPhrase: TranslationPhrase): Promise => {\r\n this.privRequestSession.onPhraseRecognized(this.privRequestSession.currentTurnAudioOffset + translatedPhrase.Offset + translatedPhrase.Duration);\r\n\r\n if (translatedPhrase.RecognitionStatus === RecognitionStatus.Success) {\r\n\r\n // OK, the recognition was successful. How'd the translation do?\r\n const result: TranslationRecognitionEventArgs = this.fireEventForResult(translatedPhrase, resultProps);\r\n if (!!this.privTranslationRecognizer.recognized) {\r\n try {\r\n this.privTranslationRecognizer.recognized(this.privTranslationRecognizer, result);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n // report result to promise.\r\n if (!!this.privSuccessCallback) {\r\n try {\r\n this.privSuccessCallback(result.result);\r\n } catch (e) {\r\n if (!!this.privErrorCallback) {\r\n this.privErrorCallback(e as string);\r\n }\r\n }\r\n // Only invoke the call back once.\r\n // and if it's successful don't invoke the\r\n // error after that.\r\n this.privSuccessCallback = undefined;\r\n this.privErrorCallback = undefined;\r\n }\r\n } else {\r\n const reason: ResultReason = EnumTranslation.implTranslateRecognitionResult(translatedPhrase.RecognitionStatus);\r\n\r\n const result = new TranslationRecognitionResult(\r\n undefined,\r\n this.privRequestSession.requestId,\r\n reason,\r\n translatedPhrase.Text,\r\n translatedPhrase.Duration,\r\n this.privRequestSession.currentTurnAudioOffset + translatedPhrase.Offset,\r\n translatedPhrase.Language,\r\n translatedPhrase.Confidence,\r\n undefined,\r\n connectionMessage.textBody,\r\n resultProps);\r\n\r\n if (reason === ResultReason.Canceled) {\r\n const cancelReason: CancellationReason = EnumTranslation.implTranslateCancelResult(translatedPhrase.RecognitionStatus);\r\n const cancellationErrorCode: CancellationErrorCode = EnumTranslation.implTranslateCancelErrorCode(translatedPhrase.RecognitionStatus);\r\n\r\n await this.cancelRecognitionLocal(\r\n cancelReason,\r\n cancellationErrorCode,\r\n EnumTranslation.implTranslateErrorDetails(cancellationErrorCode));\r\n\r\n } else {\r\n if (!(this.privRequestSession.isSpeechEnded && reason === ResultReason.NoMatch && translatedPhrase.RecognitionStatus !== RecognitionStatus.InitialSilenceTimeout)) {\r\n const ev = new TranslationRecognitionEventArgs(result, result.offset, this.privRequestSession.sessionId);\r\n\r\n if (!!this.privTranslationRecognizer.recognized) {\r\n try {\r\n this.privTranslationRecognizer.recognized(this.privTranslationRecognizer, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n }\r\n\r\n // report result to promise.\r\n if (!!this.privSuccessCallback) {\r\n try {\r\n this.privSuccessCallback(result);\r\n } catch (e) {\r\n if (!!this.privErrorCallback) {\r\n this.privErrorCallback(e as string);\r\n }\r\n }\r\n // Only invoke the call back once.\r\n // and if it's successful don't invoke the\r\n // error after that.\r\n this.privSuccessCallback = undefined;\r\n this.privErrorCallback = undefined;\r\n }\r\n }\r\n processed = true;\r\n }\r\n\r\n };\r\n\r\n const handleTranslationHypothesis = (hypothesis: TranslationHypothesis, resultProperties: PropertyCollection): void => {\r\n const result: TranslationRecognitionEventArgs = this.fireEventForResult(hypothesis, resultProperties);\r\n this.privRequestSession.onHypothesis(this.privRequestSession.currentTurnAudioOffset + result.offset);\r\n\r\n if (!!this.privTranslationRecognizer.recognizing) {\r\n try {\r\n this.privTranslationRecognizer.recognizing(this.privTranslationRecognizer, result);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n processed = true;\r\n };\r\n\r\n if (connectionMessage.messageType === MessageType.Text) {\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, connectionMessage.textBody);\r\n }\r\n\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"translation.hypothesis\":\r\n handleTranslationHypothesis(TranslationHypothesis.fromJSON(connectionMessage.textBody), resultProps);\r\n break;\r\n\r\n case \"translation.response\":\r\n const phrase: { SpeechPhrase: ITranslationPhrase } = JSON.parse(connectionMessage.textBody) as { SpeechPhrase: ITranslationPhrase };\r\n if (!!phrase.SpeechPhrase) {\r\n await handleTranslationPhrase(TranslationPhrase.fromTranslationResponse(phrase));\r\n } else {\r\n const hypothesis: { SpeechHypothesis: ITranslationHypothesis } = JSON.parse(connectionMessage.textBody) as { SpeechHypothesis: ITranslationHypothesis };\r\n if (!!hypothesis.SpeechHypothesis) {\r\n handleTranslationHypothesis(TranslationHypothesis.fromTranslationResponse(hypothesis), resultProps);\r\n }\r\n }\r\n break;\r\n case \"translation.phrase\":\r\n await handleTranslationPhrase(TranslationPhrase.fromJSON(connectionMessage.textBody));\r\n break;\r\n\r\n case \"translation.synthesis\":\r\n this.sendSynthesisAudio(connectionMessage.binaryBody, this.privRequestSession.sessionId);\r\n processed = true;\r\n break;\r\n\r\n case \"audio.end\":\r\n case \"translation.synthesis.end\":\r\n const synthEnd: TranslationSynthesisEnd = TranslationSynthesisEnd.fromJSON(connectionMessage.textBody);\r\n\r\n switch (synthEnd.SynthesisStatus) {\r\n case SynthesisStatus.Error:\r\n if (!!this.privTranslationRecognizer.synthesizing) {\r\n const result = new TranslationSynthesisResult(ResultReason.Canceled, undefined);\r\n const retEvent: TranslationSynthesisEventArgs = new TranslationSynthesisEventArgs(result, this.privRequestSession.sessionId);\r\n\r\n try {\r\n this.privTranslationRecognizer.synthesizing(this.privTranslationRecognizer, retEvent);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n if (!!this.privTranslationRecognizer.canceled) {\r\n // And raise a canceled event to send the rich(er) error message back.\r\n const canceledResult: TranslationRecognitionCanceledEventArgs = new TranslationRecognitionCanceledEventArgs(\r\n this.privRequestSession.sessionId,\r\n CancellationReason.Error,\r\n synthEnd.FailureReason,\r\n CancellationErrorCode.ServiceError,\r\n null);\r\n\r\n try {\r\n this.privTranslationRecognizer.canceled(this.privTranslationRecognizer, canceledResult);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n break;\r\n case SynthesisStatus.Success:\r\n this.sendSynthesisAudio(undefined, this.privRequestSession.sessionId);\r\n break;\r\n default:\r\n break;\r\n }\r\n processed = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n return processed;\r\n }\r\n\r\n // Cancels recognition.\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n const properties: PropertyCollection = new PropertyCollection();\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n\r\n if (!!this.privTranslationRecognizer.canceled) {\r\n\r\n const cancelEvent: TranslationRecognitionCanceledEventArgs = new TranslationRecognitionCanceledEventArgs(\r\n sessionId,\r\n cancellationReason,\r\n error,\r\n errorCode,\r\n undefined);\r\n\r\n try {\r\n this.privTranslationRecognizer.canceled(this.privTranslationRecognizer, cancelEvent);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n\r\n if (!!this.privSuccessCallback) {\r\n const result: TranslationRecognitionResult = new TranslationRecognitionResult(\r\n undefined, // Translations\r\n requestId,\r\n ResultReason.Canceled,\r\n undefined, // Text\r\n undefined, // Druation\r\n undefined, // Offset\r\n undefined, // Language\r\n undefined, // LanguageDetectionConfidence\r\n error,\r\n undefined, // Json\r\n properties);\r\n try {\r\n this.privSuccessCallback(result);\r\n /* eslint-disable no-empty */\r\n this.privSuccessCallback = undefined;\r\n } catch { }\r\n }\r\n }\r\n\r\n protected handleRecognizingCallback(result: SpeechRecognitionResult, duration: number, sessionId: string): void {\r\n try {\r\n const ev = new TranslationRecognitionEventArgs(TranslationRecognitionResult.fromSpeechRecognitionResult(result), duration, sessionId);\r\n this.privTranslationRecognizer.recognizing(this.privTranslationRecognizer, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n protected handleRecognizedCallback(result: SpeechRecognitionResult, offset: number, sessionId: string): void {\r\n try {\r\n const ev = new TranslationRecognitionEventArgs(TranslationRecognitionResult.fromSpeechRecognitionResult(result), offset, sessionId);\r\n this.privTranslationRecognizer.recognized(this.privTranslationRecognizer, ev);\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n private fireEventForResult(serviceResult: TranslationHypothesis | TranslationPhrase, properties: PropertyCollection): TranslationRecognitionEventArgs {\r\n let translations: Translations;\r\n\r\n if (undefined !== serviceResult.Translation.Translations) {\r\n translations = new Translations();\r\n for (const translation of serviceResult.Translation.Translations) {\r\n translations.set(translation.Language, translation.Text || translation.DisplayText);\r\n }\r\n }\r\n\r\n let resultReason: ResultReason;\r\n let confidence: string;\r\n if (serviceResult instanceof TranslationPhrase) {\r\n if (!!serviceResult.Translation && serviceResult.Translation.TranslationStatus === TranslationStatus.Success) {\r\n resultReason = ResultReason.TranslatedSpeech;\r\n } else {\r\n resultReason = ResultReason.RecognizedSpeech;\r\n }\r\n confidence = serviceResult.Confidence;\r\n } else {\r\n resultReason = ResultReason.TranslatingSpeech;\r\n }\r\n const language = serviceResult.Language;\r\n\r\n const offset: number = serviceResult.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n\r\n const result = new TranslationRecognitionResult(\r\n translations,\r\n this.privRequestSession.requestId,\r\n resultReason,\r\n serviceResult.Text,\r\n serviceResult.Duration,\r\n offset,\r\n language,\r\n confidence,\r\n serviceResult.Translation.FailureReason,\r\n JSON.stringify(serviceResult),\r\n properties);\r\n\r\n const ev = new TranslationRecognitionEventArgs(result, offset, this.privRequestSession.sessionId);\r\n return ev;\r\n }\r\n\r\n private sendSynthesisAudio(audio: ArrayBuffer, sessionId: string): void {\r\n const reason = (undefined === audio) ? ResultReason.SynthesizingAudioCompleted : ResultReason.SynthesizingAudio;\r\n const result = new TranslationSynthesisResult(reason, audio);\r\n const retEvent: TranslationSynthesisEventArgs = new TranslationSynthesisEventArgs(result, sessionId);\r\n\r\n if (!!this.privTranslationRecognizer.synthesizing) {\r\n try {\r\n this.privTranslationRecognizer.synthesizing(this.privTranslationRecognizer, retEvent);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines translation status.\r\n * @class TranslationStatus\r\n */\r\nexport enum TranslationStatus {\r\n /**\r\n * @member TranslationStatus.Success\r\n */\r\n Success = 0,\r\n\r\n /**\r\n * @member TranslationStatus.Error\r\n */\r\n Error,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ReplayableAudioNode } from \"../common.browser/Exports.js\";\r\nimport {\r\n DeferralMap,\r\n Deferred,\r\n IAudioSource,\r\n IAudioStreamNode,\r\n IConnection,\r\n MessageType,\r\n} from \"../common/Exports.js\";\r\nimport { AudioStreamFormatImpl } from \"../sdk/Audio/AudioStreamFormat.js\";\r\nimport { SpeakerRecognitionModel } from \"../sdk/SpeakerRecognitionModel.js\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n VoiceProfileClient,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n SessionEventArgs,\r\n VoiceProfileEnrollmentResult,\r\n VoiceProfilePhraseResult,\r\n VoiceProfileResult,\r\n VoiceProfileType,\r\n VoiceProfile\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n CancellationErrorCodePropertyName,\r\n EnrollmentResponse,\r\n IProfile,\r\n ISpeechConfigAudioDevice,\r\n ProfilePhraseResponse,\r\n ProfileResponse,\r\n ServiceRecognizerBase,\r\n} from \"./Exports.js\";\r\nimport { IAuthentication } from \"./IAuthentication.js\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory.js\";\r\nimport { RecognizerConfig } from \"./RecognizerConfig.js\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal.js\";\r\n\r\ninterface CreateProfile {\r\n scenario: string;\r\n locale: string;\r\n number: string;\r\n}\r\n\r\ninterface PhraseRequest {\r\n scenario: string;\r\n locale: string;\r\n}\r\n\r\ninterface SpeakerContext {\r\n scenario: string;\r\n profileIds: string[];\r\n features: {\r\n interimResult: string;\r\n progressiveDetection: string;\r\n };\r\n}\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class VoiceServiceRecognizer extends ServiceRecognizerBase {\r\n private privSpeakerAudioSource: IAudioSource;\r\n private privDeferralMap: DeferralMap = new DeferralMap();\r\n private privExpectedProfileId: string;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n recognizer: VoiceProfileClient) {\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, recognizer);\r\n this.privSpeakerAudioSource = audioSource;\r\n this.sendPrePayloadJSONOverride = (): Promise => this.noOp();\r\n }\r\n\r\n public set SpeakerAudioSource(audioSource: IAudioSource) {\r\n this.privSpeakerAudioSource = audioSource;\r\n }\r\n\r\n protected processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n\r\n let processed: boolean = false;\r\n\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n if (connectionMessage.messageType === MessageType.Text) {\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, connectionMessage.textBody);\r\n }\r\n\r\n switch (connectionMessage.path.toLowerCase()) {\r\n // Profile management response for create, fetch, delete, reset\r\n case \"speaker.profiles\":\r\n const response: ProfileResponse = JSON.parse(connectionMessage.textBody) as ProfileResponse;\r\n switch (response.operation.toLowerCase()) {\r\n case \"create\":\r\n this.handleCreateResponse(response, connectionMessage.requestId);\r\n break;\r\n\r\n case \"delete\":\r\n case \"reset\":\r\n this.handleResultResponse(response, connectionMessage.requestId);\r\n break;\r\n\r\n case \"fetch\":\r\n const enrollmentResponse: EnrollmentResponse = JSON.parse(connectionMessage.textBody) as EnrollmentResponse;\r\n this.handleFetchResponse(enrollmentResponse, connectionMessage.requestId);\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n processed = true;\r\n break;\r\n // Activation and authorization phrase response\r\n case \"speaker.phrases\":\r\n const phraseResponse: ProfilePhraseResponse = JSON.parse(connectionMessage.textBody) as ProfilePhraseResponse;\r\n this.handlePhrasesResponse(phraseResponse, connectionMessage.requestId);\r\n processed = true;\r\n break;\r\n // Enrollment response\r\n case \"speaker.profile.enrollment\":\r\n const enrollmentResponse: EnrollmentResponse = JSON.parse(connectionMessage.textBody) as EnrollmentResponse;\r\n const result: VoiceProfileEnrollmentResult = new VoiceProfileEnrollmentResult(\r\n this.enrollmentReasonFrom(!!enrollmentResponse.enrollment ? enrollmentResponse.enrollment.enrollmentStatus : enrollmentResponse.status.statusCode),\r\n !!enrollmentResponse.enrollment ? JSON.stringify(enrollmentResponse.enrollment) : undefined,\r\n enrollmentResponse.status.reason,\r\n );\r\n if (!!this.privDeferralMap.getId(connectionMessage.requestId)) {\r\n this.privDeferralMap.complete(connectionMessage.requestId, result);\r\n }\r\n this.privRequestSession.onSpeechEnded();\r\n processed = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n const defferal = new Deferred();\r\n defferal.resolve(processed);\r\n return defferal.promise;\r\n }\r\n\r\n // Cancels recognition.\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n const properties: PropertyCollection = new PropertyCollection();\r\n // const enrollmentResponse: EnrollmentResponse = JSON.parse(connectionMessage.textBody) as EnrollmentResponse;\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n\r\n const result: VoiceProfileEnrollmentResult = new VoiceProfileEnrollmentResult(\r\n ResultReason.Canceled,\r\n error,\r\n error,\r\n );\r\n if (!!this.privDeferralMap.getId(requestId)) {\r\n this.privDeferralMap.complete(requestId, result);\r\n }\r\n }\r\n\r\n public async createProfile(profileType: VoiceProfileType, locale: string): Promise {\r\n // Start the connection to the service. The promise this will create is stored and will be used by configureConnection().\r\n this.voiceProfileType = profileType.toString();\r\n const conPromise: Promise = this.connectImpl();\r\n try {\r\n const createProfileDeferral = new Deferred();\r\n await conPromise;\r\n await this.sendCreateProfile(createProfileDeferral, profileType, locale);\r\n void this.receiveMessage();\r\n return createProfileDeferral.promise;\r\n } catch (err) {\r\n throw err;\r\n }\r\n }\r\n\r\n public async resetProfile(profile: VoiceProfile): Promise {\r\n this.voiceProfileType = profile.profileType.toString();\r\n return this.sendCommonRequest(\"reset\", profile.profileType, profile);\r\n }\r\n\r\n public async deleteProfile(profile: VoiceProfile): Promise {\r\n this.voiceProfileType = profile.profileType.toString();\r\n return this.sendCommonRequest(\"delete\", profile.profileType, profile);\r\n }\r\n\r\n public async retrieveEnrollmentResult(profile: VoiceProfile): Promise {\r\n this.voiceProfileType = profile.profileType.toString();\r\n this.privExpectedProfileId = profile.profileId;\r\n return this.sendCommonRequest(\"fetch\", profile.profileType, profile);\r\n }\r\n\r\n public async getAllProfiles(profileType: VoiceProfileType): Promise {\r\n this.voiceProfileType = profileType.toString();\r\n return this.sendCommonRequest(\"fetch\", profileType);\r\n }\r\n\r\n public async getActivationPhrases(profileType: VoiceProfileType, lang: string): Promise {\r\n this.voiceProfileType = profileType.toString();\r\n // Start the connection to the service. The promise this will create is stored and will be used by configureConnection().\r\n const conPromise: Promise = this.connectImpl();\r\n try {\r\n const getPhrasesDeferral = new Deferred();\r\n await conPromise;\r\n await this.sendPhrasesRequest(getPhrasesDeferral, profileType, lang);\r\n void this.receiveMessage();\r\n return getPhrasesDeferral.promise;\r\n } catch (err) {\r\n throw err;\r\n }\r\n }\r\n\r\n public async enrollProfile(profile: VoiceProfile): Promise {\r\n this.voiceProfileType = profile.profileType.toString();\r\n const enrollmentDeferral = new Deferred();\r\n this.privRequestSession.startNewRecognition();\r\n this.privRequestSession.listenForServiceTelemetry(this.privSpeakerAudioSource.events);\r\n\r\n this.privRecognizerConfig.parameters.setProperty(PropertyId.Speech_SessionId, this.privRequestSession.sessionId);\r\n\r\n // Start the connection to the service. The promise this will create is stored and will be used by configureConnection().\r\n const conPromise: Promise = this.connectImpl();\r\n\r\n const preAudioPromise: Promise = this.sendPreAudioMessages(profile, enrollmentDeferral);\r\n\r\n const node: IAudioStreamNode = await this.privSpeakerAudioSource.attach(this.privRequestSession.audioNodeId);\r\n const format: AudioStreamFormatImpl = await this.privSpeakerAudioSource.format;\r\n const deviceInfo: ISpeechConfigAudioDevice = await this.privSpeakerAudioSource.deviceInfo;\r\n\r\n const audioNode = new ReplayableAudioNode(node, format.avgBytesPerSec);\r\n await this.privRequestSession.onAudioSourceAttachCompleted(audioNode, false);\r\n\r\n this.privRecognizerConfig.SpeechServiceConfig.Context.audio = { source: deviceInfo };\r\n\r\n try {\r\n await conPromise;\r\n await preAudioPromise;\r\n } catch (err) {\r\n this.cancelRecognition(this.privRequestSession.sessionId, this.privRequestSession.requestId, CancellationReason.Error, CancellationErrorCode.ConnectionFailure, err as string);\r\n }\r\n\r\n const sessionStartEventArgs: SessionEventArgs = new SessionEventArgs(this.privRequestSession.sessionId);\r\n\r\n if (!!this.privRecognizer.sessionStarted) {\r\n this.privRecognizer.sessionStarted(this.privRecognizer, sessionStartEventArgs);\r\n }\r\n\r\n void this.receiveMessage();\r\n const audioSendPromise = this.sendAudio(audioNode);\r\n\r\n // /* eslint-disable no-empty */\r\n audioSendPromise.then((): void => { /* add? return true;*/ }, (error: string): void => {\r\n this.cancelRecognition(this.privRequestSession.sessionId, this.privRequestSession.requestId, CancellationReason.Error, CancellationErrorCode.RuntimeError, error);\r\n });\r\n\r\n return enrollmentDeferral.promise;\r\n }\r\n\r\n private async sendPreAudioMessages(profile: VoiceProfile, enrollmentDeferral: Deferred): Promise {\r\n const connection: IConnection = await this.fetchConnection();\r\n this.privRequestSession.onSpeechContext();\r\n this.privDeferralMap.add(this.privRequestSession.requestId, enrollmentDeferral);\r\n await this.sendBaseRequest(connection, \"enroll\", this.scenarioFrom(profile.profileType), profile);\r\n }\r\n\r\n private async sendPhrasesRequest(getPhrasesDeferral: Deferred, profileType: VoiceProfileType, locale: string): Promise {\r\n const connection: IConnection = await this.fetchConnection();\r\n this.privRequestSession.onSpeechContext();\r\n this.privDeferralMap.add(this.privRequestSession.requestId, getPhrasesDeferral);\r\n const scenario = this.scenarioFrom(profileType);\r\n\r\n const profileCreateRequest: PhraseRequest = {\r\n locale,\r\n scenario,\r\n };\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"speaker.profile.phrases\",\r\n this.privRequestSession.requestId,\r\n \"application/json; charset=utf-8\",\r\n JSON.stringify(profileCreateRequest)));\r\n }\r\n\r\n private async sendCreateProfile(createProfileDeferral: Deferred, profileType: VoiceProfileType, locale: string): Promise {\r\n\r\n const connection: IConnection = await this.fetchConnection();\r\n this.privRequestSession.onSpeechContext();\r\n this.privDeferralMap.add(this.privRequestSession.requestId, createProfileDeferral);\r\n const scenario = profileType === VoiceProfileType.TextIndependentIdentification ? \"TextIndependentIdentification\" :\r\n profileType === VoiceProfileType.TextIndependentVerification ? \"TextIndependentVerification\" : \"TextDependentVerification\";\r\n\r\n const profileCreateRequest: CreateProfile = {\r\n locale,\r\n number: \"1\",\r\n scenario,\r\n };\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"speaker.profile.create\",\r\n this.privRequestSession.requestId,\r\n \"application/json; charset=utf-8\",\r\n JSON.stringify(profileCreateRequest)));\r\n }\r\n\r\n private async sendCommonRequest(operation: string, profileType: VoiceProfileType, profile: VoiceProfile = undefined): Promise {\r\n // Start the connection to the service. The promise this will create is stored and will be used by configureConnection().\r\n const conPromise: Promise = this.connectImpl();\r\n try {\r\n const deferral = new Deferred();\r\n this.privRequestSession.onSpeechContext();\r\n await conPromise;\r\n const connection: IConnection = await this.fetchConnection();\r\n this.privDeferralMap.add(this.privRequestSession.requestId, deferral);\r\n await this.sendBaseRequest(connection, operation, this.scenarioFrom(profileType), profile);\r\n void this.receiveMessage();\r\n return deferral.promise;\r\n } catch (err) {\r\n throw err;\r\n }\r\n }\r\n\r\n private async sendBaseRequest(connection: IConnection, operation: string, scenario: string, profile: VoiceProfile): Promise {\r\n const profileRequest: { maxPageSize?: number; profileIds?: string[]; scenario: string } = {\r\n scenario\r\n };\r\n if (!!profile) {\r\n profileRequest.profileIds = [ profile.profileId ];\r\n } else {\r\n profileRequest.maxPageSize = -1;\r\n }\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n `speaker.profile.${operation}`,\r\n this.privRequestSession.requestId,\r\n \"application/json; charset=utf-8\",\r\n JSON.stringify(profileRequest)));\r\n }\r\n\r\n private extractSpeakerContext(model: SpeakerRecognitionModel): SpeakerContext {\r\n return {\r\n features: {\r\n interimResult: \"enabled\",\r\n progressiveDetection: \"disabled\",\r\n },\r\n profileIds: model.profileIds,\r\n scenario: model.scenario,\r\n };\r\n }\r\n\r\n private handlePhrasesResponse(response: ProfilePhraseResponse, requestId: string): void {\r\n if (!!this.privDeferralMap.getId(requestId)) {\r\n if (response.status.statusCode.toLowerCase() !== \"success\") {\r\n const reason: ResultReason = ResultReason.Canceled;\r\n const result = new VoiceProfilePhraseResult(reason, response.status.statusCode, response.passPhraseType, []);\r\n this.privDeferralMap.complete(requestId, result);\r\n } else if (!!response.phrases && response.phrases.length > 0) {\r\n const reason: ResultReason = ResultReason.EnrollingVoiceProfile;\r\n const result = new VoiceProfilePhraseResult(reason, response.status.statusCode, response.passPhraseType, response.phrases);\r\n this.privDeferralMap.complete(requestId, result);\r\n } else {\r\n throw new Error(\"Voice Profile get activation phrases failed, no phrases received\");\r\n }\r\n } else {\r\n throw new Error(`Voice Profile get activation phrases request for requestID ${requestId} not found`);\r\n }\r\n }\r\n\r\n private handleCreateResponse(response: ProfileResponse, requestId: string): void {\r\n if (!!response.profiles && response.profiles.length > 0) {\r\n if (!!this.privDeferralMap.getId(requestId)) {\r\n const profileIds: string[] = response.profiles.map((profile: IProfile): string => profile.profileId);\r\n this.privDeferralMap.complete(requestId, profileIds);\r\n } else {\r\n throw new Error(`Voice Profile create request for requestID ${requestId} not found`);\r\n }\r\n } else {\r\n throw new Error(\"Voice Profile create failed, no profile id received\");\r\n }\r\n }\r\n\r\n private handleResultResponse(response: ProfileResponse, requestId: string): void {\r\n if (!!this.privDeferralMap.getId(requestId)) {\r\n const successReason: ResultReason = response.operation.toLowerCase() === \"delete\" ? ResultReason.DeletedVoiceProfile : ResultReason.ResetVoiceProfile;\r\n const reason: ResultReason = response.status.statusCode.toLowerCase() === \"success\" ? successReason : ResultReason.Canceled;\r\n const result = new VoiceProfileResult(reason, `statusCode: ${response.status.statusCode}, errorDetails: ${response.status.reason}`);\r\n this.privDeferralMap.complete(requestId, result);\r\n } else {\r\n throw new Error(`Voice Profile create request for requestID ${requestId} not found`);\r\n }\r\n }\r\n\r\n private handleFetchResponse(enrollmentResponse: EnrollmentResponse, requestId: string): void {\r\n if (!!this.privDeferralMap.getId(requestId) && !!enrollmentResponse.profiles[0]) {\r\n if (!!this.privExpectedProfileId && enrollmentResponse.profiles.length === 1 && enrollmentResponse.profiles[0].profileId === this.privExpectedProfileId) {\r\n this.privExpectedProfileId = undefined;\r\n const profileInfo: IProfile = enrollmentResponse.profiles[0];\r\n const result: VoiceProfileEnrollmentResult = new VoiceProfileEnrollmentResult(\r\n this.enrollmentReasonFrom(profileInfo.enrollmentStatus),\r\n JSON.stringify(profileInfo),\r\n enrollmentResponse.status.reason,\r\n );\r\n this.privDeferralMap.complete(requestId, result);\r\n } else if (enrollmentResponse.profiles.length > 0) {\r\n const iProfiles: IProfile[] = enrollmentResponse.profiles;\r\n const profileResults: VoiceProfileEnrollmentResult[] = [];\r\n for (const profile of iProfiles) {\r\n profileResults.push( new VoiceProfileEnrollmentResult(\r\n this.enrollmentReasonFrom(profile.enrollmentStatus),\r\n JSON.stringify(profile),\r\n enrollmentResponse.status.reason,\r\n ));\r\n }\r\n this.privDeferralMap.complete(requestId, profileResults);\r\n }\r\n } else {\r\n throw new Error(`Voice Profile fetch request for requestID ${requestId} not found`);\r\n }\r\n }\r\n\r\n private enrollmentReasonFrom(statusCode: string): ResultReason {\r\n switch (statusCode.toLowerCase()) {\r\n case \"enrolled\":\r\n return ResultReason.EnrolledVoiceProfile;\r\n case \"invalidlocale\":\r\n case \"invalidphrase\":\r\n case \"invalidaudioformat\":\r\n case \"invalidscenario\":\r\n case \"invalidprofilecount\":\r\n case \"invalidoperation\":\r\n case \"audiotooshort\":\r\n case \"audiotoolong\":\r\n case \"toomanyenrollments\":\r\n case \"storageconflict\":\r\n case \"profilenotfound\":\r\n case \"incompatibleprofiles\":\r\n case \"incompleteenrollment\":\r\n return ResultReason.Canceled;\r\n default:\r\n return ResultReason.EnrollingVoiceProfile;\r\n }\r\n }\r\n\r\n private scenarioFrom(profileType: VoiceProfileType): string {\r\n return profileType === VoiceProfileType.TextIndependentIdentification ? \"TextIndependentIdentification\" :\r\n profileType === VoiceProfileType.TextIndependentVerification ? \"TextIndependentVerification\" : \"TextDependentVerification\";\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ConnectionMessage,\r\n Deferred,\r\n IStringDictionary,\r\n IWebsocketMessageFormatter,\r\n MessageType,\r\n RawWebsocketMessage,\r\n} from \"../common/Exports.js\";\r\n\r\nconst CRLF: string = \"\\r\\n\";\r\n\r\nexport class WebsocketMessageFormatter implements IWebsocketMessageFormatter {\r\n\r\n public toConnectionMessage(message: RawWebsocketMessage): Promise {\r\n const deferral = new Deferred();\r\n\r\n try {\r\n if (message.messageType === MessageType.Text) {\r\n const textMessage: string = message.textContent;\r\n let headers: IStringDictionary = {};\r\n let body: string = null;\r\n\r\n if (textMessage) {\r\n const headerBodySplit = textMessage.split(\"\\r\\n\\r\\n\");\r\n if (headerBodySplit && headerBodySplit.length > 0) {\r\n headers = this.parseHeaders(headerBodySplit[0]);\r\n if (headerBodySplit.length > 1) {\r\n body = headerBodySplit[1];\r\n }\r\n }\r\n }\r\n\r\n deferral.resolve(new ConnectionMessage(message.messageType, body, headers, message.id));\r\n } else if (message.messageType === MessageType.Binary) {\r\n const binaryMessage: ArrayBuffer = message.binaryContent;\r\n let headers: IStringDictionary = {};\r\n let body: ArrayBuffer = null;\r\n\r\n if (!binaryMessage || binaryMessage.byteLength < 2) {\r\n throw new Error(\"Invalid binary message format. Header length missing.\");\r\n }\r\n\r\n const dataView = new DataView(binaryMessage);\r\n const headerLength = dataView.getInt16(0);\r\n\r\n if (binaryMessage.byteLength < headerLength + 2) {\r\n throw new Error(\"Invalid binary message format. Header content missing.\");\r\n }\r\n\r\n let headersString = \"\";\r\n for (let i = 0; i < headerLength; i++) {\r\n headersString += String.fromCharCode((dataView).getInt8(i + 2));\r\n }\r\n\r\n headers = this.parseHeaders(headersString);\r\n\r\n if (binaryMessage.byteLength > headerLength + 2) {\r\n body = binaryMessage.slice(2 + headerLength);\r\n }\r\n\r\n deferral.resolve(new ConnectionMessage(message.messageType, body, headers, message.id));\r\n }\r\n } catch (e) {\r\n deferral.reject(`Error formatting the message. Error: ${e as string}`);\r\n }\r\n\r\n return deferral.promise;\r\n }\r\n\r\n public fromConnectionMessage(message: ConnectionMessage): Promise {\r\n const deferral = new Deferred();\r\n\r\n try {\r\n if (message.messageType === MessageType.Text) {\r\n const payload = `${this.makeHeaders(message)}${CRLF}${message.textBody ? message.textBody : \"\"}`;\r\n\r\n deferral.resolve(new RawWebsocketMessage(MessageType.Text, payload, message.id));\r\n\r\n } else if (message.messageType === MessageType.Binary) {\r\n const headersString = this.makeHeaders(message);\r\n const content = message.binaryBody;\r\n\r\n const headerBuffer = this.stringToArrayBuffer(headersString);\r\n const headerInt8Array = new Int8Array(headerBuffer);\r\n const headerLength = headerInt8Array.byteLength;\r\n\r\n const payloadInt8Array = new Int8Array(2 + headerLength + (content ? content.byteLength : 0));\r\n payloadInt8Array[0] = ((headerLength >> 8) & 0xff);\r\n payloadInt8Array[1] = headerLength & 0xff;\r\n payloadInt8Array.set(headerInt8Array, 2);\r\n\r\n if (content) {\r\n const bodyInt8Array = new Int8Array(content);\r\n payloadInt8Array.set(bodyInt8Array, 2 + headerLength);\r\n }\r\n\r\n const payload: ArrayBuffer = payloadInt8Array.buffer;\r\n\r\n deferral.resolve(new RawWebsocketMessage(MessageType.Binary, payload, message.id));\r\n }\r\n } catch (e) {\r\n deferral.reject(`Error formatting the message. ${e as string}`);\r\n }\r\n\r\n return deferral.promise;\r\n }\r\n\r\n private makeHeaders(message: ConnectionMessage): string {\r\n let headersString: string = \"\";\r\n\r\n if (message.headers) {\r\n for (const header in message.headers) {\r\n if (header) {\r\n headersString += `${header}: ${message.headers[header]}${CRLF}`;\r\n }\r\n }\r\n }\r\n\r\n return headersString;\r\n }\r\n\r\n private parseHeaders(headersString: string): IStringDictionary {\r\n const headers: IStringDictionary = {};\r\n\r\n if (headersString) {\r\n const headerMatches = headersString.match(/[^\\r\\n]+/g);\r\n if (headers) {\r\n for (const header of headerMatches) {\r\n if (header) {\r\n const separatorIndex = header.indexOf(\":\");\r\n const headerName = separatorIndex > 0 ? header.substr(0, separatorIndex).trim().toLowerCase() : header;\r\n const headerValue =\r\n separatorIndex > 0 && header.length > (separatorIndex + 1) ?\r\n header.substr(separatorIndex + 1).trim() :\r\n \"\";\r\n\r\n headers[headerName] = headerValue;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return headers;\r\n }\r\n\r\n private stringToArrayBuffer(str: string): ArrayBuffer {\r\n const buffer = new ArrayBuffer(str.length);\r\n const view = new DataView(buffer);\r\n for (let i = 0; i < str.length; i++) {\r\n view.setUint8(i, str.charCodeAt(i));\r\n }\r\n return buffer;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport { EventType, PlatformEvent } from \"./PlatformEvent.js\";\r\n\r\nexport class AudioSourceEvent extends PlatformEvent {\r\n private privAudioSourceId: string;\r\n\r\n public constructor(eventName: string, audioSourceId: string, eventType: EventType = EventType.Info) {\r\n super(eventName, eventType);\r\n this.privAudioSourceId = audioSourceId;\r\n }\r\n\r\n public get audioSourceId(): string {\r\n return this.privAudioSourceId;\r\n }\r\n}\r\n\r\nexport class AudioSourceInitializingEvent extends AudioSourceEvent {\r\n public constructor(audioSourceId: string) {\r\n super(\"AudioSourceInitializingEvent\", audioSourceId);\r\n }\r\n}\r\n\r\nexport class AudioSourceReadyEvent extends AudioSourceEvent {\r\n public constructor(audioSourceId: string) {\r\n super(\"AudioSourceReadyEvent\", audioSourceId);\r\n }\r\n}\r\n\r\nexport class AudioSourceOffEvent extends AudioSourceEvent {\r\n public constructor(audioSourceId: string) {\r\n super(\"AudioSourceOffEvent\", audioSourceId);\r\n }\r\n}\r\n\r\nexport class AudioSourceErrorEvent extends AudioSourceEvent {\r\n private privError: string;\r\n\r\n public constructor(audioSourceId: string, error: string) {\r\n super(\"AudioSourceErrorEvent\", audioSourceId, EventType.Error);\r\n this.privError = error;\r\n }\r\n\r\n public get error(): string {\r\n return this.privError;\r\n }\r\n}\r\n\r\nexport class AudioStreamNodeEvent extends AudioSourceEvent {\r\n private privAudioNodeId: string;\r\n\r\n public constructor(eventName: string, audioSourceId: string, audioNodeId: string) {\r\n super(eventName, audioSourceId);\r\n this.privAudioNodeId = audioNodeId;\r\n }\r\n\r\n public get audioNodeId(): string {\r\n return this.privAudioNodeId;\r\n }\r\n}\r\n\r\nexport class AudioStreamNodeAttachingEvent extends AudioStreamNodeEvent {\r\n public constructor(audioSourceId: string, audioNodeId: string) {\r\n super(\"AudioStreamNodeAttachingEvent\", audioSourceId, audioNodeId);\r\n }\r\n}\r\n\r\nexport class AudioStreamNodeAttachedEvent extends AudioStreamNodeEvent {\r\n public constructor(audioSourceId: string, audioNodeId: string) {\r\n super(\"AudioStreamNodeAttachedEvent\", audioSourceId, audioNodeId);\r\n }\r\n}\r\n\r\nexport class AudioStreamNodeDetachedEvent extends AudioStreamNodeEvent {\r\n public constructor(audioSourceId: string, audioNodeId: string) {\r\n super(\"AudioStreamNodeDetachedEvent\", audioSourceId, audioNodeId);\r\n }\r\n}\r\n\r\nexport class AudioStreamNodeErrorEvent extends AudioStreamNodeEvent {\r\n private privError: string;\r\n\r\n public constructor(audioSourceId: string, audioNodeId: string, error: string) {\r\n super(\"AudioStreamNodeErrorEvent\", audioSourceId, audioNodeId);\r\n this.privError = error;\r\n }\r\n\r\n public get error(): string {\r\n return this.privError;\r\n }\r\n}\r\n","\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n EventType,\r\n PlatformEvent\r\n} from \"./Exports.js\";\r\n\r\nexport class BackgroundEvent extends PlatformEvent {\r\n private privError: string;\r\n\r\n public constructor(error: string) {\r\n super(\"BackgroundEvent\", EventType.Error);\r\n this.privError = error;\r\n }\r\n\r\n public get error(): string {\r\n return this.privError;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IStreamChunk, Stream } from \"./Exports.js\";\r\n\r\nexport class ChunkedArrayBufferStream extends Stream {\r\n private privTargetChunkSize: number;\r\n private privNextBufferToWrite: ArrayBuffer;\r\n private privNextBufferStartTime: number;\r\n private privNextBufferReadyBytes: number;\r\n\r\n public constructor(targetChunkSize: number, streamId?: string) {\r\n super(streamId);\r\n this.privTargetChunkSize = Math.round(targetChunkSize);\r\n this.privNextBufferReadyBytes = 0;\r\n }\r\n\r\n public writeStreamChunk(chunk: IStreamChunk): void {\r\n // No pending write, and the buffer is the right size so write it.\r\n if (chunk.isEnd ||\r\n (0 === this.privNextBufferReadyBytes && chunk.buffer.byteLength === this.privTargetChunkSize)) {\r\n super.writeStreamChunk(chunk);\r\n return;\r\n }\r\n\r\n let bytesCopiedFromBuffer: number = 0;\r\n\r\n while (bytesCopiedFromBuffer < chunk.buffer.byteLength) {\r\n // Fill the next buffer.\r\n if (undefined === this.privNextBufferToWrite) {\r\n this.privNextBufferToWrite = new ArrayBuffer(this.privTargetChunkSize);\r\n this.privNextBufferStartTime = chunk.timeReceived;\r\n }\r\n\r\n // Find out how many bytes we can copy into the read buffer.\r\n const bytesToCopy: number = Math.min(chunk.buffer.byteLength - bytesCopiedFromBuffer, this.privTargetChunkSize - this.privNextBufferReadyBytes);\r\n const targetView: Uint8Array = new Uint8Array(this.privNextBufferToWrite);\r\n const sourceView: Uint8Array = new Uint8Array(chunk.buffer.slice(bytesCopiedFromBuffer, bytesToCopy + bytesCopiedFromBuffer));\r\n\r\n targetView.set(sourceView, this.privNextBufferReadyBytes);\r\n this.privNextBufferReadyBytes += bytesToCopy;\r\n bytesCopiedFromBuffer += bytesToCopy;\r\n\r\n // Are we ready to write?\r\n if (this.privNextBufferReadyBytes === this.privTargetChunkSize) {\r\n super.writeStreamChunk({\r\n buffer: this.privNextBufferToWrite,\r\n isEnd: false,\r\n timeReceived: this.privNextBufferStartTime,\r\n });\r\n this.privNextBufferReadyBytes = 0;\r\n this.privNextBufferToWrite = undefined;\r\n }\r\n }\r\n }\r\n\r\n public close(): void {\r\n // Send whatever is pending, then close the base class.\r\n if (0 !== this.privNextBufferReadyBytes && !this.isClosed) {\r\n super.writeStreamChunk({\r\n buffer: this.privNextBufferToWrite.slice(0, this.privNextBufferReadyBytes),\r\n isEnd: false,\r\n timeReceived: this.privNextBufferStartTime,\r\n });\r\n }\r\n\r\n super.close();\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport { ConnectionMessage } from \"./ConnectionMessage.js\";\r\nimport { IStringDictionary } from \"./IDictionary.js\";\r\nimport { EventType, PlatformEvent } from \"./PlatformEvent.js\";\r\n\r\nexport class ServiceEvent extends PlatformEvent {\r\n private privJsonResult: string;\r\n\r\n public constructor(eventName: string, jsonstring: string, eventType: EventType = EventType.Info) {\r\n super(eventName, eventType);\r\n this.privJsonResult = jsonstring;\r\n }\r\n\r\n public get jsonString(): string {\r\n return this.privJsonResult;\r\n }\r\n}\r\n\r\nexport class ConnectionEvent extends PlatformEvent {\r\n private privConnectionId: string;\r\n\r\n public constructor(eventName: string, connectionId: string, eventType: EventType = EventType.Info) {\r\n super(eventName, eventType);\r\n this.privConnectionId = connectionId;\r\n }\r\n\r\n public get connectionId(): string {\r\n return this.privConnectionId;\r\n }\r\n}\r\n\r\nexport class ConnectionStartEvent extends ConnectionEvent {\r\n private privUri: string;\r\n private privHeaders: IStringDictionary;\r\n\r\n public constructor(connectionId: string, uri: string, headers?: IStringDictionary) {\r\n super(\"ConnectionStartEvent\", connectionId);\r\n this.privUri = uri;\r\n this.privHeaders = headers;\r\n }\r\n\r\n public get uri(): string {\r\n return this.privUri;\r\n }\r\n\r\n public get headers(): IStringDictionary {\r\n return this.privHeaders;\r\n }\r\n}\r\n\r\nexport class ConnectionEstablishedEvent extends ConnectionEvent {\r\n public constructor(connectionId: string) {\r\n super(\"ConnectionEstablishedEvent\", connectionId);\r\n }\r\n}\r\n\r\nexport class ConnectionClosedEvent extends ConnectionEvent {\r\n private privReason: string;\r\n private privStatusCode: number;\r\n\r\n public constructor(connectionId: string, statusCode: number, reason: string) {\r\n super(\"ConnectionClosedEvent\", connectionId, EventType.Debug);\r\n this.privReason = reason;\r\n this.privStatusCode = statusCode;\r\n }\r\n\r\n public get reason(): string {\r\n return this.privReason;\r\n }\r\n\r\n public get statusCode(): number {\r\n return this.privStatusCode;\r\n }\r\n}\r\n\r\nexport class ConnectionErrorEvent extends ConnectionEvent {\r\n private readonly privMessage: string;\r\n private readonly privType: string;\r\n\r\n public constructor(connectionId: string, message: string, type: string) {\r\n super(\"ConnectionErrorEvent\", connectionId, EventType.Debug);\r\n this.privMessage = message;\r\n this.privType = type;\r\n }\r\n\r\n public get message(): string {\r\n return this.privMessage;\r\n }\r\n\r\n public get type(): string {\r\n return this.privType;\r\n }\r\n}\r\n\r\nexport class ConnectionEstablishErrorEvent extends ConnectionEvent {\r\n private privStatusCode: number;\r\n private privReason: string;\r\n\r\n public constructor(connectionId: string, statuscode: number, reason: string) {\r\n super(\"ConnectionEstablishErrorEvent\", connectionId, EventType.Error);\r\n this.privStatusCode = statuscode;\r\n this.privReason = reason;\r\n }\r\n\r\n public get reason(): string {\r\n return this.privReason;\r\n }\r\n\r\n public get statusCode(): number {\r\n return this.privStatusCode;\r\n }\r\n}\r\n\r\nexport class ConnectionMessageReceivedEvent extends ConnectionEvent {\r\n private privNetworkReceivedTime: string;\r\n private privMessage: ConnectionMessage;\r\n\r\n public constructor(connectionId: string, networkReceivedTimeISO: string, message: ConnectionMessage) {\r\n super(\"ConnectionMessageReceivedEvent\", connectionId);\r\n this.privNetworkReceivedTime = networkReceivedTimeISO;\r\n this.privMessage = message;\r\n }\r\n\r\n public get networkReceivedTime(): string {\r\n return this.privNetworkReceivedTime;\r\n }\r\n\r\n public get message(): ConnectionMessage {\r\n return this.privMessage;\r\n }\r\n}\r\n\r\nexport class ConnectionMessageSentEvent extends ConnectionEvent {\r\n private privNetworkSentTime: string;\r\n private privMessage: ConnectionMessage;\r\n\r\n public constructor(connectionId: string, networkSentTimeISO: string, message: ConnectionMessage) {\r\n super(\"ConnectionMessageSentEvent\", connectionId);\r\n this.privNetworkSentTime = networkSentTimeISO;\r\n this.privMessage = message;\r\n }\r\n\r\n public get networkSentTime(): string {\r\n return this.privNetworkSentTime;\r\n }\r\n\r\n public get message(): ConnectionMessage {\r\n return this.privMessage;\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-unsafe-return */\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { InvalidOperationError } from \"./Error.js\";\r\nimport { createNoDashGuid } from \"./Guid.js\";\r\nimport { IStringDictionary } from \"./IDictionary.js\";\r\n\r\nexport enum MessageType {\r\n Text,\r\n Binary,\r\n}\r\n\r\nexport class ConnectionMessage {\r\n\r\n private privMessageType: MessageType;\r\n private privHeaders: IStringDictionary;\r\n private privBody: any = null;\r\n private privSize: number;\r\n\r\n private privId: string;\r\n\r\n public constructor(\r\n messageType: MessageType,\r\n body: any,\r\n headers?: IStringDictionary,\r\n id?: string) {\r\n\r\n if (messageType === MessageType.Text && body && !(typeof (body) === \"string\")) {\r\n throw new InvalidOperationError(\"Payload must be a string\");\r\n }\r\n\r\n if (messageType === MessageType.Binary && body && !(body instanceof ArrayBuffer)) {\r\n throw new InvalidOperationError(\"Payload must be ArrayBuffer\");\r\n }\r\n\r\n this.privMessageType = messageType;\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n this.privBody = body;\r\n this.privHeaders = headers ? headers : {};\r\n this.privId = id ? id : createNoDashGuid();\r\n switch (this.messageType) {\r\n case MessageType.Binary:\r\n this.privSize = this.binaryBody !== null ? this.binaryBody.byteLength : 0;\r\n break;\r\n case MessageType.Text:\r\n this.privSize = this.textBody.length;\r\n }\r\n }\r\n\r\n public get messageType(): MessageType {\r\n return this.privMessageType;\r\n }\r\n\r\n public get headers(): IStringDictionary {\r\n return this.privHeaders;\r\n }\r\n\r\n public get body(): any {\r\n return this.privBody;\r\n }\r\n\r\n public get textBody(): string {\r\n if (this.privMessageType === MessageType.Binary) {\r\n throw new InvalidOperationError(\"Not supported for binary message\");\r\n }\r\n\r\n return this.privBody as string;\r\n }\r\n\r\n public get binaryBody(): ArrayBuffer {\r\n if (this.privMessageType === MessageType.Text) {\r\n throw new InvalidOperationError(\"Not supported for text message\");\r\n }\r\n\r\n return this.privBody;\r\n }\r\n\r\n public get id(): string {\r\n return this.privId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport class ConnectionOpenResponse {\r\n private privStatusCode: number;\r\n private privReason: string;\r\n\r\n public constructor(statusCode: number, reason: string) {\r\n this.privStatusCode = statusCode;\r\n this.privReason = reason;\r\n }\r\n\r\n public get statusCode(): number {\r\n return this.privStatusCode;\r\n }\r\n\r\n public get reason(): string {\r\n return this.privReason;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Deferred } from \"./Promise.js\";\r\n\r\n/**\r\n * The error that is thrown when an argument passed in is null.\r\n *\r\n * @export\r\n * @class DefferalMap\r\n */\r\n\r\nexport class DeferralMap {\r\n private privMap: { [id: string]: Deferred } = {};\r\n\r\n public add(id: string, deferral: Deferred): void {\r\n this.privMap[id] = deferral;\r\n }\r\n\r\n public getId(id: string): Deferred {\r\n return this.privMap[id];\r\n }\r\n\r\n public complete(id: string, result: T): void {\r\n try {\r\n this.privMap[id].resolve(result);\r\n } catch (error) {\r\n this.privMap[id].reject(error as string);\r\n } finally {\r\n this.privMap[id] = undefined;\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport { AgentConfig } from \"../common.speech/Exports.js\";\r\nimport { EventType, PlatformEvent } from \"./PlatformEvent.js\";\r\n\r\nexport class DialogEvent extends PlatformEvent {\r\n\r\n public constructor(eventName: string, eventType: EventType = EventType.Info) {\r\n super(eventName, eventType);\r\n }\r\n}\r\n\r\nexport class SendingAgentContextMessageEvent extends DialogEvent {\r\n private privAgentConfig: AgentConfig;\r\n\r\n public constructor(agentConfig: AgentConfig) {\r\n super(\"SendingAgentContextMessageEvent\");\r\n this.privAgentConfig = agentConfig;\r\n }\r\n\r\n public get agentConfig(): AgentConfig {\r\n return this.privAgentConfig;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\n/**\r\n * The error that is thrown when an argument passed in is null.\r\n *\r\n * @export\r\n * @class ArgumentNullError\r\n * @extends {Error}\r\n */\r\nexport class ArgumentNullError extends Error {\r\n\r\n /**\r\n * Creates an instance of ArgumentNullError.\r\n *\r\n * @param {string} argumentName - Name of the argument that is null\r\n *\r\n * @memberOf ArgumentNullError\r\n */\r\n public constructor(argumentName: string) {\r\n super(argumentName);\r\n this.name = \"ArgumentNull\";\r\n this.message = argumentName;\r\n }\r\n}\r\n\r\n/**\r\n * The error that is thrown when an invalid operation is performed in the code.\r\n *\r\n * @export\r\n * @class InvalidOperationError\r\n * @extends {Error}\r\n */\r\nexport class InvalidOperationError extends Error {\r\n\r\n /**\r\n * Creates an instance of InvalidOperationError.\r\n *\r\n * @param {string} error - The error\r\n *\r\n * @memberOf InvalidOperationError\r\n */\r\n public constructor(error: string) {\r\n super(error);\r\n this.name = \"InvalidOperation\";\r\n this.message = error;\r\n }\r\n}\r\n\r\n/**\r\n * The error that is thrown when an object is disposed.\r\n *\r\n * @export\r\n * @class ObjectDisposedError\r\n * @extends {Error}\r\n */\r\nexport class ObjectDisposedError extends Error {\r\n\r\n /**\r\n * Creates an instance of ObjectDisposedError.\r\n *\r\n * @param {string} objectName - The object that is disposed\r\n * @param {string} error - The error\r\n *\r\n * @memberOf ObjectDisposedError\r\n */\r\n public constructor(objectName: string, error?: string) {\r\n super(error);\r\n this.name = objectName + \"ObjectDisposed\";\r\n this.message = error;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ObjectDisposedError } from \"./Error.js\";\r\nimport { createNoDashGuid } from \"./Guid.js\";\r\nimport { IDetachable } from \"./IDetachable.js\";\r\nimport { IStringDictionary } from \"./IDictionary.js\";\r\nimport { IEventListener } from \"./IEventListener.js\";\r\nimport { IEventSource } from \"./IEventSource.js\";\r\nimport { PlatformEvent } from \"./PlatformEvent.js\";\r\n\r\nexport class EventSource implements IEventSource {\r\n private privEventListeners: IStringDictionary<(event: TEvent) => void> = {};\r\n private privMetadata: IStringDictionary;\r\n private privIsDisposed: boolean = false;\r\n private privConsoleListener: IDetachable = undefined;\r\n\r\n public constructor(metadata?: IStringDictionary) {\r\n this.privMetadata = metadata;\r\n }\r\n\r\n public onEvent(event: TEvent): void {\r\n if (this.isDisposed()) {\r\n throw (new ObjectDisposedError(\"EventSource\"));\r\n }\r\n\r\n if (this.metadata) {\r\n for (const paramName in this.metadata) {\r\n if (paramName) {\r\n if (event.metadata) {\r\n if (!event.metadata[paramName]) {\r\n event.metadata[paramName] = this.metadata[paramName];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (const eventId in this.privEventListeners) {\r\n if (eventId && this.privEventListeners[eventId]) {\r\n this.privEventListeners[eventId](event);\r\n }\r\n }\r\n }\r\n\r\n public attach(onEventCallback: (event: TEvent) => void): IDetachable {\r\n const id = createNoDashGuid();\r\n this.privEventListeners[id] = onEventCallback;\r\n return {\r\n detach: (): Promise => {\r\n delete this.privEventListeners[id];\r\n return Promise.resolve();\r\n },\r\n };\r\n }\r\n\r\n public attachListener(listener: IEventListener): IDetachable {\r\n return this.attach((e: TEvent): void => listener.onEvent(e));\r\n }\r\n\r\n public attachConsoleListener(listener: IEventListener): IDetachable {\r\n if (!!this.privConsoleListener) {\r\n void this.privConsoleListener.detach(); // Detach implementation for eventListeners is synchronous\r\n }\r\n this.privConsoleListener = this.attach((e: TEvent): void => listener.onEvent(e));\r\n return this.privConsoleListener;\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privIsDisposed;\r\n }\r\n\r\n public dispose(): void {\r\n this.privEventListeners = null;\r\n this.privIsDisposed = true;\r\n }\r\n\r\n public get metadata(): IStringDictionary {\r\n return this.privMetadata;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ArgumentNullError } from \"./Error.js\";\r\nimport { EventSource } from \"./EventSource.js\";\r\nimport { IEventSource } from \"./IEventSource.js\";\r\nimport { PlatformEvent } from \"./PlatformEvent.js\";\r\n\r\nexport class Events {\r\n private static privInstance: IEventSource = new EventSource();\r\n\r\n public static setEventSource(eventSource: IEventSource): void {\r\n if (!eventSource) {\r\n throw new ArgumentNullError(\"eventSource\");\r\n }\r\n\r\n Events.privInstance = eventSource;\r\n }\r\n\r\n public static get instance(): IEventSource {\r\n return Events.privInstance;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport * from \"./AudioSourceEvents.js\";\r\nexport * from \"./ConnectionEvents.js\";\r\nexport * from \"./ConnectionMessage.js\";\r\nexport * from \"./ConnectionOpenResponse.js\";\r\nexport * from \"./DeferralMap.js\";\r\nexport * from \"./DialogEvents.js\";\r\nexport * from \"./Error.js\";\r\nexport * from \"./Events.js\";\r\nexport * from \"./EventSource.js\";\r\nexport * from \"./Guid.js\";\r\nexport * from \"./IAudioSource.js\";\r\nexport * from \"./IConnection.js\";\r\nexport * from \"./IDetachable.js\";\r\nexport * from \"./IDictionary.js\";\r\nexport * from \"./IDisposable.js\";\r\nexport * from \"./IEventListener.js\";\r\nexport * from \"./IEventSource.js\";\r\nexport * from \"./IErrorMessages.js\";\r\nexport * from \"./ITimer.js\";\r\nexport * from \"./IWebsocketMessageFormatter.js\";\r\nexport * from \"./List.js\";\r\nexport * from \"./PlatformEvent.js\";\r\nexport * from \"./Promise.js\";\r\nexport * from \"./Queue.js\";\r\nexport * from \"./RawWebsocketMessage.js\";\r\nexport * from \"./RiffPcmEncoder.js\";\r\nexport * from \"./Stream.js\";\r\nexport { TranslationStatus } from \"../common.speech/TranslationStatus.js\";\r\nexport * from \"./ChunkedArrayBufferStream.js\";\r\nexport * from \"./IAudioDestination.js\";\r\nexport * from \"./Timeout.js\";\r\nexport * from \"./OCSPEvents.js\";\r\nexport * from \"./BackgroundError.js\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { v4 as uuid } from \"uuid\";\r\n\r\nconst createGuid: () => string = (): string => uuid();\r\n\r\nconst createNoDashGuid: () => string = (): string => createGuid().replace(new RegExp(\"-\", \"g\"), \"\").toUpperCase();\r\n\r\nexport { createGuid, createNoDashGuid };\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ConnectionEvent } from \"./ConnectionEvents.js\";\r\nimport { ConnectionMessage } from \"./ConnectionMessage.js\";\r\nimport { ConnectionOpenResponse } from \"./ConnectionOpenResponse.js\";\r\nimport { EventSource } from \"./EventSource.js\";\r\n\r\nexport enum ConnectionState {\r\n None,\r\n Connected,\r\n Connecting,\r\n Disconnected,\r\n}\r\n\r\nexport interface IConnection {\r\n id: string;\r\n state(): ConnectionState;\r\n open(): Promise;\r\n send(message: ConnectionMessage): Promise;\r\n read(): Promise;\r\n events: EventSource;\r\n dispose(disposing?: string): Promise;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ObjectDisposedError } from \"./Error.js\";\r\nimport { IDetachable } from \"./IDetachable.js\";\r\nimport { IStringDictionary } from \"./IDictionary.js\";\r\nimport { IDisposable } from \"./IDisposable.js\";\r\n\r\nexport interface IList extends IDisposable {\r\n get(itemIndex: number): TItem;\r\n first(): TItem;\r\n last(): TItem;\r\n\r\n add(item: TItem): void;\r\n insertAt(index: number, item: TItem): void;\r\n\r\n removeFirst(): TItem;\r\n removeLast(): TItem;\r\n removeAt(index: number): TItem;\r\n remove(index: number, count: number): TItem[];\r\n clear(): void;\r\n\r\n length(): number;\r\n\r\n onAdded(addedCallback: () => void): IDetachable;\r\n onRemoved(removedCallback: () => void): IDetachable;\r\n onDisposed(disposedCallback: () => void): IDetachable;\r\n\r\n join(seperator?: string): string;\r\n\r\n toArray(): TItem[];\r\n\r\n any(callback?: (item: TItem, index: number) => boolean): boolean;\r\n all(callback: (item: TItem) => boolean): boolean;\r\n forEach(callback: (item: TItem, index: number) => void): void;\r\n select(callback: (item: TItem, index: number) => T2): List;\r\n where(callback: (item: TItem, index: number) => boolean): List;\r\n orderBy(compareFn: (a: TItem, b: TItem) => number): List;\r\n orderByDesc(compareFn: (a: TItem, b: TItem) => number): List;\r\n clone(): List;\r\n concat(list: List): List;\r\n concatArray(array: TItem[]): List;\r\n}\r\n\r\nexport class List implements IList {\r\n private privList: TItem[];\r\n private privSubscriptionIdCounter: number = 0;\r\n private privAddSubscriptions: IStringDictionary<() => void> = {};\r\n private privRemoveSubscriptions: IStringDictionary<() => void> = {};\r\n private privDisposedSubscriptions: IStringDictionary<() => void> = {};\r\n private privDisposeReason: string = null;\r\n\r\n public constructor(list?: TItem[]) {\r\n this.privList = [];\r\n // copy the list rather than taking as is.\r\n if (list) {\r\n for (const item of list) {\r\n this.privList.push(item);\r\n }\r\n }\r\n }\r\n\r\n public get(itemIndex: number): TItem {\r\n this.throwIfDisposed();\r\n return this.privList[itemIndex];\r\n }\r\n\r\n public first(): TItem {\r\n return this.get(0);\r\n }\r\n\r\n public last(): TItem {\r\n return this.get(this.length() - 1);\r\n }\r\n\r\n public add(item: TItem): void {\r\n this.throwIfDisposed();\r\n this.insertAt(this.privList.length, item);\r\n }\r\n\r\n public insertAt(index: number, item: TItem): void {\r\n this.throwIfDisposed();\r\n if (index === 0) {\r\n this.privList.unshift(item);\r\n } else if (index === this.privList.length) {\r\n this.privList.push(item);\r\n } else {\r\n this.privList.splice(index, 0, item);\r\n }\r\n this.triggerSubscriptions(this.privAddSubscriptions);\r\n }\r\n\r\n public removeFirst(): TItem {\r\n this.throwIfDisposed();\r\n return this.removeAt(0);\r\n }\r\n\r\n public removeLast(): TItem {\r\n this.throwIfDisposed();\r\n return this.removeAt(this.length() - 1);\r\n }\r\n\r\n public removeAt(index: number): TItem {\r\n this.throwIfDisposed();\r\n return this.remove(index, 1)[0];\r\n }\r\n\r\n public remove(index: number, count: number): TItem[] {\r\n this.throwIfDisposed();\r\n const removedElements = this.privList.splice(index, count);\r\n this.triggerSubscriptions(this.privRemoveSubscriptions);\r\n return removedElements;\r\n }\r\n\r\n public clear(): void {\r\n this.throwIfDisposed();\r\n this.remove(0, this.length());\r\n }\r\n\r\n public length(): number {\r\n this.throwIfDisposed();\r\n return this.privList.length;\r\n }\r\n\r\n public onAdded(addedCallback: () => void): IDetachable {\r\n this.throwIfDisposed();\r\n const subscriptionId = this.privSubscriptionIdCounter++;\r\n\r\n this.privAddSubscriptions[subscriptionId] = addedCallback;\r\n\r\n return {\r\n detach: (): Promise => {\r\n delete this.privAddSubscriptions[subscriptionId];\r\n return Promise.resolve();\r\n },\r\n };\r\n }\r\n\r\n public onRemoved(removedCallback: () => void): IDetachable {\r\n this.throwIfDisposed();\r\n const subscriptionId = this.privSubscriptionIdCounter++;\r\n\r\n this.privRemoveSubscriptions[subscriptionId] = removedCallback;\r\n\r\n return {\r\n detach: (): Promise => {\r\n delete this.privRemoveSubscriptions[subscriptionId];\r\n return Promise.resolve();\r\n },\r\n };\r\n }\r\n\r\n public onDisposed(disposedCallback: () => void): IDetachable {\r\n this.throwIfDisposed();\r\n const subscriptionId = this.privSubscriptionIdCounter++;\r\n\r\n this.privDisposedSubscriptions[subscriptionId] = disposedCallback;\r\n\r\n return {\r\n detach: (): Promise => {\r\n delete this.privDisposedSubscriptions[subscriptionId];\r\n return Promise.resolve();\r\n },\r\n };\r\n }\r\n\r\n public join(seperator?: string): string {\r\n this.throwIfDisposed();\r\n return this.privList.join(seperator);\r\n }\r\n\r\n public toArray(): TItem[] {\r\n const cloneCopy = Array();\r\n this.privList.forEach((val: TItem): void => {\r\n cloneCopy.push(val);\r\n });\r\n return cloneCopy;\r\n }\r\n\r\n public any(callback?: (item: TItem, index: number) => boolean): boolean {\r\n this.throwIfDisposed();\r\n if (callback) {\r\n return this.where(callback).length() > 0;\r\n } else {\r\n return this.length() > 0;\r\n }\r\n }\r\n\r\n public all(callback: (item: TItem) => boolean): boolean {\r\n this.throwIfDisposed();\r\n return this.where(callback).length() === this.length();\r\n }\r\n\r\n public forEach(callback: (item: TItem, index: number) => void): void {\r\n this.throwIfDisposed();\r\n for (let i = 0; i < this.length(); i++) {\r\n callback(this.privList[i], i);\r\n }\r\n }\r\n\r\n public select(callback: (item: TItem, index: number) => T2): List {\r\n this.throwIfDisposed();\r\n const selectList: T2[] = [];\r\n for (let i = 0; i < this.privList.length; i++) {\r\n selectList.push(callback(this.privList[i], i));\r\n }\r\n\r\n return new List(selectList);\r\n }\r\n\r\n public where(callback: (item: TItem, index: number) => boolean): List {\r\n this.throwIfDisposed();\r\n const filteredList = new List();\r\n for (let i = 0; i < this.privList.length; i++) {\r\n if (callback(this.privList[i], i)) {\r\n filteredList.add(this.privList[i]);\r\n }\r\n }\r\n return filteredList;\r\n }\r\n\r\n public orderBy(compareFn: (a: TItem, b: TItem) => number): List {\r\n this.throwIfDisposed();\r\n const clonedArray = this.toArray();\r\n const orderedArray = clonedArray.sort(compareFn);\r\n return new List(orderedArray);\r\n }\r\n\r\n public orderByDesc(compareFn: (a: TItem, b: TItem) => number): List {\r\n this.throwIfDisposed();\r\n return this.orderBy((a: TItem, b: TItem): number => compareFn(b, a));\r\n }\r\n\r\n public clone(): List {\r\n this.throwIfDisposed();\r\n return new List(this.toArray());\r\n }\r\n\r\n public concat(list: List): List {\r\n this.throwIfDisposed();\r\n return new List(this.privList.concat(list.toArray()));\r\n }\r\n\r\n public concatArray(array: TItem[]): List {\r\n this.throwIfDisposed();\r\n return new List(this.privList.concat(array));\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privList == null;\r\n }\r\n\r\n public dispose(reason?: string): void {\r\n if (!this.isDisposed()) {\r\n this.privDisposeReason = reason;\r\n this.privList = null;\r\n this.privAddSubscriptions = null;\r\n this.privRemoveSubscriptions = null;\r\n this.triggerSubscriptions(this.privDisposedSubscriptions);\r\n }\r\n }\r\n\r\n private throwIfDisposed(): void {\r\n if (this.isDisposed()) {\r\n throw new ObjectDisposedError(\"List\", this.privDisposeReason);\r\n }\r\n }\r\n\r\n private triggerSubscriptions(subscriptions: IStringDictionary<() => void>): void {\r\n if (subscriptions) {\r\n for (const subscriptionId in subscriptions) {\r\n if (subscriptionId) {\r\n subscriptions[subscriptionId]();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport { EventType, PlatformEvent } from \"./PlatformEvent.js\";\r\n\r\nexport class OCSPEvent extends PlatformEvent {\r\n private privSignature: string;\r\n\r\n public constructor(eventName: string, eventType: EventType, signature: string) {\r\n super(eventName, eventType);\r\n\r\n this.privSignature = signature;\r\n }\r\n}\r\n\r\nexport class OCSPMemoryCacheHitEvent extends OCSPEvent {\r\n public constructor(signature: string) {\r\n super(\"OCSPMemoryCacheHitEvent\", EventType.Debug, signature);\r\n }\r\n}\r\n\r\nexport class OCSPCacheMissEvent extends OCSPEvent {\r\n public constructor(signature: string) {\r\n super(\"OCSPCacheMissEvent\", EventType.Debug, signature);\r\n }\r\n}\r\n\r\nexport class OCSPDiskCacheHitEvent extends OCSPEvent {\r\n public constructor(signature: string) {\r\n super(\"OCSPDiskCacheHitEvent\", EventType.Debug, signature);\r\n }\r\n}\r\n\r\nexport class OCSPCacheUpdateNeededEvent extends OCSPEvent {\r\n public constructor(signature: string) {\r\n super(\"OCSPCacheUpdateNeededEvent\", EventType.Debug, signature);\r\n }\r\n}\r\n\r\nexport class OCSPMemoryCacheStoreEvent extends OCSPEvent {\r\n public constructor(signature: string) {\r\n super(\"OCSPMemoryCacheStoreEvent\", EventType.Debug, signature);\r\n }\r\n}\r\n\r\nexport class OCSPDiskCacheStoreEvent extends OCSPEvent {\r\n public constructor(signature: string) {\r\n super(\"OCSPDiskCacheStoreEvent\", EventType.Debug, signature);\r\n }\r\n}\r\n\r\nexport class OCSPCacheUpdateCompleteEvent extends OCSPEvent {\r\n public constructor(signature: string) {\r\n super(\"OCSPCacheUpdateCompleteEvent\", EventType.Debug, signature);\r\n }\r\n}\r\n\r\nexport class OCSPStapleReceivedEvent extends OCSPEvent {\r\n public constructor() {\r\n super(\"OCSPStapleReceivedEvent\", EventType.Debug, \"\");\r\n }\r\n}\r\n\r\nexport class OCSPWSUpgradeStartedEvent extends OCSPEvent {\r\n public constructor(serialNumber: string) {\r\n super(\"OCSPWSUpgradeStartedEvent\", EventType.Debug, serialNumber);\r\n }\r\n}\r\n\r\nexport class OCSPCacheEntryExpiredEvent extends OCSPEvent {\r\n private privExpireTime: number;\r\n\r\n public constructor(serialNumber: string, expireTime: number) {\r\n super(\"OCSPCacheEntryExpiredEvent\", EventType.Debug, serialNumber);\r\n this.privExpireTime = expireTime;\r\n }\r\n}\r\n\r\nexport class OCSPCacheEntryNeedsRefreshEvent extends OCSPEvent {\r\n private privExpireTime: number;\r\n private privStartTime: number;\r\n\r\n public constructor(serialNumber: string, startTime: number, expireTime: number) {\r\n super(\"OCSPCacheEntryNeedsRefreshEvent\", EventType.Debug, serialNumber);\r\n this.privExpireTime = expireTime;\r\n this.privStartTime = startTime;\r\n }\r\n}\r\n\r\nexport class OCSPCacheHitEvent extends OCSPEvent {\r\n private privExpireTime: number;\r\n private privStartTime: number;\r\n private privExpireTimeString: string;\r\n private privStartTimeString: string;\r\n\r\n public constructor(serialNumber: string, startTime: number, expireTime: number) {\r\n super(\"OCSPCacheHitEvent\", EventType.Debug, serialNumber);\r\n this.privExpireTime = expireTime;\r\n this.privExpireTimeString = new Date(expireTime).toLocaleDateString();\r\n this.privStartTime = startTime;\r\n this.privStartTimeString = new Date(startTime).toLocaleTimeString();\r\n }\r\n}\r\n\r\nexport class OCSPVerificationFailedEvent extends OCSPEvent {\r\n private privError: string;\r\n\r\n public constructor(serialNumber: string, error: string) {\r\n super(\"OCSPVerificationFailedEvent\", EventType.Debug, serialNumber);\r\n this.privError = error;\r\n }\r\n}\r\n\r\nexport class OCSPCacheFetchErrorEvent extends OCSPEvent {\r\n private privError: string;\r\n\r\n public constructor(serialNumber: string, error: string) {\r\n super(\"OCSPCacheFetchErrorEvent\", EventType.Debug, serialNumber);\r\n this.privError = error;\r\n }\r\n}\r\n\r\nexport class OCSPResponseRetrievedEvent extends OCSPEvent {\r\n public constructor(serialNumber: string) {\r\n super(\"OCSPResponseRetrievedEvent\", EventType.Debug, serialNumber);\r\n }\r\n}\r\n\r\nexport class OCSPCacheUpdateErrorEvent extends OCSPEvent {\r\n private privError: string;\r\n\r\n public constructor(serialNumber: string, error: string) {\r\n super(\"OCSPCacheUpdateErrorEvent\", EventType.Debug, serialNumber);\r\n this.privError = error;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { createNoDashGuid } from \"./Guid.js\";\r\nimport { IStringDictionary } from \"./IDictionary.js\";\r\n\r\nexport enum EventType {\r\n Debug,\r\n Info,\r\n Warning,\r\n Error,\r\n None,\r\n}\r\n\r\nexport class PlatformEvent {\r\n private privName: string;\r\n private privEventId: string;\r\n private privEventTime: string;\r\n private privEventType: EventType;\r\n private privMetadata: IStringDictionary;\r\n\r\n public constructor(eventName: string, eventType: EventType) {\r\n this.privName = eventName;\r\n this.privEventId = createNoDashGuid();\r\n this.privEventTime = new Date().toISOString();\r\n this.privEventType = eventType;\r\n this.privMetadata = { };\r\n }\r\n\r\n public get name(): string {\r\n return this.privName;\r\n }\r\n\r\n public get eventId(): string {\r\n return this.privEventId;\r\n }\r\n\r\n public get eventTime(): string {\r\n return this.privEventTime;\r\n }\r\n\r\n public get eventType(): EventType {\r\n return this.privEventType;\r\n }\r\n\r\n public get metadata(): IStringDictionary {\r\n return this.privMetadata;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file, @typescript-eslint/typedef */\r\n\r\nexport enum PromiseState {\r\n None,\r\n Resolved,\r\n Rejected,\r\n}\r\n\r\nexport interface IDeferred {\r\n readonly promise: Promise;\r\n\r\n resolve(result: T): IDeferred;\r\n\r\n reject(error: string): IDeferred;\r\n}\r\n\r\nexport class PromiseResult {\r\n protected privIsCompleted: boolean;\r\n protected privIsError: boolean;\r\n protected privError: string;\r\n protected privResult: T;\r\n\r\n public constructor(promiseResultEventSource: PromiseResultEventSource) {\r\n promiseResultEventSource.on((result: T): void => {\r\n if (!this.privIsCompleted) {\r\n this.privIsCompleted = true;\r\n this.privIsError = false;\r\n this.privResult = result;\r\n }\r\n }, (error: string): void => {\r\n if (!this.privIsCompleted) {\r\n this.privIsCompleted = true;\r\n this.privIsError = true;\r\n this.privError = error;\r\n }\r\n });\r\n }\r\n\r\n public get isCompleted(): boolean {\r\n return this.privIsCompleted;\r\n }\r\n\r\n public get isError(): boolean {\r\n return this.privIsError;\r\n }\r\n\r\n public get error(): string {\r\n return this.privError;\r\n }\r\n\r\n public get result(): T {\r\n return this.privResult;\r\n }\r\n\r\n public throwIfError = (): void => {\r\n if (this.isError) {\r\n throw this.error;\r\n }\r\n };\r\n}\r\n\r\nexport class PromiseResultEventSource {\r\n\r\n private privOnSetResult: (result: T) => void;\r\n private privOnSetError: (error: string) => void;\r\n\r\n public setResult = (result: T): void => {\r\n this.privOnSetResult(result);\r\n };\r\n\r\n public setError = (error: string): void => {\r\n this.privOnSetError(error);\r\n };\r\n\r\n public on = (onSetResult: (result: T) => void, onSetError: (error: string) => void): void => {\r\n this.privOnSetResult = onSetResult;\r\n this.privOnSetError = onSetError;\r\n };\r\n}\r\n\r\nexport class Deferred implements IDeferred {\r\n private privPromise: Promise;\r\n private privResolve: (value?: T | PromiseLike) => void;\r\n private privReject: (reason?: any) => void;\r\n\r\n public constructor() {\r\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\r\n this.privPromise = new Promise((resolve: (value: T) => void, reject: (reason: any) => void) => {\r\n this.privResolve = resolve;\r\n this.privReject = reject;\r\n });\r\n }\r\n\r\n public get promise(): Promise {\r\n return this.privPromise;\r\n }\r\n\r\n public resolve = (result: T | Promise): Deferred => {\r\n this.privResolve(result);\r\n return this;\r\n };\r\n\r\n public reject = (error: string): Deferred => {\r\n this.privReject(error);\r\n return this;\r\n };\r\n}\r\n\r\nexport class Sink {\r\n private privState: PromiseState = PromiseState.None;\r\n private privPromiseResult: PromiseResult = null;\r\n private privPromiseResultEvents: PromiseResultEventSource = null;\r\n\r\n private privSuccessHandlers: ((result: T) => void)[] = [];\r\n private privErrorHandlers: ((e: string) => void)[] = [];\r\n\r\n public constructor() {\r\n this.privPromiseResultEvents = new PromiseResultEventSource();\r\n this.privPromiseResult = new PromiseResult(this.privPromiseResultEvents);\r\n }\r\n\r\n public get state(): PromiseState {\r\n return this.privState;\r\n }\r\n\r\n public get result(): PromiseResult {\r\n return this.privPromiseResult;\r\n }\r\n\r\n public resolve(result: T): void {\r\n if (this.privState !== PromiseState.None) {\r\n throw new Error(\"'Cannot resolve a completed promise'\");\r\n }\r\n\r\n this.privState = PromiseState.Resolved;\r\n this.privPromiseResultEvents.setResult(result);\r\n\r\n for (let i = 0; i < this.privSuccessHandlers.length; i++) {\r\n this.executeSuccessCallback(result, this.privSuccessHandlers[i], this.privErrorHandlers[i]);\r\n }\r\n\r\n this.detachHandlers();\r\n }\r\n\r\n public reject(error: string): void {\r\n if (this.privState !== PromiseState.None) {\r\n throw new Error(\"'Cannot reject a completed promise'\");\r\n }\r\n\r\n this.privState = PromiseState.Rejected;\r\n this.privPromiseResultEvents.setError(error);\r\n\r\n for (const errorHandler of this.privErrorHandlers) {\r\n this.executeErrorCallback(error, errorHandler);\r\n }\r\n\r\n this.detachHandlers();\r\n }\r\n\r\n public on(\r\n successCallback: (result: T) => void,\r\n errorCallback: (error: string) => void): void {\r\n\r\n if (successCallback == null) {\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n successCallback = (): void => { };\r\n }\r\n\r\n if (this.privState === PromiseState.None) {\r\n this.privSuccessHandlers.push(successCallback);\r\n this.privErrorHandlers.push(errorCallback);\r\n } else {\r\n if (this.privState === PromiseState.Resolved) {\r\n this.executeSuccessCallback(this.privPromiseResult.result, successCallback, errorCallback);\r\n } else if (this.privState === PromiseState.Rejected) {\r\n this.executeErrorCallback(this.privPromiseResult.error, errorCallback);\r\n }\r\n\r\n this.detachHandlers();\r\n }\r\n }\r\n\r\n private executeSuccessCallback(result: T, successCallback: (result: T) => void, errorCallback: (error: string) => void): void {\r\n try {\r\n successCallback(result);\r\n } catch (e) {\r\n this.executeErrorCallback(`'Unhandled callback error: ${e as string}'`, errorCallback);\r\n }\r\n }\r\n\r\n private executeErrorCallback(error: string, errorCallback: (error: string) => void): void {\r\n if (errorCallback) {\r\n try {\r\n errorCallback(error);\r\n } catch (e) {\r\n throw new Error(`'Unhandled callback error: ${e as string}. InnerError: ${error}'`);\r\n }\r\n } else {\r\n throw new Error(`'Unhandled error: ${error}'`);\r\n }\r\n }\r\n\r\n private detachHandlers(): void {\r\n this.privErrorHandlers = [];\r\n this.privSuccessHandlers = [];\r\n }\r\n}\r\n\r\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\r\nexport function marshalPromiseToCallbacks(\r\n promise: Promise,\r\n cb?: (value: T) => void,\r\n err?: (error: string) => void): void {\r\n promise.then((val: T): void => {\r\n try {\r\n if (!!cb) {\r\n cb(val);\r\n }\r\n } catch (error) {\r\n if (!!err) {\r\n try {\r\n if (error instanceof Error) {\r\n const typedError: Error = error ;\r\n err(typedError.name + \": \" + typedError.message);\r\n } else {\r\n err(error as string);\r\n }\r\n // eslint-disable-next-line no-empty\r\n } catch (error) { }\r\n }\r\n }\r\n }, (error: any): void => {\r\n if (!!err) {\r\n try {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n } else {\r\n err(error as string);\r\n }\r\n // eslint-disable-next-line no-empty\r\n } catch (error) { }\r\n }\r\n });\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { InvalidOperationError, ObjectDisposedError } from \"./Error.js\";\r\nimport { IDetachable } from \"./IDetachable.js\";\r\nimport { IDisposable } from \"./IDisposable.js\";\r\nimport { List } from \"./List.js\";\r\nimport {\r\n Deferred,\r\n} from \"./Promise.js\";\r\nexport interface IQueue extends IDisposable {\r\n enqueue(item: TItem): void;\r\n enqueueFromPromise(promise: Promise): void;\r\n dequeue(): Promise;\r\n peek(): Promise;\r\n length(): number;\r\n}\r\n\r\nenum SubscriberType {\r\n Dequeue,\r\n Peek,\r\n}\r\n\r\nexport class Queue implements IQueue {\r\n private privPromiseStore: List> = new List>();\r\n private privList: List;\r\n private privDetachables: IDetachable[];\r\n private privSubscribers: List<{ type: SubscriberType; deferral: Deferred }>;\r\n private privIsDrainInProgress: boolean = false;\r\n private privIsDisposing: boolean = false;\r\n private privDisposeReason: string = null;\r\n\r\n public constructor(list?: List) {\r\n this.privList = list ? list : new List();\r\n this.privDetachables = [];\r\n this.privSubscribers = new List<{ type: SubscriberType; deferral: Deferred }>();\r\n this.privDetachables.push(this.privList.onAdded((): void => this.drain()));\r\n }\r\n\r\n public enqueue(item: TItem): void {\r\n this.throwIfDispose();\r\n this.enqueueFromPromise(new Promise((resolve: (value: TItem) => void): void => resolve(item)));\r\n }\r\n\r\n public enqueueFromPromise(promise: Promise): void {\r\n this.throwIfDispose();\r\n promise.then((val: TItem): void => {\r\n this.privList.add(val);\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n }, (): void => { });\r\n }\r\n\r\n public dequeue(): Promise {\r\n this.throwIfDispose();\r\n const deferredSubscriber = new Deferred();\r\n\r\n if (this.privSubscribers) {\r\n this.privSubscribers.add({ deferral: deferredSubscriber, type: SubscriberType.Dequeue });\r\n this.drain();\r\n }\r\n\r\n return deferredSubscriber.promise;\r\n }\r\n\r\n public peek(): Promise {\r\n this.throwIfDispose();\r\n const deferredSubscriber = new Deferred();\r\n\r\n const subs = this.privSubscribers;\r\n if (subs) {\r\n this.privSubscribers.add({ deferral: deferredSubscriber, type: SubscriberType.Peek });\r\n this.drain();\r\n }\r\n\r\n return deferredSubscriber.promise;\r\n }\r\n\r\n public length(): number {\r\n this.throwIfDispose();\r\n return this.privList.length();\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privSubscribers == null;\r\n }\r\n\r\n public async drainAndDispose(pendingItemProcessor: (pendingItemInQueue: TItem) => void, reason?: string): Promise {\r\n if (!this.isDisposed() && !this.privIsDisposing) {\r\n this.privDisposeReason = reason;\r\n this.privIsDisposing = true;\r\n\r\n const subs = this.privSubscribers;\r\n if (subs) {\r\n while (subs.length() > 0) {\r\n const subscriber = subs.removeFirst();\r\n // TODO: this needs work (Resolve(null) instead?).\r\n subscriber.deferral.resolve(undefined);\r\n // subscriber.deferral.reject(\"Disposed\");\r\n }\r\n\r\n // note: this block assumes cooperative multitasking, i.e.,\r\n // between the if-statement and the assignment there are no\r\n // thread switches.\r\n // Reason is that between the initial const = this.; and this\r\n // point there is the derral.resolve() operation that might have\r\n // caused recursive calls to the Queue, especially, calling\r\n // Dispose() on the queue alredy (which would reset the var\r\n // here to null!).\r\n // That should generally hold true for javascript...\r\n if (this.privSubscribers === subs) {\r\n this.privSubscribers = subs;\r\n }\r\n }\r\n\r\n for (const detachable of this.privDetachables) {\r\n await detachable.detach();\r\n }\r\n\r\n if (this.privPromiseStore.length() > 0 && pendingItemProcessor) {\r\n const promiseArray: Promise[] = [];\r\n\r\n this.privPromiseStore.toArray().forEach((wrapper: Promise): void => {\r\n promiseArray.push(wrapper);\r\n });\r\n return Promise.all(promiseArray).finally((): void => {\r\n this.privSubscribers = null;\r\n this.privList.forEach((item: TItem): void => {\r\n pendingItemProcessor(item);\r\n });\r\n this.privList = null;\r\n return;\r\n }).then();\r\n } else {\r\n this.privSubscribers = null;\r\n this.privList = null;\r\n }\r\n }\r\n }\r\n\r\n public async dispose(reason?: string): Promise {\r\n await this.drainAndDispose(null, reason);\r\n }\r\n\r\n private drain(): void {\r\n if (!this.privIsDrainInProgress && !this.privIsDisposing) {\r\n this.privIsDrainInProgress = true;\r\n\r\n const subs = this.privSubscribers;\r\n const lists = this.privList;\r\n if (subs && lists) {\r\n while (lists.length() > 0 && subs.length() > 0 && !this.privIsDisposing) {\r\n const subscriber = subs.removeFirst();\r\n if (subscriber.type === SubscriberType.Peek) {\r\n subscriber.deferral.resolve(lists.first());\r\n } else {\r\n const dequeuedItem = lists.removeFirst();\r\n subscriber.deferral.resolve(dequeuedItem);\r\n }\r\n }\r\n\r\n // note: this block assumes cooperative multitasking, i.e.,\r\n // between the if-statement and the assignment there are no\r\n // thread switches.\r\n // Reason is that between the initial const = this.; and this\r\n // point there is the derral.resolve() operation that might have\r\n // caused recursive calls to the Queue, especially, calling\r\n // Dispose() on the queue alredy (which would reset the var\r\n // here to null!).\r\n // That should generally hold true for javascript...\r\n if (this.privSubscribers === subs) {\r\n this.privSubscribers = subs;\r\n }\r\n\r\n // note: this block assumes cooperative multitasking, i.e.,\r\n // between the if-statement and the assignment there are no\r\n // thread switches.\r\n // Reason is that between the initial const = this.; and this\r\n // point there is the derral.resolve() operation that might have\r\n // caused recursive calls to the Queue, especially, calling\r\n // Dispose() on the queue alredy (which would reset the var\r\n // here to null!).\r\n // That should generally hold true for javascript...\r\n if (this.privList === lists) {\r\n this.privList = lists;\r\n }\r\n }\r\n\r\n this.privIsDrainInProgress = false;\r\n }\r\n }\r\n\r\n private throwIfDispose(): void {\r\n if (this.isDisposed()) {\r\n if (this.privDisposeReason) {\r\n throw new InvalidOperationError(this.privDisposeReason);\r\n }\r\n\r\n throw new ObjectDisposedError(\"Queue\");\r\n } else if (this.privIsDisposing) {\r\n throw new InvalidOperationError(\"Queue disposing\");\r\n }\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-unsafe-assignment */\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { MessageType } from \"./ConnectionMessage.js\";\r\nimport { ArgumentNullError, InvalidOperationError } from \"./Error.js\";\r\nimport { createNoDashGuid } from \"./Guid.js\";\r\n\r\nexport class RawWebsocketMessage {\r\n private privMessageType: MessageType;\r\n private privPayload: any = null;\r\n private privId: string;\r\n\r\n public constructor(messageType: MessageType, payload: any, id?: string) {\r\n if (!payload) {\r\n throw new ArgumentNullError(\"payload\");\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\r\n if (messageType === MessageType.Binary && Object.getPrototypeOf(payload).constructor.name !== \"ArrayBuffer\") {\r\n throw new InvalidOperationError(\"Payload must be ArrayBuffer\");\r\n }\r\n\r\n if (messageType === MessageType.Text && !(typeof (payload) === \"string\")) {\r\n throw new InvalidOperationError(\"Payload must be a string\");\r\n }\r\n\r\n this.privMessageType = messageType;\r\n this.privPayload = payload;\r\n this.privId = id ? id : createNoDashGuid();\r\n }\r\n\r\n public get messageType(): MessageType {\r\n return this.privMessageType;\r\n }\r\n\r\n public get payload(): any {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\r\n return this.privPayload;\r\n }\r\n\r\n public get textContent(): string {\r\n if (this.privMessageType === MessageType.Binary) {\r\n throw new InvalidOperationError(\"Not supported for binary message\");\r\n }\r\n\r\n return this.privPayload as string;\r\n }\r\n\r\n public get binaryContent(): ArrayBuffer {\r\n if (this.privMessageType === MessageType.Text) {\r\n throw new InvalidOperationError(\"Not supported for text message\");\r\n }\r\n\r\n return this.privPayload as ArrayBuffer;\r\n }\r\n\r\n public get id(): string {\r\n return this.privId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport class RiffPcmEncoder {\r\n\r\n private privActualSampleRate: number;\r\n private privDesiredSampleRate: number;\r\n\r\n public constructor(actualSampleRate: number, desiredSampleRate: number) {\r\n this.privActualSampleRate = actualSampleRate;\r\n this.privDesiredSampleRate = desiredSampleRate;\r\n }\r\n\r\n public encode(actualAudioFrame: Float32Array): ArrayBuffer {\r\n\r\n const audioFrame = this.downSampleAudioFrame(actualAudioFrame, this.privActualSampleRate, this.privDesiredSampleRate);\r\n\r\n if (!audioFrame) {\r\n return null;\r\n }\r\n\r\n const audioLength = audioFrame.length * 2;\r\n\r\n const buffer = new ArrayBuffer(audioLength);\r\n const view = new DataView(buffer);\r\n this.floatTo16BitPCM(view, 0, audioFrame);\r\n\r\n return buffer;\r\n }\r\n\r\n private setString(view: DataView, offset: number, str: string): void {\r\n for (let i = 0; i < str.length; i++) {\r\n view.setUint8(offset + i, str.charCodeAt(i));\r\n }\r\n }\r\n\r\n private floatTo16BitPCM(view: DataView, offset: number, input: Float32Array): void {\r\n for (let i = 0; i < input.length; i++ , offset += 2) {\r\n const s = Math.max(-1, Math.min(1, input[i]));\r\n view.setInt16(offset, s < 0 ? s * 0x8000 : s * 0x7FFF, true);\r\n }\r\n }\r\n\r\n private downSampleAudioFrame(\r\n srcFrame: Float32Array,\r\n srcRate: number,\r\n dstRate: number): Float32Array {\r\n\r\n if (!srcFrame) {\r\n return null;\r\n }\r\n\r\n if (dstRate === srcRate || dstRate > srcRate) {\r\n return srcFrame;\r\n }\r\n\r\n const ratio = srcRate / dstRate;\r\n const dstLength = Math.round(srcFrame.length / ratio);\r\n const dstFrame = new Float32Array(dstLength);\r\n let srcOffset = 0;\r\n let dstOffset = 0;\r\n while (dstOffset < dstLength) {\r\n const nextSrcOffset = Math.round((dstOffset + 1) * ratio);\r\n let accum = 0;\r\n let count = 0;\r\n while (srcOffset < nextSrcOffset && srcOffset < srcFrame.length) {\r\n accum += srcFrame[srcOffset++];\r\n count++;\r\n }\r\n dstFrame[dstOffset++] = accum / count;\r\n }\r\n\r\n return dstFrame;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { InvalidOperationError } from \"./Error.js\";\r\nimport { createNoDashGuid } from \"./Guid.js\";\r\nimport { Queue } from \"./Queue.js\";\r\n\r\nexport interface IStreamChunk {\r\n isEnd: boolean;\r\n buffer: TBuffer;\r\n timeReceived: number;\r\n}\r\n\r\nexport class Stream {\r\n private privId: string;\r\n private privIsWriteEnded: boolean = false;\r\n private privIsReadEnded: boolean = false;\r\n private privReaderQueue: Queue>;\r\n\r\n public constructor(streamId?: string) {\r\n this.privId = streamId ? streamId : createNoDashGuid();\r\n this.privReaderQueue = new Queue>();\r\n }\r\n\r\n public get isClosed(): boolean {\r\n return this.privIsWriteEnded;\r\n }\r\n\r\n public get isReadEnded(): boolean {\r\n return this.privIsReadEnded;\r\n }\r\n\r\n public get id(): string {\r\n return this.privId;\r\n }\r\n\r\n public close(): void {\r\n if (!this.privIsWriteEnded) {\r\n this.writeStreamChunk({\r\n buffer: null,\r\n isEnd: true,\r\n timeReceived: Date.now(),\r\n });\r\n this.privIsWriteEnded = true;\r\n }\r\n }\r\n\r\n public writeStreamChunk(streamChunk: IStreamChunk): void {\r\n this.throwIfClosed();\r\n if (!this.privReaderQueue.isDisposed()) {\r\n try {\r\n this.privReaderQueue.enqueue(streamChunk);\r\n } catch (e) {\r\n // Do nothing\r\n }\r\n }\r\n }\r\n\r\n public read(): Promise> {\r\n if (this.privIsReadEnded) {\r\n throw new InvalidOperationError(\"Stream read has already finished\");\r\n }\r\n\r\n return this.privReaderQueue\r\n .dequeue()\r\n .then(async (streamChunk: IStreamChunk): Promise> => {\r\n if (streamChunk === undefined || streamChunk.isEnd) {\r\n await this.privReaderQueue.dispose(\"End of stream reached\");\r\n }\r\n\r\n return streamChunk;\r\n });\r\n }\r\n public readEnded(): void {\r\n if (!this.privIsReadEnded) {\r\n this.privIsReadEnded = true;\r\n this.privReaderQueue = new Queue>();\r\n }\r\n }\r\n\r\n private throwIfClosed(): void {\r\n if (this.privIsWriteEnded) {\r\n throw new InvalidOperationError(\"Stream closed\");\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IStringDictionary } from \"./IDictionary.js\";\r\n\r\n/**\r\n * String helper functions\r\n */\r\nexport class StringUtils {\r\n\r\n /**\r\n * Formats a string by replacing the named {keys} in the string with the values contained in the replacement dictionary.\r\n * @param format The format string that contains the parts to replace surrounded by {}. For example: \"wss://{region}.cts.speech.microsoft.com\".\r\n * If your string needs to contain a { or } you can use the {{ and }} escape sequences respectively.\r\n * @param replacements The dictionary of replacements. If a replacement is not found, it is replaced with an empty string\r\n * @returns The formatted string. If you pass in a null or undefined format string, an empty string will be returned\r\n */\r\n public static formatString(format: string, replacements: IStringDictionary): string {\r\n if (!format) {\r\n return \"\";\r\n }\r\n\r\n if (!replacements) {\r\n return format;\r\n }\r\n\r\n let formatted: string = \"\";\r\n let key: string = \"\";\r\n\r\n const appendToFormatted = (str: string): void => {\r\n formatted += str;\r\n };\r\n const appendToKey = (str: string): void => {\r\n key += str;\r\n };\r\n let appendFunc: (str: string) => void = appendToFormatted;\r\n\r\n for (let i = 0; i < format.length; i++) {\r\n const c: string = format[i];\r\n const next: string = i + 1 < format.length ? format[i + 1] : \"\";\r\n\r\n switch (c) {\r\n case \"{\":\r\n if (next === \"{\") {\r\n appendFunc(\"{\");\r\n i++;\r\n } else {\r\n appendFunc = appendToKey;\r\n }\r\n break;\r\n\r\n case \"}\":\r\n if (next === \"}\") {\r\n appendFunc(\"}\");\r\n i++;\r\n } else {\r\n if (replacements.hasOwnProperty(key)) {\r\n formatted += replacements[key];\r\n }\r\n\r\n appendFunc = appendToFormatted;\r\n key = \"\";\r\n }\r\n break;\r\n\r\n default:\r\n appendFunc(c);\r\n break;\r\n }\r\n }\r\n\r\n return formatted;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\ntype TWorkerMessage = ICallNotification | IClearResponse | IErrorNotification | IErrorResponse;\r\n\r\ninterface IClearResponse {\r\n error: null;\r\n id: number;\r\n}\r\n\r\ninterface IErrorNotification {\r\n error: {\r\n message: string;\r\n };\r\n id: null;\r\n result: null;\r\n}\r\n\r\ninterface IErrorResponse {\r\n error: {\r\n message: string;\r\n };\r\n id: number;\r\n result: null;\r\n}\r\n\r\ninterface ICallNotification {\r\n id: null;\r\n method: \"call\";\r\n params: {\r\n timerId: number;\r\n };\r\n}\r\n\r\ninterface ISetNotification {\r\n id: null;\r\n method: \"set\";\r\n params: {\r\n delay: number;\r\n now: number;\r\n timerId: number;\r\n };\r\n}\r\n\r\ninterface IClearRequest {\r\n id: number;\r\n method: \"clear\";\r\n params: {\r\n timerId: number;\r\n };\r\n}\r\n\r\ninterface IWorkerEvent extends Event {\r\n data: TWorkerMessage;\r\n}\r\n\r\ninterface IWorkerTimers {\r\n clearTimeout: (timerId: number) => void;\r\n setTimeout: (func: () => any, delay: number) => number;\r\n}\r\n\r\ndeclare type Func = () => any;\r\n\r\nexport class Timeout {\r\n\r\n private static workerTimers: null | IWorkerTimers = null;\r\n\r\n public static clearTimeout: IWorkerTimers[\"clearTimeout\"] = (timerId: number): void => Timeout.timers().clearTimeout(timerId);\r\n\r\n public static setTimeout: IWorkerTimers[\"setTimeout\"] = (func: () => any, delay: number): number => Timeout.timers().setTimeout(func, delay);\r\n\r\n public static load(): any {\r\n // Prefilling the Maps with a function indexed by zero is necessary to be compliant with the specification.\r\n const scheduledTimeoutFunctions: Map = new Map([[0, (): void => { }]]); // eslint-disable-line @typescript-eslint/no-empty-function\r\n const unhandledRequests: Map = new Map();\r\n\r\n // eslint-disable-next-line\r\n const workerScript = `!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=14)}([function(e,t,n){\"use strict\";n.d(t,\"a\",(function(){return i})),n.d(t,\"b\",(function(){return u})),n.d(t,\"c\",(function(){return a})),n.d(t,\"d\",(function(){return d}));const r=new Map,o=new Map,i=e=>{const t=r.get(e);if(void 0===t)throw new Error('There is no interval scheduled with the given id \"'.concat(e,'\".'));clearTimeout(t),r.delete(e)},u=e=>{const t=o.get(e);if(void 0===t)throw new Error('There is no timeout scheduled with the given id \"'.concat(e,'\".'));clearTimeout(t),o.delete(e)},f=(e,t)=>{let n,r;if(\"performance\"in self){const o=performance.now();n=o,r=e-Math.max(0,o-t)}else n=Date.now(),r=e;return{expected:n+r,remainingDelay:r}},c=(e,t,n,r)=>{const o=\"performance\"in self?performance.now():Date.now();o>n?postMessage({id:null,method:\"call\",params:{timerId:t}}):e.set(t,setTimeout(c,n-o,e,t,n))},a=(e,t,n)=>{const{expected:o,remainingDelay:i}=f(e,n);r.set(t,setTimeout(c,i,r,t,o))},d=(e,t,n)=>{const{expected:r,remainingDelay:i}=f(e,n);o.set(t,setTimeout(c,i,o,t,r))}},function(e,t,n){\"use strict\";n.r(t);var r=n(2);for(var o in r)\"default\"!==o&&function(e){n.d(t,e,(function(){return r[e]}))}(o);var i=n(3);for(var o in i)\"default\"!==o&&function(e){n.d(t,e,(function(){return i[e]}))}(o);var u=n(4);for(var o in u)\"default\"!==o&&function(e){n.d(t,e,(function(){return u[e]}))}(o);var f=n(5);for(var o in f)\"default\"!==o&&function(e){n.d(t,e,(function(){return f[e]}))}(o);var c=n(6);for(var o in c)\"default\"!==o&&function(e){n.d(t,e,(function(){return c[e]}))}(o);var a=n(7);for(var o in a)\"default\"!==o&&function(e){n.d(t,e,(function(){return a[e]}))}(o);var d=n(8);for(var o in d)\"default\"!==o&&function(e){n.d(t,e,(function(){return d[e]}))}(o);var s=n(9);for(var o in s)\"default\"!==o&&function(e){n.d(t,e,(function(){return s[e]}))}(o)},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t,n){\"use strict\";n.r(t);var r=n(11);for(var o in r)\"default\"!==o&&function(e){n.d(t,e,(function(){return r[e]}))}(o);var i=n(12);for(var o in i)\"default\"!==o&&function(e){n.d(t,e,(function(){return i[e]}))}(o);var u=n(13);for(var o in u)\"default\"!==o&&function(e){n.d(t,e,(function(){return u[e]}))}(o)},function(e,t){},function(e,t){},function(e,t){},function(e,t,n){\"use strict\";n.r(t);var r=n(0),o=n(1);for(var i in o)\"default\"!==i&&function(e){n.d(t,e,(function(){return o[e]}))}(i);var u=n(10);for(var i in u)\"default\"!==i&&function(e){n.d(t,e,(function(){return u[e]}))}(i);addEventListener(\"message\",({data:e})=>{try{if(\"clear\"===e.method){const{id:t,params:{timerId:n}}=e;Object(r.b)(n),postMessage({error:null,id:t})}else{if(\"set\"!==e.method)throw new Error('The given method \"'.concat(e.method,'\" is not supported'));{const{params:{delay:t,now:n,timerId:o}}=e;Object(r.d)(t,o,n)}}}catch(t){postMessage({error:{message:t.message},id:e.id,result:null})}})}]);`;\r\n const workerUrl = \"data:text/javascript;base64,\" + btoa(workerScript);\r\n const worker = new Worker(workerUrl);\r\n\r\n worker.addEventListener(\"message\", ({ data }: IWorkerEvent): void => {\r\n if (Timeout.isCallNotification(data)) {\r\n const {\r\n params: { timerId }\r\n } = data;\r\n\r\n const idOrFunc = scheduledTimeoutFunctions.get(timerId);\r\n\r\n if (typeof idOrFunc === \"number\") {\r\n const unhandledTimerId = unhandledRequests.get(idOrFunc);\r\n\r\n if (\r\n unhandledTimerId === undefined ||\r\n unhandledTimerId !== timerId\r\n ) {\r\n throw new Error(\"The timer is in an undefined state.\");\r\n }\r\n } else if (typeof idOrFunc !== \"undefined\") {\r\n idOrFunc();\r\n\r\n // A timeout can be safely deleted because it is only called once.\r\n scheduledTimeoutFunctions.delete(timerId);\r\n } else {\r\n throw new Error(\"The timer is in an undefined state.\");\r\n }\r\n } else if (Timeout.isClearResponse(data)) {\r\n const { id } = data;\r\n\r\n const unhandledTimerId = unhandledRequests.get(id);\r\n\r\n if (unhandledTimerId === undefined) {\r\n throw new Error(\"The timer is in an undefined state.\");\r\n }\r\n\r\n unhandledRequests.delete(id);\r\n\r\n scheduledTimeoutFunctions.delete(unhandledTimerId);\r\n } else {\r\n const {\r\n error: { message }\r\n } = data;\r\n\r\n throw new Error(message);\r\n }\r\n });\r\n\r\n const clearTimeout = (timerId: number): void => {\r\n const id = Math.random();\r\n\r\n unhandledRequests.set(id, timerId);\r\n scheduledTimeoutFunctions.set(timerId, id);\r\n\r\n worker.postMessage({\r\n id,\r\n method: \"clear\",\r\n params: { timerId }\r\n } as IClearRequest);\r\n };\r\n\r\n const setTimeout = (func: () => void, delay: number): number => {\r\n const timerId = Math.random();\r\n\r\n scheduledTimeoutFunctions.set(timerId, func);\r\n\r\n worker.postMessage({\r\n id: null,\r\n method: \"set\",\r\n params: {\r\n delay,\r\n now: performance.now(),\r\n timerId\r\n }\r\n } as ISetNotification);\r\n\r\n return timerId;\r\n };\r\n\r\n return {\r\n clearTimeout,\r\n setTimeout\r\n };\r\n }\r\n\r\n private static loadWorkerTimers(): () => IWorkerTimers {\r\n return (): IWorkerTimers => {\r\n if (Timeout.workerTimers !== null) {\r\n return Timeout.workerTimers;\r\n }\r\n\r\n Timeout.workerTimers = Timeout.load() as IWorkerTimers;\r\n\r\n return Timeout.workerTimers;\r\n };\r\n }\r\n\r\n public static timers: () => IWorkerTimers = Timeout.loadWorkerTimers();\r\n\r\n private static isCallNotification(message: TWorkerMessage): message is ICallNotification {\r\n return (message as ICallNotification).method !== undefined && (message as ICallNotification).method === \"call\";\r\n }\r\n\r\n private static isClearResponse(message: TWorkerMessage): message is IClearResponse {\r\n return (message as IClearResponse).error === null && typeof message.id === \"number\";\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport { PullAudioOutputStream } from \"./Audio/AudioOutputStream.js\";\r\n\r\ninterface IActivity {\r\n conversation?: any;\r\n id?: string;\r\n replyToId?: string;\r\n type?: string;\r\n text?: string;\r\n speak?: any;\r\n}\r\n\r\n/**\r\n * Defines contents of received message/events.\r\n * @class ActivityReceivedEventArgs\r\n */\r\nexport class ActivityReceivedEventArgs {\r\n private privActivity: IActivity;\r\n private privAudioStream: PullAudioOutputStream;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {any} activity - The activity..\r\n */\r\n public constructor(activity: any, audioStream?: PullAudioOutputStream) {\r\n this.privActivity = activity as IActivity;\r\n this.privAudioStream = audioStream;\r\n }\r\n\r\n /**\r\n * Gets the received activity\r\n * @member ActivityReceivedEventArgs.prototype.activity\r\n * @function\r\n * @public\r\n * @returns {any} the received activity.\r\n */\r\n public get activity(): any {\r\n return this.privActivity;\r\n }\r\n\r\n public get audioStream(): PullAudioOutputStream {\r\n return this.privAudioStream;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport { PathLike } from \"fs\";\r\nimport {\r\n FileAudioSource,\r\n MicAudioSource,\r\n PcmRecorder,\r\n} from \"../../common.browser/Exports.js\";\r\nimport { ISpeechConfigAudioDevice } from \"../../common.speech/Exports.js\";\r\nimport {\r\n AudioSourceEvent,\r\n EventSource,\r\n IAudioDestination,\r\n IAudioSource,\r\n IAudioStreamNode\r\n} from \"../../common/Exports.js\";\r\nimport { Contracts } from \"../Contracts.js\";\r\nimport {\r\n AudioInputStream,\r\n AudioOutputStream,\r\n AudioStreamFormat,\r\n IPlayer,\r\n PullAudioInputStreamCallback,\r\n PullAudioOutputStream,\r\n PushAudioOutputStream,\r\n PushAudioOutputStreamCallback,\r\n SpeakerAudioDestination\r\n} from \"../Exports.js\";\r\nimport { AudioFileWriter } from \"./AudioFileWriter.js\";\r\nimport { PullAudioInputStreamImpl, PushAudioInputStreamImpl } from \"./AudioInputStream.js\";\r\nimport { PullAudioOutputStreamImpl, PushAudioOutputStreamImpl } from \"./AudioOutputStream.js\";\r\nimport { AudioStreamFormatImpl } from \"./AudioStreamFormat.js\";\r\n\r\n/**\r\n * Represents audio input configuration used for specifying what type of input to use (microphone, file, stream).\r\n * @class AudioConfig\r\n * Updated in version 1.11.0\r\n */\r\nexport abstract class AudioConfig {\r\n /**\r\n * Creates an AudioConfig object representing the default microphone on the system.\r\n * @member AudioConfig.fromDefaultMicrophoneInput\r\n * @function\r\n * @public\r\n * @returns {AudioConfig} The audio input configuration being created.\r\n */\r\n public static fromDefaultMicrophoneInput(): AudioConfig {\r\n const pcmRecorder = new PcmRecorder(true);\r\n return new AudioConfigImpl(new MicAudioSource(pcmRecorder));\r\n }\r\n\r\n /**\r\n * Creates an AudioConfig object representing a microphone with the specified device ID.\r\n * @member AudioConfig.fromMicrophoneInput\r\n * @function\r\n * @public\r\n * @param {string | undefined} deviceId - Specifies the device ID of the microphone to be used.\r\n * Default microphone is used the value is omitted.\r\n * @returns {AudioConfig} The audio input configuration being created.\r\n */\r\n public static fromMicrophoneInput(deviceId?: string): AudioConfig {\r\n const pcmRecorder = new PcmRecorder(true);\r\n return new AudioConfigImpl(new MicAudioSource(pcmRecorder, deviceId));\r\n }\r\n\r\n /**\r\n * Creates an AudioConfig object representing the specified file.\r\n * @member AudioConfig.fromWavFileInput\r\n * @function\r\n * @public\r\n * @param {File} fileName - Specifies the audio input file. Currently, only WAV / PCM is supported.\r\n * @returns {AudioConfig} The audio input configuration being created.\r\n */\r\n public static fromWavFileInput(file: File | Buffer, name: string = \"unnamedBuffer.wav\"): AudioConfig {\r\n return new AudioConfigImpl(new FileAudioSource(file, name));\r\n }\r\n\r\n /**\r\n * Creates an AudioConfig object representing the specified stream.\r\n * @member AudioConfig.fromStreamInput\r\n * @function\r\n * @public\r\n * @param {AudioInputStream | PullAudioInputStreamCallback | MediaStream} audioStream - Specifies the custom audio input\r\n * stream. Currently, only WAV / PCM is supported.\r\n * @returns {AudioConfig} The audio input configuration being created.\r\n */\r\n public static fromStreamInput(audioStream: AudioInputStream | PullAudioInputStreamCallback\r\n | MediaStream): AudioConfig {\r\n if (audioStream instanceof PullAudioInputStreamCallback) {\r\n return new AudioConfigImpl(new PullAudioInputStreamImpl(audioStream));\r\n }\r\n\r\n if (audioStream instanceof AudioInputStream) {\r\n return new AudioConfigImpl(audioStream as PushAudioInputStreamImpl);\r\n }\r\n if (typeof MediaStream !== \"undefined\" && audioStream instanceof MediaStream) {\r\n const pcmRecorder = new PcmRecorder(false);\r\n return new AudioConfigImpl(new MicAudioSource(pcmRecorder, null, null, audioStream));\r\n }\r\n\r\n throw new Error(\"Not Supported Type\");\r\n }\r\n\r\n /**\r\n * Creates an AudioConfig object representing the default speaker.\r\n * @member AudioConfig.fromDefaultSpeakerOutput\r\n * @function\r\n * @public\r\n * @returns {AudioConfig} The audio output configuration being created.\r\n * Added in version 1.11.0\r\n */\r\n public static fromDefaultSpeakerOutput(): AudioConfig {\r\n return new AudioOutputConfigImpl(new SpeakerAudioDestination());\r\n }\r\n\r\n /**\r\n * Creates an AudioConfig object representing the custom IPlayer object.\r\n * You can use the IPlayer object to control pause, resume, etc.\r\n * @member AudioConfig.fromSpeakerOutput\r\n * @function\r\n * @public\r\n * @param {IPlayer} player - the IPlayer object for playback.\r\n * @returns {AudioConfig} The audio output configuration being created.\r\n * Added in version 1.12.0\r\n */\r\n public static fromSpeakerOutput(player?: IPlayer): AudioConfig {\r\n if (player === undefined) {\r\n return AudioConfig.fromDefaultSpeakerOutput();\r\n }\r\n if (player instanceof SpeakerAudioDestination) {\r\n return new AudioOutputConfigImpl(player);\r\n }\r\n\r\n throw new Error(\"Not Supported Type\");\r\n }\r\n\r\n /**\r\n * Creates an AudioConfig object representing a specified output audio file\r\n * @member AudioConfig.fromAudioFileOutput\r\n * @function\r\n * @public\r\n * @param {PathLike} filename - the filename of the output audio file\r\n * @returns {AudioConfig} The audio output configuration being created.\r\n * Added in version 1.11.0\r\n */\r\n public static fromAudioFileOutput(filename: PathLike): AudioConfig {\r\n return new AudioOutputConfigImpl(new AudioFileWriter(filename));\r\n }\r\n\r\n /**\r\n * Creates an AudioConfig object representing a specified audio output stream\r\n * @member AudioConfig.fromStreamOutput\r\n * @function\r\n * @public\r\n * @param {AudioOutputStream | PushAudioOutputStreamCallback} audioStream - Specifies the custom audio output\r\n * stream.\r\n * @returns {AudioConfig} The audio output configuration being created.\r\n * Added in version 1.11.0\r\n */\r\n public static fromStreamOutput(audioStream: AudioOutputStream | PushAudioOutputStreamCallback): AudioConfig {\r\n if (audioStream instanceof PushAudioOutputStreamCallback) {\r\n return new AudioOutputConfigImpl(new PushAudioOutputStreamImpl(audioStream));\r\n }\r\n\r\n if (audioStream instanceof PushAudioOutputStream) {\r\n return new AudioOutputConfigImpl(audioStream as PushAudioOutputStreamImpl);\r\n }\r\n\r\n if (audioStream instanceof PullAudioOutputStream) {\r\n return new AudioOutputConfigImpl(audioStream as PullAudioOutputStreamImpl);\r\n }\r\n\r\n throw new Error(\"Not Supported Type\");\r\n }\r\n\r\n /**\r\n * Explicitly frees any external resource attached to the object\r\n * @member AudioConfig.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n\r\n /**\r\n * Sets an arbitrary property.\r\n * @member SpeechConfig.prototype.setProperty\r\n * @function\r\n * @public\r\n * @param {string} name - The name of the property to set.\r\n * @param {string} value - The new value of the property.\r\n */\r\n public abstract setProperty(name: string, value: string): void;\r\n\r\n /**\r\n * Returns the current value of an arbitrary property.\r\n * @member SpeechConfig.prototype.getProperty\r\n * @function\r\n * @public\r\n * @param {string} name - The name of the property to query.\r\n * @param {string} def - The value to return in case the property is not known.\r\n * @returns {string} The current value, or provided default, of the given property.\r\n */\r\n public abstract getProperty(name: string, def?: string): string;\r\n\r\n}\r\n\r\n/**\r\n * Represents audio input stream used for custom audio input configurations.\r\n * @private\r\n * @class AudioConfigImpl\r\n */\r\nexport class AudioConfigImpl extends AudioConfig implements IAudioSource {\r\n private privSource: IAudioSource;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {IAudioSource} source - An audio source.\r\n */\r\n public constructor(source: IAudioSource) {\r\n super();\r\n this.privSource = source;\r\n }\r\n\r\n /**\r\n * Format information for the audio\r\n */\r\n public get format(): Promise {\r\n return this.privSource.format;\r\n }\r\n\r\n /**\r\n * @member AudioConfigImpl.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, err?: (error: string) => void): void {\r\n this.privSource.turnOff().then((): void => {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }, (error: string): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @member AudioConfigImpl.prototype.id\r\n * @function\r\n * @public\r\n */\r\n public id(): string {\r\n return this.privSource.id();\r\n }\r\n\r\n /**\r\n * @member AudioConfigImpl.prototype.turnOn\r\n * @function\r\n * @public\r\n * @returns {Promise} A promise.\r\n */\r\n public turnOn(): Promise {\r\n return this.privSource.turnOn();\r\n }\r\n\r\n /**\r\n * @member AudioConfigImpl.prototype.attach\r\n * @function\r\n * @public\r\n * @param {string} audioNodeId - The audio node id.\r\n * @returns {Promise} A promise.\r\n */\r\n public attach(audioNodeId: string): Promise {\r\n return this.privSource.attach(audioNodeId);\r\n }\r\n\r\n /**\r\n * @member AudioConfigImpl.prototype.detach\r\n * @function\r\n * @public\r\n * @param {string} audioNodeId - The audio node id.\r\n */\r\n public detach(audioNodeId: string): void {\r\n return this.privSource.detach(audioNodeId);\r\n }\r\n\r\n /**\r\n * @member AudioConfigImpl.prototype.turnOff\r\n * @function\r\n * @public\r\n * @returns {Promise} A promise.\r\n */\r\n public turnOff(): Promise {\r\n return this.privSource.turnOff();\r\n }\r\n\r\n /**\r\n * @member AudioConfigImpl.prototype.events\r\n * @function\r\n * @public\r\n * @returns {EventSource} An event source for audio events.\r\n */\r\n public get events(): EventSource {\r\n return this.privSource.events;\r\n }\r\n\r\n public setProperty(name: string, value: string): void {\r\n Contracts.throwIfNull(value, \"value\");\r\n\r\n if (undefined !== this.privSource.setProperty) {\r\n this.privSource.setProperty(name, value);\r\n } else {\r\n throw new Error(\"This AudioConfig instance does not support setting properties.\");\r\n }\r\n\r\n }\r\n\r\n public getProperty(name: string, def?: string): string {\r\n if (undefined !== this.privSource.getProperty) {\r\n return this.privSource.getProperty(name, def);\r\n } else {\r\n throw new Error(\"This AudioConfig instance does not support getting properties.\");\r\n }\r\n\r\n return def;\r\n }\r\n\r\n public get deviceInfo(): Promise {\r\n return this.privSource.deviceInfo;\r\n }\r\n}\r\n\r\nexport class AudioOutputConfigImpl extends AudioConfig implements IAudioDestination {\r\n private privDestination: IAudioDestination;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {IAudioDestination} destination - An audio destination.\r\n */\r\n public constructor(destination: IAudioDestination) {\r\n super();\r\n this.privDestination = destination;\r\n }\r\n\r\n public set format(format: AudioStreamFormat) {\r\n this.privDestination.format = format;\r\n }\r\n\r\n public write(buffer: ArrayBuffer): void {\r\n this.privDestination.write(buffer);\r\n }\r\n\r\n public close(): void {\r\n this.privDestination.close();\r\n }\r\n\r\n public id(): string {\r\n return this.privDestination.id();\r\n }\r\n\r\n public setProperty(): void {\r\n throw new Error(\"This AudioConfig instance does not support setting properties.\");\r\n }\r\n\r\n public getProperty(): string {\r\n throw new Error(\"This AudioConfig instance does not support getting properties.\");\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport * as fs from \"fs\";\r\nimport { IAudioDestination } from \"../../common/Exports.js\";\r\nimport { Contracts } from \"../Contracts.js\";\r\nimport { AudioStreamFormat } from \"../Exports.js\";\r\nimport { AudioOutputFormatImpl } from \"./AudioOutputFormat.js\";\r\n\r\nexport class AudioFileWriter implements IAudioDestination {\r\n private privAudioFormat: AudioOutputFormatImpl;\r\n private privFd: number;\r\n private privId: string;\r\n private privWriteStream: fs.WriteStream;\r\n\r\n public constructor(filename: fs.PathLike) {\r\n Contracts.throwIfNullOrUndefined(fs.openSync, \"\\nFile System access not available, please use Push or PullAudioOutputStream\");\r\n this.privFd = fs.openSync(filename, \"w\");\r\n }\r\n\r\n public set format(format: AudioStreamFormat) {\r\n Contracts.throwIfNotUndefined(this.privAudioFormat, \"format is already set\");\r\n this.privAudioFormat = format as AudioOutputFormatImpl;\r\n let headerOffset: number = 0;\r\n if (this.privAudioFormat.hasHeader) {\r\n headerOffset = this.privAudioFormat.header.byteLength;\r\n }\r\n if (this.privFd !== undefined) {\r\n this.privWriteStream = fs.createWriteStream(\"\", {fd: this.privFd, start: headerOffset, autoClose: false});\r\n }\r\n }\r\n\r\n public write(buffer: ArrayBuffer): void {\r\n Contracts.throwIfNullOrUndefined(this.privAudioFormat, \"must set format before writing.\");\r\n if (this.privWriteStream !== undefined) {\r\n this.privWriteStream.write(new Uint8Array(buffer.slice(0)));\r\n }\r\n }\r\n\r\n public close(): void {\r\n if (this.privFd !== undefined) {\r\n this.privWriteStream.on(\"finish\", (): void => {\r\n if (this.privAudioFormat.hasHeader) {\r\n this.privAudioFormat.updateHeader(this.privWriteStream.bytesWritten);\r\n fs.writeSync(this.privFd,\r\n new Int8Array(this.privAudioFormat.header),\r\n 0,\r\n this.privAudioFormat.header.byteLength,\r\n 0);\r\n }\r\n fs.closeSync(this.privFd);\r\n this.privFd = undefined;\r\n });\r\n this.privWriteStream.end();\r\n }\r\n }\r\n\r\n public id(): string {\r\n return this.privId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {\r\n connectivity,\r\n ISpeechConfigAudioDevice,\r\n type,\r\n} from \"../../common.speech/Exports.js\";\r\nimport {\r\n AudioSourceEvent,\r\n AudioSourceInitializingEvent,\r\n AudioSourceReadyEvent,\r\n AudioStreamNodeAttachedEvent,\r\n AudioStreamNodeAttachingEvent,\r\n AudioStreamNodeDetachedEvent,\r\n ChunkedArrayBufferStream,\r\n Events,\r\n EventSource,\r\n IAudioSource,\r\n IAudioStreamNode,\r\n IStreamChunk,\r\n Stream,\r\n} from \"../../common/Exports.js\";\r\nimport { createNoDashGuid } from \"../../common/Guid.js\";\r\nimport { AudioStreamFormat, PullAudioInputStreamCallback } from \"../Exports.js\";\r\nimport { AudioStreamFormatImpl } from \"./AudioStreamFormat.js\";\r\n\r\n/**\r\n * Represents audio input stream used for custom audio input configurations.\r\n * @class AudioInputStream\r\n */\r\nexport abstract class AudioInputStream {\r\n\r\n /**\r\n * Creates and initializes an instance.\r\n * @constructor\r\n */\r\n protected constructor() {\r\n return;\r\n }\r\n\r\n /**\r\n * Creates a memory backed PushAudioInputStream with the specified audio format.\r\n * @member AudioInputStream.createPushStream\r\n * @function\r\n * @public\r\n * @param {AudioStreamFormat} format - The audio data format in which audio will be\r\n * written to the push audio stream's write() method (Required if format is not 16 kHz 16bit mono PCM).\r\n * @returns {PushAudioInputStream} The audio input stream being created.\r\n */\r\n public static createPushStream(format?: AudioStreamFormat): PushAudioInputStream {\r\n return PushAudioInputStream.create(format);\r\n }\r\n\r\n /**\r\n * Creates a PullAudioInputStream that delegates to the specified callback interface for read()\r\n * and close() methods.\r\n * @member AudioInputStream.createPullStream\r\n * @function\r\n * @public\r\n * @param {PullAudioInputStreamCallback} callback - The custom audio input object, derived from\r\n * PullAudioInputStreamCallback\r\n * @param {AudioStreamFormat} format - The audio data format in which audio will be returned from\r\n * the callback's read() method (Required if format is not 16 kHz 16bit mono PCM).\r\n * @returns {PullAudioInputStream} The audio input stream being created.\r\n */\r\n public static createPullStream(callback: PullAudioInputStreamCallback, format?: AudioStreamFormat): PullAudioInputStream {\r\n return PullAudioInputStream.create(callback, format);\r\n // throw new Error(\"Oops\");\r\n }\r\n\r\n /**\r\n * Explicitly frees any external resource attached to the object\r\n * @member AudioInputStream.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n}\r\n\r\n/**\r\n * Represents memory backed push audio input stream used for custom audio input configurations.\r\n * @class PushAudioInputStream\r\n */\r\nexport abstract class PushAudioInputStream extends AudioInputStream {\r\n\r\n /**\r\n * Creates a memory backed PushAudioInputStream with the specified audio format.\r\n * @member PushAudioInputStream.create\r\n * @function\r\n * @public\r\n * @param {AudioStreamFormat} format - The audio data format in which audio will be written to the\r\n * push audio stream's write() method (Required if format is not 16 kHz 16bit mono PCM).\r\n * @returns {PushAudioInputStream} The push audio input stream being created.\r\n */\r\n public static create(format?: AudioStreamFormat): PushAudioInputStream {\r\n return new PushAudioInputStreamImpl(format);\r\n }\r\n\r\n /**\r\n * Writes the audio data specified by making an internal copy of the data.\r\n * @member PushAudioInputStream.prototype.write\r\n * @function\r\n * @public\r\n * @param {ArrayBuffer} dataBuffer - The audio buffer of which this function will make a copy.\r\n */\r\n public abstract write(dataBuffer: ArrayBuffer): void;\r\n\r\n /**\r\n * Closes the stream.\r\n * @member PushAudioInputStream.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n}\r\n\r\n/**\r\n * Represents memory backed push audio input stream used for custom audio input configurations.\r\n * @private\r\n * @class PushAudioInputStreamImpl\r\n */\r\nexport class PushAudioInputStreamImpl extends PushAudioInputStream implements IAudioSource {\r\n\r\n private privFormat: AudioStreamFormatImpl;\r\n private privId: string;\r\n private privEvents: EventSource;\r\n private privStream: Stream;\r\n\r\n /**\r\n * Creates and initalizes an instance with the given values.\r\n * @constructor\r\n * @param {AudioStreamFormat} format - The audio stream format.\r\n */\r\n public constructor(format?: AudioStreamFormat) {\r\n super();\r\n if (format === undefined) {\r\n this.privFormat = AudioStreamFormatImpl.getDefaultInputFormat();\r\n } else {\r\n this.privFormat = format as AudioStreamFormatImpl;\r\n }\r\n this.privEvents = new EventSource();\r\n this.privId = createNoDashGuid();\r\n this.privStream = new ChunkedArrayBufferStream(this.privFormat.avgBytesPerSec / 10);\r\n }\r\n\r\n /**\r\n * Format information for the audio\r\n */\r\n public get format(): Promise {\r\n return Promise.resolve(this.privFormat);\r\n }\r\n\r\n /**\r\n * Writes the audio data specified by making an internal copy of the data.\r\n * @member PushAudioInputStreamImpl.prototype.write\r\n * @function\r\n * @public\r\n * @param {ArrayBuffer} dataBuffer - The audio buffer of which this function will make a copy.\r\n */\r\n public write(dataBuffer: ArrayBuffer): void {\r\n this.privStream.writeStreamChunk({\r\n buffer: dataBuffer,\r\n isEnd: false,\r\n timeReceived: Date.now()\r\n });\r\n }\r\n\r\n /**\r\n * Closes the stream.\r\n * @member PushAudioInputStreamImpl.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(): void {\r\n this.privStream.close();\r\n }\r\n\r\n public id(): string {\r\n return this.privId;\r\n }\r\n\r\n public turnOn(): Promise {\r\n this.onEvent(new AudioSourceInitializingEvent(this.privId)); // no stream id\r\n this.onEvent(new AudioSourceReadyEvent(this.privId));\r\n return;\r\n }\r\n\r\n public async attach(audioNodeId: string): Promise {\r\n this.onEvent(new AudioStreamNodeAttachingEvent(this.privId, audioNodeId));\r\n\r\n await this.turnOn();\r\n const stream = this.privStream;\r\n this.onEvent(new AudioStreamNodeAttachedEvent(this.privId, audioNodeId));\r\n return {\r\n detach: async (): Promise => {\r\n this.onEvent(new AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\r\n return this.turnOff();\r\n },\r\n id: (): string => audioNodeId,\r\n read: (): Promise> => stream.read(),\r\n };\r\n }\r\n\r\n public detach(audioNodeId: string): void {\r\n this.onEvent(new AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\r\n }\r\n\r\n public turnOff(): Promise {\r\n return;\r\n }\r\n\r\n public get events(): EventSource {\r\n return this.privEvents;\r\n }\r\n\r\n public get deviceInfo(): Promise {\r\n return Promise.resolve({\r\n bitspersample: this.privFormat.bitsPerSample,\r\n channelcount: this.privFormat.channels,\r\n connectivity: connectivity.Unknown,\r\n manufacturer: \"Speech SDK\",\r\n model: \"PushStream\",\r\n samplerate: this.privFormat.samplesPerSec,\r\n type: type.Stream,\r\n });\r\n }\r\n\r\n private onEvent(event: AudioSourceEvent): void {\r\n this.privEvents.onEvent(event);\r\n Events.instance.onEvent(event);\r\n }\r\n\r\n private toBuffer(arrayBuffer: ArrayBuffer): Buffer {\r\n const buf: Buffer = Buffer.alloc(arrayBuffer.byteLength);\r\n const view: Uint8Array = new Uint8Array(arrayBuffer);\r\n for (let i = 0; i < buf.length; ++i) {\r\n buf[i] = view[i];\r\n }\r\n return buf;\r\n }\r\n}\r\n\r\n/*\r\n * Represents audio input stream used for custom audio input configurations.\r\n * @class PullAudioInputStream\r\n */\r\nexport abstract class PullAudioInputStream extends AudioInputStream {\r\n /**\r\n * Creates and initializes and instance.\r\n * @constructor\r\n */\r\n protected constructor() {\r\n super();\r\n}\r\n\r\n /**\r\n * Creates a PullAudioInputStream that delegates to the specified callback interface for\r\n * read() and close() methods, using the default format (16 kHz 16bit mono PCM).\r\n * @member PullAudioInputStream.create\r\n * @function\r\n * @public\r\n * @param {PullAudioInputStreamCallback} callback - The custom audio input object,\r\n * derived from PullAudioInputStreamCustomCallback\r\n * @param {AudioStreamFormat} format - The audio data format in which audio will be\r\n * returned from the callback's read() method (Required if format is not 16 kHz 16bit mono PCM).\r\n * @returns {PullAudioInputStream} The push audio input stream being created.\r\n */\r\n public static create(callback: PullAudioInputStreamCallback, format?: AudioStreamFormat): PullAudioInputStream {\r\n return new PullAudioInputStreamImpl(callback, format as AudioStreamFormatImpl);\r\n }\r\n\r\n /**\r\n * Explicitly frees any external resource attached to the object\r\n * @member PullAudioInputStream.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n\r\n}\r\n\r\n/**\r\n * Represents audio input stream used for custom audio input configurations.\r\n * @private\r\n * @class PullAudioInputStreamImpl\r\n */\r\nexport class PullAudioInputStreamImpl extends PullAudioInputStream implements IAudioSource {\r\n\r\n private privCallback: PullAudioInputStreamCallback;\r\n private privFormat: AudioStreamFormatImpl;\r\n private privId: string;\r\n private privEvents: EventSource;\r\n private privIsClosed: boolean;\r\n private privBufferSize: number;\r\n\r\n /**\r\n * Creates a PullAudioInputStream that delegates to the specified callback interface for\r\n * read() and close() methods, using the default format (16 kHz 16bit mono PCM).\r\n * @constructor\r\n * @param {PullAudioInputStreamCallback} callback - The custom audio input object,\r\n * derived from PullAudioInputStreamCustomCallback\r\n * @param {AudioStreamFormat} format - The audio data format in which audio will be\r\n * returned from the callback's read() method (Required if format is not 16 kHz 16bit mono PCM).\r\n */\r\n public constructor(callback: PullAudioInputStreamCallback, format?: AudioStreamFormatImpl) {\r\n super();\r\n if (undefined === format) {\r\n this.privFormat = AudioStreamFormat.getDefaultInputFormat() as AudioStreamFormatImpl;\r\n } else {\r\n this.privFormat = format;\r\n }\r\n this.privEvents = new EventSource();\r\n this.privId = createNoDashGuid();\r\n this.privCallback = callback;\r\n this.privIsClosed = false;\r\n this.privBufferSize = this.privFormat.avgBytesPerSec / 10;\r\n }\r\n\r\n /**\r\n * Format information for the audio\r\n */\r\n public get format(): Promise {\r\n return Promise.resolve(this.privFormat);\r\n }\r\n\r\n /**\r\n * Closes the stream.\r\n * @member PullAudioInputStreamImpl.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(): void {\r\n this.privIsClosed = true;\r\n this.privCallback.close();\r\n }\r\n\r\n public id(): string {\r\n return this.privId;\r\n }\r\n\r\n public turnOn(): Promise {\r\n this.onEvent(new AudioSourceInitializingEvent(this.privId)); // no stream id\r\n this.onEvent(new AudioSourceReadyEvent(this.privId));\r\n return;\r\n }\r\n\r\n public async attach(audioNodeId: string): Promise {\r\n this.onEvent(new AudioStreamNodeAttachingEvent(this.privId, audioNodeId));\r\n\r\n await this.turnOn();\r\n this.onEvent(new AudioStreamNodeAttachedEvent(this.privId, audioNodeId));\r\n return {\r\n detach: (): Promise => {\r\n this.privCallback.close();\r\n this.onEvent(new AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\r\n return this.turnOff();\r\n },\r\n id: (): string => audioNodeId,\r\n read: (): Promise> => {\r\n let totalBytes: number = 0;\r\n let transmitBuff: ArrayBuffer;\r\n // Until we have the minimum number of bytes to send in a transmission, keep asking for more.\r\n while (totalBytes < this.privBufferSize) {\r\n // Sizing the read buffer to the delta between the perfect size and what's left means we won't ever get too much\r\n // data back.\r\n const readBuff: ArrayBuffer = new ArrayBuffer(this.privBufferSize - totalBytes);\r\n const pulledBytes: number = this.privCallback.read(readBuff);\r\n // If there is no return buffer yet defined, set the return buffer to the that was just populated.\r\n // This was, if we have enough data there's no copy penalty, but if we don't we have a buffer that's the\r\n // preferred size allocated.\r\n if (undefined === transmitBuff) {\r\n transmitBuff = readBuff;\r\n } else {\r\n // Not the first bite at the apple, so fill the return buffer with the data we got back.\r\n const intView: Int8Array = new Int8Array(transmitBuff);\r\n intView.set(new Int8Array(readBuff), totalBytes);\r\n }\r\n // If there are no bytes to read, just break out and be done.\r\n if (0 === pulledBytes) {\r\n break;\r\n }\r\n totalBytes += pulledBytes;\r\n }\r\n return Promise.resolve>({\r\n buffer: transmitBuff.slice(0, totalBytes),\r\n isEnd: this.privIsClosed || totalBytes === 0,\r\n timeReceived: Date.now(),\r\n });\r\n },\r\n };\r\n }\r\n\r\n public detach(audioNodeId: string): void {\r\n this.onEvent(new AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\r\n }\r\n\r\n public turnOff(): Promise {\r\n return;\r\n }\r\n\r\n public get events(): EventSource {\r\n return this.privEvents;\r\n }\r\n\r\n public get deviceInfo(): Promise {\r\n return Promise.resolve({\r\n bitspersample: this.privFormat.bitsPerSample,\r\n channelcount: this.privFormat.channels,\r\n connectivity: connectivity.Unknown,\r\n manufacturer: \"Speech SDK\",\r\n model: \"PullStream\",\r\n samplerate: this.privFormat.samplesPerSec,\r\n type: type.Stream,\r\n });\r\n }\r\n\r\n private onEvent(event: AudioSourceEvent): void {\r\n this.privEvents.onEvent(event);\r\n Events.instance.onEvent(event);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { INumberDictionary } from \"../../common/Exports.js\";\r\nimport { SpeechSynthesisOutputFormat } from \"../SpeechSynthesisOutputFormat.js\";\r\nimport { AudioFormatTag, AudioStreamFormatImpl } from \"./AudioStreamFormat.js\";\r\n\r\n/**\r\n * @private\r\n * @class AudioOutputFormatImpl\r\n * Updated in version 1.17.0\r\n */\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class AudioOutputFormatImpl extends AudioStreamFormatImpl {\r\n public static SpeechSynthesisOutputFormatToString: INumberDictionary = {\r\n [SpeechSynthesisOutputFormat.Raw8Khz8BitMonoMULaw]: \"raw-8khz-8bit-mono-mulaw\",\r\n [SpeechSynthesisOutputFormat.Riff16Khz16KbpsMonoSiren]: \"riff-16khz-16kbps-mono-siren\",\r\n [SpeechSynthesisOutputFormat.Audio16Khz16KbpsMonoSiren]: \"audio-16khz-16kbps-mono-siren\",\r\n [SpeechSynthesisOutputFormat.Audio16Khz32KBitRateMonoMp3]: \"audio-16khz-32kbitrate-mono-mp3\",\r\n [SpeechSynthesisOutputFormat.Audio16Khz128KBitRateMonoMp3]: \"audio-16khz-128kbitrate-mono-mp3\",\r\n [SpeechSynthesisOutputFormat.Audio16Khz64KBitRateMonoMp3]: \"audio-16khz-64kbitrate-mono-mp3\",\r\n [SpeechSynthesisOutputFormat.Audio24Khz48KBitRateMonoMp3]: \"audio-24khz-48kbitrate-mono-mp3\",\r\n [SpeechSynthesisOutputFormat.Audio24Khz96KBitRateMonoMp3]: \"audio-24khz-96kbitrate-mono-mp3\",\r\n [SpeechSynthesisOutputFormat.Audio24Khz160KBitRateMonoMp3]: \"audio-24khz-160kbitrate-mono-mp3\",\r\n [SpeechSynthesisOutputFormat.Raw16Khz16BitMonoTrueSilk]: \"raw-16khz-16bit-mono-truesilk\",\r\n [SpeechSynthesisOutputFormat.Riff16Khz16BitMonoPcm]: \"riff-16khz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Riff8Khz16BitMonoPcm]: \"riff-8khz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Riff24Khz16BitMonoPcm]: \"riff-24khz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Riff8Khz8BitMonoMULaw]: \"riff-8khz-8bit-mono-mulaw\",\r\n [SpeechSynthesisOutputFormat.Raw16Khz16BitMonoPcm]: \"raw-16khz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Raw24Khz16BitMonoPcm]: \"raw-24khz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Raw8Khz16BitMonoPcm]: \"raw-8khz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Ogg16Khz16BitMonoOpus]: \"ogg-16khz-16bit-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Ogg24Khz16BitMonoOpus]: \"ogg-24khz-16bit-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Raw48Khz16BitMonoPcm]: \"raw-48khz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Riff48Khz16BitMonoPcm]: \"riff-48khz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Audio48Khz96KBitRateMonoMp3]: \"audio-48khz-96kbitrate-mono-mp3\",\r\n [SpeechSynthesisOutputFormat.Audio48Khz192KBitRateMonoMp3]: \"audio-48khz-192kbitrate-mono-mp3\",\r\n [SpeechSynthesisOutputFormat.Ogg48Khz16BitMonoOpus]: \"ogg-48khz-16bit-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Webm16Khz16BitMonoOpus]: \"webm-16khz-16bit-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Webm24Khz16BitMonoOpus]: \"webm-24khz-16bit-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Webm24Khz16Bit24KbpsMonoOpus]: \"webm-24khz-16bit-24kbps-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Raw24Khz16BitMonoTrueSilk]: \"raw-24khz-16bit-mono-truesilk\",\r\n [SpeechSynthesisOutputFormat.Raw8Khz8BitMonoALaw]: \"raw-8khz-8bit-mono-alaw\",\r\n [SpeechSynthesisOutputFormat.Riff8Khz8BitMonoALaw]: \"riff-8khz-8bit-mono-alaw\",\r\n [SpeechSynthesisOutputFormat.Audio16Khz16Bit32KbpsMonoOpus]: \"audio-16khz-16bit-32kbps-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Audio24Khz16Bit48KbpsMonoOpus]: \"audio-24khz-16bit-48kbps-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Audio24Khz16Bit24KbpsMonoOpus]: \"audio-24khz-16bit-24kbps-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Raw22050Hz16BitMonoPcm]: \"raw-22050hz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Riff22050Hz16BitMonoPcm]: \"riff-22050hz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Raw44100Hz16BitMonoPcm]: \"raw-44100hz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Riff44100Hz16BitMonoPcm]: \"riff-44100hz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.AmrWb16000Hz]: \"amr-wb-16000hz\",\r\n [SpeechSynthesisOutputFormat.G72216Khz64Kbps]: \"g722-16khz-64kbps\",\r\n };\r\n private priAudioFormatString: string;\r\n /**\r\n * audio format string for synthesis request, which may differ from priAudioFormatString.\r\n * e.g. for riff format, we will request raw format and add a header in SDK side.\r\n */\r\n private readonly priRequestAudioFormatString: string;\r\n private readonly priHasHeader: boolean;\r\n\r\n /**\r\n * Creates an instance with the given values.\r\n * @constructor\r\n * @param formatTag\r\n * @param {number} channels - Number of channels.\r\n * @param {number} samplesPerSec - Samples per second.\r\n * @param {number} avgBytesPerSec - Average bytes per second.\r\n * @param {number} blockAlign - Block alignment.\r\n * @param {number} bitsPerSample - Bits per sample.\r\n * @param {string} audioFormatString - Audio format string\r\n * @param {string} requestAudioFormatString - Audio format string sent to service.\r\n * @param {boolean} hasHeader - If the format has header or not.\r\n */\r\n public constructor(formatTag: AudioFormatTag,\r\n channels: number,\r\n samplesPerSec: number,\r\n avgBytesPerSec: number,\r\n blockAlign: number,\r\n bitsPerSample: number,\r\n audioFormatString: string,\r\n requestAudioFormatString: string,\r\n hasHeader: boolean) {\r\n super(samplesPerSec, bitsPerSample, channels, formatTag);\r\n this.formatTag = formatTag;\r\n this.avgBytesPerSec = avgBytesPerSec;\r\n this.blockAlign = blockAlign;\r\n this.priAudioFormatString = audioFormatString;\r\n this.priRequestAudioFormatString = requestAudioFormatString;\r\n this.priHasHeader = hasHeader;\r\n }\r\n\r\n public static fromSpeechSynthesisOutputFormat(speechSynthesisOutputFormat?: SpeechSynthesisOutputFormat): AudioOutputFormatImpl {\r\n if (speechSynthesisOutputFormat === undefined) {\r\n return AudioOutputFormatImpl.getDefaultOutputFormat();\r\n }\r\n return AudioOutputFormatImpl.fromSpeechSynthesisOutputFormatString(\r\n AudioOutputFormatImpl.SpeechSynthesisOutputFormatToString[speechSynthesisOutputFormat]);\r\n }\r\n\r\n public static fromSpeechSynthesisOutputFormatString(speechSynthesisOutputFormatString: string): AudioOutputFormatImpl {\r\n switch (speechSynthesisOutputFormatString) {\r\n case \"raw-8khz-8bit-mono-mulaw\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MuLaw,\r\n 1,\r\n 8000,\r\n 8000,\r\n 1,\r\n 8,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"riff-16khz-16kbps-mono-siren\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.Siren,\r\n 1,\r\n 16000,\r\n 2000,\r\n 40,\r\n 0,\r\n speechSynthesisOutputFormatString,\r\n \"audio-16khz-16kbps-mono-siren\",\r\n true);\r\n case \"audio-16khz-16kbps-mono-siren\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.Siren,\r\n 1,\r\n 16000,\r\n 2000,\r\n 40,\r\n 0,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-16khz-32kbitrate-mono-mp3\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MP3,\r\n 1,\r\n 16000,\r\n 32 << 7,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-16khz-128kbitrate-mono-mp3\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MP3,\r\n 1,\r\n 16000,\r\n 128 << 7,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-16khz-64kbitrate-mono-mp3\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MP3,\r\n 1,\r\n 16000,\r\n 64 << 7,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-24khz-48kbitrate-mono-mp3\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MP3,\r\n 1,\r\n 24000,\r\n 48 << 7,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-24khz-96kbitrate-mono-mp3\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MP3,\r\n 1,\r\n 24000,\r\n 96 << 7,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-24khz-160kbitrate-mono-mp3\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MP3,\r\n 1,\r\n 24000,\r\n 160 << 7,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"raw-16khz-16bit-mono-truesilk\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.SILKSkype,\r\n 1,\r\n 16000,\r\n 32000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n\r\n case \"riff-8khz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 8000,\r\n 16000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-8khz-16bit-mono-pcm\",\r\n true);\r\n case \"riff-24khz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 24000,\r\n 48000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-24khz-16bit-mono-pcm\",\r\n true);\r\n case \"riff-8khz-8bit-mono-mulaw\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MuLaw,\r\n 1,\r\n 8000,\r\n 8000,\r\n 1,\r\n 8,\r\n speechSynthesisOutputFormatString,\r\n \"raw-8khz-8bit-mono-mulaw\",\r\n true);\r\n case \"raw-16khz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 16000,\r\n 32000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-16khz-16bit-mono-pcm\",\r\n false);\r\n case \"raw-24khz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 24000,\r\n 48000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-24khz-16bit-mono-pcm\",\r\n false);\r\n case \"raw-8khz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 8000,\r\n 16000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-8khz-16bit-mono-pcm\",\r\n false);\r\n case \"ogg-16khz-16bit-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.OGG_OPUS,\r\n 1,\r\n 16000,\r\n 8192,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"ogg-24khz-16bit-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.OGG_OPUS,\r\n 1,\r\n 24000,\r\n 8192,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"raw-48khz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 48000,\r\n 96000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-48khz-16bit-mono-pcm\",\r\n false);\r\n case \"riff-48khz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 48000,\r\n 96000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-48khz-16bit-mono-pcm\",\r\n true);\r\n case \"audio-48khz-96kbitrate-mono-mp3\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MP3,\r\n 1,\r\n 48000,\r\n 96 << 7,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-48khz-192kbitrate-mono-mp3\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MP3,\r\n 1,\r\n 48000,\r\n 192 << 7,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"ogg-48khz-16bit-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.OGG_OPUS,\r\n 1,\r\n 48000,\r\n 12000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"webm-16khz-16bit-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.WEBM_OPUS,\r\n 1,\r\n 16000,\r\n 4000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"webm-24khz-16bit-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.WEBM_OPUS,\r\n 1,\r\n 24000,\r\n 6000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"webm-24khz-16bit-24kbps-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.WEBM_OPUS,\r\n 1,\r\n 24000,\r\n 3000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-16khz-16bit-32kbps-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.OPUS,\r\n 1,\r\n 16000,\r\n 4000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-24khz-16bit-48kbps-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.OPUS,\r\n 1,\r\n 24000,\r\n 6000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-24khz-16bit-24kbps-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.OPUS,\r\n 1,\r\n 24000,\r\n 3000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-24khz-16bit-mono-flac\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.FLAC,\r\n 1,\r\n 24000,\r\n 24000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-48khz-16bit-mono-flac\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.FLAC,\r\n 1,\r\n 48000,\r\n 30000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"raw-24khz-16bit-mono-truesilk\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.SILKSkype,\r\n 1,\r\n 24000,\r\n 48000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"raw-8khz-8bit-mono-alaw\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.ALaw,\r\n 1,\r\n 8000,\r\n 8000,\r\n 1,\r\n 8,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"riff-8khz-8bit-mono-alaw\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.ALaw,\r\n 1,\r\n 8000,\r\n 8000,\r\n 1,\r\n 8,\r\n speechSynthesisOutputFormatString,\r\n \"raw-8khz-8bit-mono-alaw\",\r\n true);\r\n case \"raw-22050hz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 22050,\r\n 44100,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"riff-22050hz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 22050,\r\n 44100,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-22050hz-16bit-mono-pcm\",\r\n true);\r\n case \"raw-44100hz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 44100,\r\n 88200,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"riff-44100hz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 44100,\r\n 88200,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-44100hz-16bit-mono-pcm\",\r\n true);\r\n case \"amr-wb-16000h\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.AMR_WB,\r\n 1,\r\n 16000,\r\n 3052,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"g722-16khz-64kbps\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.G722,\r\n 1,\r\n 16000,\r\n 8000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"riff-16khz-16bit-mono-pcm\":\r\n default:\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 16000,\r\n 32000,\r\n 2,\r\n 16,\r\n \"riff-16khz-16bit-mono-pcm\",\r\n \"raw-16khz-16bit-mono-pcm\",\r\n true);\r\n }\r\n }\r\n\r\n public static getDefaultOutputFormat(): AudioOutputFormatImpl {\r\n return AudioOutputFormatImpl.fromSpeechSynthesisOutputFormatString(\r\n (typeof window !== \"undefined\") ? \"audio-24khz-48kbitrate-mono-mp3\" : \"riff-16khz-16bit-mono-pcm\");\r\n }\r\n\r\n /**\r\n * The format tag of the audio\r\n * @AudioFormatTag AudioOutputFormatImpl.prototype.formatTag\r\n * @function\r\n * @public\r\n */\r\n public formatTag: AudioFormatTag;\r\n\r\n /**\r\n * Specifies if this audio output format has a header\r\n * @boolean AudioOutputFormatImpl.prototype.hasHeader\r\n * @function\r\n * @public\r\n */\r\n public get hasHeader(): boolean {\r\n return this.priHasHeader;\r\n }\r\n\r\n /**\r\n * Specifies the header of this format\r\n * @ArrayBuffer AudioOutputFormatImpl.prototype.header\r\n * @function\r\n * @public\r\n */\r\n public get header(): ArrayBuffer {\r\n if (this.hasHeader) {\r\n return this.privHeader;\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Updates the header based on the audio length\r\n * @member AudioOutputFormatImpl.updateHeader\r\n * @function\r\n * @public\r\n * @param {number} audioLength - the audio length\r\n */\r\n public updateHeader(audioLength: number): void {\r\n if (this.priHasHeader) {\r\n const view = new DataView(this.privHeader);\r\n view.setUint32(4, audioLength + this.privHeader.byteLength - 8, true);\r\n view.setUint32(40, audioLength, true);\r\n }\r\n }\r\n\r\n /**\r\n * Specifies the audio format string to be sent to the service\r\n * @string AudioOutputFormatImpl.prototype.requestAudioFormatString\r\n * @function\r\n * @public\r\n */\r\n public get requestAudioFormatString(): string {\r\n return this.priRequestAudioFormatString;\r\n }\r\n\r\n /**\r\n * Adds audio header\r\n * @param audio the raw audio without header\r\n * @returns the audio with header if applicable\r\n */\r\n\r\n public addHeader(audio: ArrayBuffer): ArrayBuffer {\r\n if (!this.hasHeader) {\r\n return audio;\r\n }\r\n this.updateHeader(audio.byteLength);\r\n const tmp = new Uint8Array(audio.byteLength + this.header.byteLength);\r\n tmp.set(new Uint8Array(this.header), 0);\r\n tmp.set(new Uint8Array(audio), this.header.byteLength);\r\n return tmp.buffer;\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {\r\n createNoDashGuid,\r\n IAudioDestination,\r\n IStreamChunk,\r\n Stream,\r\n} from \"../../common/Exports.js\";\r\nimport { Contracts } from \"../Contracts.js\";\r\nimport {\r\n AudioStreamFormat,\r\n PushAudioOutputStreamCallback\r\n} from \"../Exports.js\";\r\nimport { AudioOutputFormatImpl } from \"./AudioOutputFormat.js\";\r\n\r\n/**\r\n * Represents audio output stream used for custom audio output configurations.\r\n * @class AudioOutputStream\r\n */\r\nexport abstract class AudioOutputStream {\r\n\r\n /**\r\n * Creates and initializes an instance.\r\n * @constructor\r\n */\r\n protected constructor() {\r\n return;\r\n }\r\n\r\n /**\r\n * Sets the format of the AudioOutputStream\r\n * Note: the format is set by the synthesizer before writing. Do not set it before passing it to AudioConfig\r\n * @member AudioOutputStream.prototype.format\r\n */\r\n public abstract set format(format: AudioStreamFormat);\r\n\r\n /**\r\n * Creates a memory backed PullAudioOutputStream with the specified audio format.\r\n * @member AudioOutputStream.createPullStream\r\n * @function\r\n * @public\r\n * @returns {PullAudioOutputStream} The audio output stream being created.\r\n */\r\n public static createPullStream(): PullAudioOutputStream {\r\n return PullAudioOutputStream.create();\r\n }\r\n\r\n /**\r\n * Explicitly frees any external resource attached to the object\r\n * @member AudioOutputStream.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n}\r\n\r\n/**\r\n * Represents memory backed push audio output stream used for custom audio output configurations.\r\n * @class PullAudioOutputStream\r\n */\r\nexport abstract class PullAudioOutputStream extends AudioOutputStream {\r\n\r\n /**\r\n * Creates a memory backed PullAudioOutputStream with the specified audio format.\r\n * @member PullAudioOutputStream.create\r\n * @function\r\n * @public\r\n * @returns {PullAudioOutputStream} The push audio output stream being created.\r\n */\r\n public static create(): PullAudioOutputStream {\r\n return new PullAudioOutputStreamImpl();\r\n }\r\n\r\n /**\r\n * Reads audio data from the internal buffer.\r\n * @member PullAudioOutputStream.prototype.read\r\n * @function\r\n * @public\r\n * @param {ArrayBuffer} dataBuffer - An ArrayBuffer to store the read data.\r\n * @returns {Promise} Audio buffer length has been read.\r\n */\r\n public abstract read(dataBuffer: ArrayBuffer): Promise;\r\n\r\n /**\r\n * Closes the stream.\r\n * @member PullAudioOutputStream.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n}\r\n\r\n/**\r\n * Represents memory backed push audio output stream used for custom audio output configurations.\r\n * @private\r\n * @class PullAudioOutputStreamImpl\r\n */\r\nexport class PullAudioOutputStreamImpl extends PullAudioOutputStream implements IAudioDestination {\r\n private privFormat: AudioOutputFormatImpl;\r\n private privId: string;\r\n private privStream: Stream;\r\n private privLastChunkView: Int8Array;\r\n\r\n /**\r\n * Creates and initializes an instance with the given values.\r\n * @constructor\r\n */\r\n public constructor() {\r\n super();\r\n this.privId = createNoDashGuid();\r\n this.privStream = new Stream();\r\n }\r\n\r\n /**\r\n * Sets the format information to the stream. For internal use only.\r\n * @param {AudioStreamFormat} format - the format to be set.\r\n */\r\n public set format(format: AudioStreamFormat) {\r\n if (format === undefined || format === null) {\r\n this.privFormat = AudioOutputFormatImpl.getDefaultOutputFormat();\r\n }\r\n this.privFormat = format as AudioOutputFormatImpl;\r\n }\r\n\r\n /**\r\n * Format information for the audio\r\n */\r\n public get format(): AudioStreamFormat {\r\n return this.privFormat;\r\n }\r\n\r\n /**\r\n * Checks if the stream is closed\r\n * @member PullAudioOutputStreamImpl.prototype.isClosed\r\n * @property\r\n * @public\r\n */\r\n public get isClosed(): boolean {\r\n return this.privStream.isClosed;\r\n }\r\n\r\n /**\r\n * Gets the id of the stream\r\n * @member PullAudioOutputStreamImpl.prototype.id\r\n * @property\r\n * @public\r\n */\r\n public id(): string {\r\n return this.privId;\r\n }\r\n\r\n /**\r\n * Reads audio data from the internal buffer.\r\n * @member PullAudioOutputStreamImpl.prototype.read\r\n * @function\r\n * @public\r\n * @param {ArrayBuffer} dataBuffer - An ArrayBuffer to store the read data.\r\n * @returns {Promise} - Audio buffer length has been read.\r\n */\r\n public async read(dataBuffer: ArrayBuffer): Promise {\r\n const intView: Int8Array = new Int8Array(dataBuffer);\r\n let totalBytes: number = 0;\r\n\r\n if (this.privLastChunkView !== undefined) {\r\n if (this.privLastChunkView.length > dataBuffer.byteLength) {\r\n intView.set(this.privLastChunkView.slice(0, dataBuffer.byteLength));\r\n this.privLastChunkView = this.privLastChunkView.slice(dataBuffer.byteLength);\r\n return Promise.resolve(dataBuffer.byteLength);\r\n }\r\n intView.set(this.privLastChunkView);\r\n totalBytes = this.privLastChunkView.length;\r\n this.privLastChunkView = undefined;\r\n }\r\n\r\n // Until we have the minimum number of bytes to send in a transmission, keep asking for more.\r\n while (totalBytes < dataBuffer.byteLength && !this.privStream.isReadEnded) {\r\n const chunk: IStreamChunk = await this.privStream.read();\r\n if (chunk !== undefined && !chunk.isEnd) {\r\n let tmpBuffer: ArrayBuffer;\r\n if (chunk.buffer.byteLength > dataBuffer.byteLength - totalBytes) {\r\n tmpBuffer = chunk.buffer.slice(0, dataBuffer.byteLength - totalBytes);\r\n this.privLastChunkView = new Int8Array(chunk.buffer.slice(dataBuffer.byteLength - totalBytes));\r\n } else {\r\n tmpBuffer = chunk.buffer;\r\n }\r\n intView.set(new Int8Array(tmpBuffer), totalBytes);\r\n totalBytes += tmpBuffer.byteLength;\r\n } else {\r\n this.privStream.readEnded();\r\n }\r\n }\r\n return totalBytes;\r\n }\r\n\r\n /**\r\n * Writes the audio data specified by making an internal copy of the data.\r\n * @member PullAudioOutputStreamImpl.prototype.write\r\n * @function\r\n * @public\r\n * @param {ArrayBuffer} dataBuffer - The audio buffer of which this function will make a copy.\r\n */\r\n public write(dataBuffer: ArrayBuffer): void {\r\n Contracts.throwIfNullOrUndefined(this.privStream, \"must set format before writing\");\r\n this.privStream.writeStreamChunk({\r\n buffer: dataBuffer,\r\n isEnd: false,\r\n timeReceived: Date.now()\r\n });\r\n }\r\n\r\n /**\r\n * Closes the stream.\r\n * @member PullAudioOutputStreamImpl.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(): void {\r\n this.privStream.close();\r\n }\r\n}\r\n\r\n/*\r\n * Represents audio output stream used for custom audio output configurations.\r\n * @class PushAudioOutputStream\r\n */\r\nexport abstract class PushAudioOutputStream extends AudioOutputStream {\r\n /**\r\n * Creates and initializes and instance.\r\n * @constructor\r\n */\r\n protected constructor() {\r\n super();\r\n }\r\n\r\n /**\r\n * Creates a PushAudioOutputStream that delegates to the specified callback interface for\r\n * write() and close() methods.\r\n * @member PushAudioOutputStream.create\r\n * @function\r\n * @public\r\n * @param {PushAudioOutputStreamCallback} callback - The custom audio output object,\r\n * derived from PushAudioOutputStreamCallback\r\n * @returns {PushAudioOutputStream} The push audio output stream being created.\r\n */\r\n public static create(callback: PushAudioOutputStreamCallback): PushAudioOutputStream {\r\n return new PushAudioOutputStreamImpl(callback);\r\n }\r\n\r\n /**\r\n * Explicitly frees any external resource attached to the object\r\n * @member PushAudioOutputStream.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n\r\n}\r\n\r\n/**\r\n * Represents audio output stream used for custom audio output configurations.\r\n * @private\r\n * @class PushAudioOutputStreamImpl\r\n */\r\nexport class PushAudioOutputStreamImpl extends PushAudioOutputStream implements IAudioDestination {\r\n private readonly privId: string;\r\n private privCallback: PushAudioOutputStreamCallback;\r\n\r\n /**\r\n * Creates a PushAudioOutputStream that delegates to the specified callback interface for\r\n * read() and close() methods.\r\n * @constructor\r\n * @param {PushAudioOutputStreamCallback} callback - The custom audio output object,\r\n * derived from PushAudioOutputStreamCallback\r\n */\r\n public constructor(callback: PushAudioOutputStreamCallback) {\r\n super();\r\n this.privId = createNoDashGuid();\r\n this.privCallback = callback;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n public set format(format: AudioStreamFormat) { }\r\n\r\n public write(buffer: ArrayBuffer): void {\r\n if (!!this.privCallback.write) {\r\n this.privCallback.write(buffer);\r\n }\r\n }\r\n\r\n public close(): void {\r\n if (!!this.privCallback.close) {\r\n this.privCallback.close();\r\n }\r\n }\r\n\r\n public id(): string {\r\n return this.privId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nexport enum AudioFormatTag {\r\n PCM = 1,\r\n MuLaw,\r\n Siren,\r\n MP3,\r\n SILKSkype,\r\n OGG_OPUS,\r\n WEBM_OPUS,\r\n ALaw,\r\n FLAC,\r\n OPUS,\r\n AMR_WB,\r\n G722,\r\n}\r\n\r\n/**\r\n * Represents audio stream format used for custom audio input configurations.\r\n * @class AudioStreamFormat\r\n */\r\nexport abstract class AudioStreamFormat {\r\n /**\r\n * Creates an audio stream format object representing the default audio stream\r\n * format (16KHz 16bit mono PCM).\r\n * @member AudioStreamFormat.getDefaultInputFormat\r\n * @function\r\n * @public\r\n * @returns {AudioStreamFormat} The audio stream format being created.\r\n */\r\n public static getDefaultInputFormat(): AudioStreamFormat {\r\n return AudioStreamFormatImpl.getDefaultInputFormat();\r\n }\r\n\r\n /**\r\n * Creates an audio stream format object with the specified format characteristics.\r\n * @member AudioStreamFormat.getWaveFormat\r\n * @function\r\n * @public\r\n * @param {number} samplesPerSecond - Sample rate, in samples per second (Hertz).\r\n * @param {number} bitsPerSample - Bits per sample, typically 16.\r\n * @param {number} channels - Number of channels in the waveform-audio data. Monaural data\r\n * uses one channel and stereo data uses two channels.\r\n * @param {AudioFormatTag} format - Audio format (PCM, alaw or mulaw).\r\n * @returns {AudioStreamFormat} The audio stream format being created.\r\n */\r\n public static getWaveFormat(samplesPerSecond: number, bitsPerSample: number, channels: number, format: AudioFormatTag): AudioStreamFormat {\r\n return new AudioStreamFormatImpl(samplesPerSecond, bitsPerSample, channels, format);\r\n }\r\n\r\n /**\r\n * Creates an audio stream format object with the specified pcm waveformat characteristics.\r\n * @member AudioStreamFormat.getWaveFormatPCM\r\n * @function\r\n * @public\r\n * @param {number} samplesPerSecond - Sample rate, in samples per second (Hertz).\r\n * @param {number} bitsPerSample - Bits per sample, typically 16.\r\n * @param {number} channels - Number of channels in the waveform-audio data. Monaural data\r\n * uses one channel and stereo data uses two channels.\r\n * @returns {AudioStreamFormat} The audio stream format being created.\r\n */\r\n public static getWaveFormatPCM(samplesPerSecond: number, bitsPerSample: number, channels: number): AudioStreamFormat {\r\n return new AudioStreamFormatImpl(samplesPerSecond, bitsPerSample, channels);\r\n }\r\n\r\n /**\r\n * Explicitly frees any external resource attached to the object\r\n * @member AudioStreamFormat.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n}\r\n\r\n/**\r\n * @private\r\n * @class AudioStreamFormatImpl\r\n */\r\nexport class AudioStreamFormatImpl extends AudioStreamFormat {\r\n protected privHeader: ArrayBuffer;\r\n\r\n /**\r\n * Creates an instance with the given values.\r\n * @constructor\r\n * @param {number} samplesPerSec - Samples per second.\r\n * @param {number} bitsPerSample - Bits per sample.\r\n * @param {number} channels - Number of channels.\r\n * @param {AudioFormatTag} format - Audio format (PCM, alaw or mulaw).\r\n */\r\n public constructor(samplesPerSec: number = 16000, bitsPerSample: number = 16, channels: number = 1, format: AudioFormatTag = AudioFormatTag.PCM) {\r\n super();\r\n\r\n let isWavFormat: boolean = true;\r\n /* 1 for PCM; 6 for alaw; 7 for mulaw */\r\n switch (format) {\r\n case AudioFormatTag.PCM:\r\n this.formatTag = 1;\r\n break;\r\n case AudioFormatTag.ALaw:\r\n this.formatTag = 6;\r\n break;\r\n case AudioFormatTag.MuLaw:\r\n this.formatTag = 7;\r\n break;\r\n default:\r\n isWavFormat = false;\r\n }\r\n this.bitsPerSample = bitsPerSample;\r\n this.samplesPerSec = samplesPerSec;\r\n this.channels = channels;\r\n this.avgBytesPerSec = this.samplesPerSec * this.channels * (this.bitsPerSample / 8);\r\n this.blockAlign = this.channels * Math.max(this.bitsPerSample, 8);\r\n\r\n if (isWavFormat) {\r\n this.privHeader = new ArrayBuffer(44);\r\n\r\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView\r\n const view = new DataView(this.privHeader);\r\n\r\n /* RIFF identifier */\r\n this.setString(view, 0, \"RIFF\");\r\n /* file length */\r\n view.setUint32(4, 0, true);\r\n /* RIFF type & Format */\r\n this.setString(view, 8, \"WAVEfmt \");\r\n /* format chunk length */\r\n view.setUint32(16, 16, true);\r\n /* audio format */\r\n view.setUint16(20, this.formatTag, true);\r\n /* channel count */\r\n view.setUint16(22, this.channels, true);\r\n /* sample rate */\r\n view.setUint32(24, this.samplesPerSec, true);\r\n /* byte rate (sample rate * block align) */\r\n view.setUint32(28, this.avgBytesPerSec, true);\r\n /* block align (channel count * bytes per sample) */\r\n view.setUint16(32, this.channels * (this.bitsPerSample / 8), true);\r\n /* bits per sample */\r\n view.setUint16(34, this.bitsPerSample, true);\r\n /* data chunk identifier */\r\n this.setString(view, 36, \"data\");\r\n /* data chunk length */\r\n view.setUint32(40, 0, true);\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves the default input format.\r\n * @member AudioStreamFormatImpl.getDefaultInputFormat\r\n * @function\r\n * @public\r\n * @returns {AudioStreamFormatImpl} The default input format.\r\n */\r\n public static getDefaultInputFormat(): AudioStreamFormatImpl {\r\n return new AudioStreamFormatImpl();\r\n }\r\n\r\n /**\r\n * Creates an audio context appropriate to current browser\r\n * @member AudioStreamFormatImpl.getAudioContext\r\n * @function\r\n * @public\r\n * @returns {AudioContext} An audio context instance\r\n */\r\n /* eslint-disable */\r\n public static getAudioContext(sampleRate?: number): AudioContext {\r\n // Workaround for Speech SDK bug in Safari.\r\n const AudioContext = (window as any).AudioContext // our preferred impl\r\n || (window as any).webkitAudioContext // fallback, mostly when on Safari\r\n || false; // could not find.\r\n\r\n // https://developer.mozilla.org/en-US/docs/Web/API/AudioContext\r\n if (!!AudioContext) {\r\n if (sampleRate !== undefined && navigator.mediaDevices.getSupportedConstraints().sampleRate) {\r\n return new AudioContext({ sampleRate });\r\n } else {\r\n return new AudioContext();\r\n }\r\n } else {\r\n throw new Error(\"Browser does not support Web Audio API (AudioContext is not available).\");\r\n }\r\n }\r\n /* eslint-enable */\r\n\r\n /**\r\n * Closes the configuration object.\r\n * @member AudioStreamFormatImpl.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(): void {\r\n return;\r\n }\r\n\r\n /**\r\n * The format of the audio, valid values: 1 (PCM)\r\n * @member AudioStreamFormatImpl.prototype.formatTag\r\n * @function\r\n * @public\r\n */\r\n public formatTag: number;\r\n\r\n /**\r\n * The number of channels, valid values: 1 (Mono).\r\n * @member AudioStreamFormatImpl.prototype.channels\r\n * @function\r\n * @public\r\n */\r\n public channels: number;\r\n\r\n /**\r\n * The sample rate, valid values: 16000.\r\n * @member AudioStreamFormatImpl.prototype.samplesPerSec\r\n * @function\r\n * @public\r\n */\r\n public samplesPerSec: number;\r\n\r\n /**\r\n * The bits per sample, valid values: 16\r\n * @member AudioStreamFormatImpl.prototype.b\r\n * @function\r\n * @public\r\n */\r\n public bitsPerSample: number;\r\n\r\n /**\r\n * Average bytes per second, usually calculated as nSamplesPerSec * nChannels * ceil(wBitsPerSample, 8).\r\n * @member AudioStreamFormatImpl.prototype.avgBytesPerSec\r\n * @function\r\n * @public\r\n */\r\n public avgBytesPerSec: number;\r\n\r\n /**\r\n * The size of a single frame, valid values: nChannels * ceil(wBitsPerSample, 8).\r\n * @member AudioStreamFormatImpl.prototype.blockAlign\r\n * @function\r\n * @public\r\n */\r\n public blockAlign: number;\r\n\r\n public get header(): ArrayBuffer {\r\n return this.privHeader;\r\n }\r\n\r\n protected setString(view: DataView, offset: number, str: string): void {\r\n for (let i = 0; i < str.length; i++) {\r\n view.setUint8(offset + i, str.charCodeAt(i));\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { InvalidOperationError } from \"../../common/Error.js\";\r\nimport { AudioStreamFormat } from \"../Exports.js\";\r\nimport { AudioStreamFormatImpl } from \"./AudioStreamFormat.js\";\r\n\r\ntype AudioDataTypedArray = Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array;\r\n/**\r\n * Base audio player class\r\n * TODO: Plays only PCM for now.\r\n * @class\r\n */\r\nexport class BaseAudioPlayer {\r\n\r\n private audioContext: AudioContext = null;\r\n private gainNode: GainNode = null;\r\n private audioFormat: AudioStreamFormatImpl;\r\n private autoUpdateBufferTimer: any = 0;\r\n private samples: Float32Array;\r\n private startTime: number;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {AudioStreamFormat} audioFormat audio stream format recognized by the player.\r\n */\r\n public constructor(audioFormat?: AudioStreamFormat) {\r\n if (audioFormat === undefined) {\r\n audioFormat = AudioStreamFormat.getDefaultInputFormat();\r\n }\r\n this.init(audioFormat);\r\n }\r\n\r\n /**\r\n * play Audio sample\r\n * @param newAudioData audio data to be played.\r\n */\r\n public playAudioSample(newAudioData: ArrayBuffer, cb?: () => void, err?: (error: string) => void): void {\r\n try {\r\n this.ensureInitializedContext();\r\n const audioData = this.formatAudioData(newAudioData);\r\n const newSamplesData = new Float32Array(this.samples.length + audioData.length);\r\n newSamplesData.set(this.samples, 0);\r\n newSamplesData.set(audioData, this.samples.length);\r\n this.samples = newSamplesData;\r\n if (!!cb) {\r\n cb();\r\n }\r\n } catch (e) {\r\n if (!!err) {\r\n err(e as string);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * stops audio and clears the buffers\r\n */\r\n public stopAudio(cb?: () => void, err?: (error: string) => void): void {\r\n if (this.audioContext !== null) {\r\n this.samples = new Float32Array();\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n clearInterval(this.autoUpdateBufferTimer);\r\n this.audioContext.close().then((): void => {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }, (error: string): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n this.audioContext = null;\r\n }\r\n }\r\n\r\n private init(audioFormat: AudioStreamFormat): void {\r\n this.audioFormat = audioFormat as AudioStreamFormatImpl;\r\n this.samples = new Float32Array();\r\n }\r\n\r\n private ensureInitializedContext(): void {\r\n if (this.audioContext === null) {\r\n this.createAudioContext();\r\n const timerPeriod = 200;\r\n this.autoUpdateBufferTimer = setInterval((): void => {\r\n this.updateAudioBuffer();\r\n }, timerPeriod);\r\n }\r\n }\r\n\r\n private createAudioContext(): void {\r\n // new ((window as any).AudioContext || (window as any).webkitAudioContext)();\r\n this.audioContext = AudioStreamFormatImpl.getAudioContext();\r\n\r\n // TODO: Various examples shows this gain node, it does not seem to be needed unless we plan\r\n // to control the volume, not likely\r\n this.gainNode = this.audioContext.createGain();\r\n this.gainNode.gain.value = 1;\r\n this.gainNode.connect(this.audioContext.destination);\r\n this.startTime = this.audioContext.currentTime;\r\n }\r\n\r\n private formatAudioData(audioData: ArrayBuffer): Float32Array {\r\n switch (this.audioFormat.bitsPerSample) {\r\n case 8:\r\n return this.formatArrayBuffer(new Int8Array(audioData), 128);\r\n case 16:\r\n return this.formatArrayBuffer(new Int16Array(audioData), 32768);\r\n case 32:\r\n return this.formatArrayBuffer(new Int32Array(audioData), 2147483648);\r\n default:\r\n throw new InvalidOperationError(\"Only WAVE_FORMAT_PCM (8/16/32 bps) format supported at this time\");\r\n }\r\n }\r\n\r\n private formatArrayBuffer(audioData: AudioDataTypedArray, maxValue: number): Float32Array {\r\n const float32Data = new Float32Array(audioData.length);\r\n for (let i = 0; i < audioData.length; i++) {\r\n float32Data[i] = audioData[i] / maxValue;\r\n }\r\n return float32Data;\r\n }\r\n\r\n private updateAudioBuffer(): void {\r\n if (this.samples.length === 0) {\r\n return;\r\n }\r\n\r\n const channelCount = this.audioFormat.channels;\r\n const bufferSource = this.audioContext.createBufferSource();\r\n const frameCount = this.samples.length / channelCount;\r\n const audioBuffer = this.audioContext.createBuffer(channelCount, frameCount, this.audioFormat.samplesPerSec);\r\n\r\n // TODO: Should we do the conversion in the pushAudioSample instead?\r\n for (let channel = 0; channel < channelCount; channel++) {\r\n // Fill in individual channel data\r\n let channelOffset = channel;\r\n const audioData = audioBuffer.getChannelData(channel);\r\n for (let i = 0; i < this.samples.length; i++, channelOffset += channelCount) {\r\n audioData[i] = this.samples[channelOffset];\r\n }\r\n }\r\n\r\n if (this.startTime < this.audioContext.currentTime) {\r\n this.startTime = this.audioContext.currentTime;\r\n }\r\n\r\n bufferSource.buffer = audioBuffer;\r\n bufferSource.connect(this.gainNode);\r\n bufferSource.start(this.startTime);\r\n\r\n // Make sure we play the next sample after the current one.\r\n this.startTime += audioBuffer.duration;\r\n\r\n // Clear the samples for the next pushed data.\r\n this.samples = new Float32Array();\r\n }\r\n\r\n private async playAudio(audioData: ArrayBuffer): Promise {\r\n if (this.audioContext === null) {\r\n this.createAudioContext();\r\n }\r\n const source: AudioBufferSourceNode = this.audioContext.createBufferSource();\r\n const destination: AudioDestinationNode = this.audioContext.destination;\r\n await this.audioContext.decodeAudioData(audioData, (newBuffer: AudioBuffer): void => {\r\n source.buffer = newBuffer;\r\n source.connect(destination);\r\n source.start(0);\r\n });\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n /**\r\n * An abstract base class that defines callback methods (read() and close()) for\r\n * custom audio input streams).\r\n * @class PullAudioInputStreamCallback\r\n */\r\nexport abstract class PullAudioInputStreamCallback {\r\n\r\n /**\r\n * Reads data from audio input stream into the data buffer. The maximal number of bytes\r\n * to be read is determined by the size of dataBuffer.\r\n * @member PullAudioInputStreamCallback.prototype.read\r\n * @function\r\n * @public\r\n * @param {ArrayBuffer} dataBuffer - The byte array to store the read data.\r\n * @returns {number} the number of bytes have been read.\r\n */\r\n public abstract read(dataBuffer: ArrayBuffer): number;\r\n\r\n /**\r\n * Closes the audio input stream.\r\n * @member PullAudioInputStreamCallback.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n/**\r\n * An abstract base class that defines callback methods (write() and close()) for\r\n * custom audio output streams).\r\n * @class PushAudioOutputStreamCallback\r\n */\r\nexport abstract class PushAudioOutputStreamCallback {\r\n\r\n /**\r\n * Writes audio data into the data buffer.\r\n * @member PushAudioOutputStreamCallback.prototype.write\r\n * @function\r\n * @public\r\n * @param {ArrayBuffer} dataBuffer - The byte array that stores the audio data to write.\r\n */\r\n public abstract write(dataBuffer: ArrayBuffer): void;\r\n\r\n /**\r\n * Closes the audio output stream.\r\n * @member PushAudioOutputStreamCallback.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n BackgroundEvent,\r\n createNoDashGuid,\r\n Events,\r\n IAudioDestination,\r\n INumberDictionary\r\n} from \"../../common/Exports.js\";\r\nimport { AudioStreamFormat, IPlayer } from \"../Exports.js\";\r\nimport { AudioOutputFormatImpl } from \"./AudioOutputFormat.js\";\r\nimport { PullAudioOutputStreamImpl } from \"./AudioOutputStream.js\";\r\nimport { AudioFormatTag } from \"./AudioStreamFormat.js\";\r\n\r\nconst MediaDurationPlaceholderSeconds = 60 * 30;\r\n\r\nconst AudioFormatToMimeType: INumberDictionary = {\r\n [AudioFormatTag.PCM]: \"audio/wav\",\r\n [AudioFormatTag.MuLaw]: \"audio/x-wav\",\r\n [AudioFormatTag.MP3]: \"audio/mpeg\",\r\n [AudioFormatTag.OGG_OPUS]: \"audio/ogg\",\r\n [AudioFormatTag.WEBM_OPUS]: \"audio/webm; codecs=opus\",\r\n [AudioFormatTag.ALaw]: \"audio/x-wav\",\r\n [AudioFormatTag.FLAC]: \"audio/flac\",\r\n [AudioFormatTag.AMR_WB]: \"audio/amr-wb\",\r\n [AudioFormatTag.G722]: \"audio/G722\",\r\n};\r\n\r\n/**\r\n * Represents the speaker playback audio destination, which only works in browser.\r\n * Note: the SDK will try to use Media Source Extensions to play audio.\r\n * Mp3 format has better supports on Microsoft Edge, Chrome and Safari (desktop), so, it's better to specify mp3 format for playback.\r\n * @class SpeakerAudioDestination\r\n * Updated in version 1.17.0\r\n */\r\nexport class SpeakerAudioDestination implements IAudioDestination, IPlayer {\r\n private readonly privId: string;\r\n private privFormat: AudioOutputFormatImpl;\r\n private privAudio: HTMLAudioElement;\r\n private privMediaSource: MediaSource;\r\n private privSourceBuffer: SourceBuffer;\r\n private privPlaybackStarted: boolean = false;\r\n private privAudioBuffer: ArrayBuffer[];\r\n private privAppendingToBuffer: boolean = false;\r\n private privMediaSourceOpened: boolean = false;\r\n private privIsClosed: boolean;\r\n private privIsPaused: boolean;\r\n private privAudioOutputStream: PullAudioOutputStreamImpl;\r\n private privBytesReceived: number = 0;\r\n\r\n public constructor(audioDestinationId?: string) {\r\n this.privId = audioDestinationId ? audioDestinationId : createNoDashGuid();\r\n this.privIsPaused = false;\r\n this.privIsClosed = false;\r\n }\r\n\r\n public id(): string {\r\n return this.privId;\r\n }\r\n\r\n public write(buffer: ArrayBuffer, cb?: () => void, err?: (error: string) => void): void {\r\n if (this.privAudioBuffer !== undefined) {\r\n this.privAudioBuffer.push(buffer);\r\n this.updateSourceBuffer().then((): void => {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }, (error: string): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n } else if (this.privAudioOutputStream !== undefined) {\r\n this.privAudioOutputStream.write(buffer);\r\n this.privBytesReceived += buffer.byteLength;\r\n }\r\n }\r\n\r\n public close(cb?: () => void, err?: (error: string) => void): void {\r\n this.privIsClosed = true;\r\n if (this.privSourceBuffer !== undefined) {\r\n this.handleSourceBufferUpdateEnd().then((): void => {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }, (error: string): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n } else if (this.privAudioOutputStream !== undefined && typeof window !== \"undefined\") {\r\n if ((this.privFormat.formatTag === AudioFormatTag.PCM || this.privFormat.formatTag === AudioFormatTag.MuLaw\r\n || this.privFormat.formatTag === AudioFormatTag.ALaw) && this.privFormat.hasHeader === false) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\"Play back is not supported for raw PCM, mulaw or alaw format without header.\");\r\n if (!!this.onAudioEnd) {\r\n this.onAudioEnd(this);\r\n }\r\n } else {\r\n let receivedAudio = new ArrayBuffer(this.privBytesReceived);\r\n this.privAudioOutputStream.read(receivedAudio).then((): void => {\r\n receivedAudio = this.privFormat.addHeader(receivedAudio);\r\n const audioBlob = new Blob([receivedAudio], { type: AudioFormatToMimeType[this.privFormat.formatTag] });\r\n this.privAudio.src = window.URL.createObjectURL(audioBlob);\r\n this.notifyPlayback().then((): void => {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }, (error: string): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n }, (error: string): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n }\r\n } else {\r\n // unsupported format, call onAudioEnd directly.\r\n if (!!this.onAudioEnd) {\r\n this.onAudioEnd(this);\r\n }\r\n }\r\n }\r\n\r\n public set format(format: AudioStreamFormat) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\r\n if (typeof (AudioContext) !== \"undefined\" || (typeof (window) !== \"undefined\" && typeof ((window as any).webkitAudioContext) !== \"undefined\")) {\r\n this.privFormat = format as AudioOutputFormatImpl;\r\n const mimeType: string = AudioFormatToMimeType[this.privFormat.formatTag];\r\n if (mimeType === undefined) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\r\n `Unknown mimeType for format ${AudioFormatTag[this.privFormat.formatTag]}; playback is not supported.`);\r\n\r\n } else if (typeof (MediaSource) !== \"undefined\" && MediaSource.isTypeSupported(mimeType)) {\r\n this.privAudio = new Audio();\r\n this.privAudioBuffer = [];\r\n this.privMediaSource = new MediaSource();\r\n this.privAudio.src = URL.createObjectURL(this.privMediaSource);\r\n this.privAudio.load();\r\n this.privMediaSource.onsourceopen = (): void => {\r\n this.privMediaSourceOpened = true;\r\n this.privMediaSource.duration = MediaDurationPlaceholderSeconds;\r\n this.privSourceBuffer = this.privMediaSource.addSourceBuffer(mimeType);\r\n this.privSourceBuffer.onupdate = (): void => {\r\n this.updateSourceBuffer().catch((reason: string): void => {\r\n Events.instance.onEvent(new BackgroundEvent(reason));\r\n });\r\n };\r\n this.privSourceBuffer.onupdateend = (): void => {\r\n this.handleSourceBufferUpdateEnd().catch((reason: string): void => {\r\n Events.instance.onEvent(new BackgroundEvent(reason));\r\n });\r\n };\r\n this.privSourceBuffer.onupdatestart = (): void => {\r\n this.privAppendingToBuffer = false;\r\n };\r\n };\r\n this.updateSourceBuffer().catch((reason: string): void => {\r\n Events.instance.onEvent(new BackgroundEvent(reason));\r\n });\r\n\r\n } else {\r\n // eslint-disable-next-line no-console\r\n console.warn(\r\n `Format ${AudioFormatTag[this.privFormat.formatTag]} could not be played by MSE, streaming playback is not enabled.`);\r\n this.privAudioOutputStream = new PullAudioOutputStreamImpl();\r\n this.privAudioOutputStream.format = this.privFormat;\r\n this.privAudio = new Audio();\r\n }\r\n }\r\n }\r\n\r\n public get volume(): number {\r\n return this.privAudio?.volume ?? -1;\r\n }\r\n\r\n public set volume(volume: number) {\r\n if (!!this.privAudio) {\r\n this.privAudio.volume = volume;\r\n }\r\n }\r\n\r\n public mute(): void {\r\n if (!!this.privAudio) {\r\n this.privAudio.muted = true;\r\n }\r\n }\r\n\r\n public unmute(): void {\r\n if (!!this.privAudio) {\r\n this.privAudio.muted = false;\r\n }\r\n }\r\n\r\n public get isClosed(): boolean {\r\n return this.privIsClosed;\r\n }\r\n\r\n public get currentTime(): number {\r\n if (this.privAudio !== undefined) {\r\n return this.privAudio.currentTime;\r\n }\r\n return -1;\r\n }\r\n\r\n public pause(): void {\r\n if (!this.privIsPaused && this.privAudio !== undefined) {\r\n this.privAudio.pause();\r\n this.privIsPaused = true;\r\n }\r\n }\r\n\r\n public resume(cb?: () => void, err?: (error: string) => void): void {\r\n if (this.privIsPaused && this.privAudio !== undefined) {\r\n this.privAudio.play().then((): void => {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }, (error: string): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n this.privIsPaused = false;\r\n }\r\n }\r\n\r\n public onAudioStart: (sender: IPlayer) => void;\r\n\r\n public onAudioEnd: (sender: IPlayer) => void;\r\n\r\n public get internalAudio(): HTMLAudioElement {\r\n return this.privAudio;\r\n }\r\n\r\n private async updateSourceBuffer(): Promise {\r\n if (this.privAudioBuffer !== undefined && (this.privAudioBuffer.length > 0) && this.sourceBufferAvailable()) {\r\n this.privAppendingToBuffer = true;\r\n const binary = this.privAudioBuffer.shift();\r\n try {\r\n this.privSourceBuffer.appendBuffer(binary);\r\n } catch (error) {\r\n this.privAudioBuffer.unshift(binary);\r\n // eslint-disable-next-line no-console\r\n console.log(\r\n \"buffer filled, pausing addition of binaries until space is made\");\r\n return;\r\n }\r\n await this.notifyPlayback();\r\n } else if (this.canEndStream()) {\r\n await this.handleSourceBufferUpdateEnd();\r\n }\r\n }\r\n\r\n private async handleSourceBufferUpdateEnd(): Promise {\r\n if (this.canEndStream() && this.sourceBufferAvailable()) {\r\n this.privMediaSource.endOfStream();\r\n await this.notifyPlayback();\r\n }\r\n }\r\n\r\n private async notifyPlayback(): Promise {\r\n if (!this.privPlaybackStarted && this.privAudio !== undefined) {\r\n this.privPlaybackStarted = true;\r\n if (!!this.onAudioStart) {\r\n this.onAudioStart(this);\r\n }\r\n this.privAudio.onended = (): void => {\r\n if (!!this.onAudioEnd) {\r\n this.onAudioEnd(this);\r\n }\r\n };\r\n if (!this.privIsPaused) {\r\n await this.privAudio.play();\r\n }\r\n }\r\n }\r\n\r\n private canEndStream(): boolean {\r\n return (this.isClosed && this.privSourceBuffer !== undefined && (this.privAudioBuffer.length === 0)\r\n && this.privMediaSourceOpened && !this.privAppendingToBuffer && this.privMediaSource.readyState === \"open\");\r\n }\r\n\r\n private sourceBufferAvailable(): boolean {\r\n return (this.privSourceBuffer !== undefined && !this.privSourceBuffer.updating);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { AutoDetectSourceLanguagesOpenRangeOptionName } from \"../common.speech/Exports.js\";\r\nimport {Contracts} from \"./Contracts.js\";\r\nimport {\r\n PropertyCollection,\r\n PropertyId,\r\n SourceLanguageConfig,\r\n} from \"./Exports.js\";\r\nimport { LanguageIdMode } from \"./LanguageIdMode.js\";\r\n\r\n/**\r\n * Language auto detect configuration.\r\n * @class AutoDetectSourceLanguageConfig\r\n * Added in version 1.13.0.\r\n */\r\nexport class AutoDetectSourceLanguageConfig {\r\n private privProperties: PropertyCollection;\r\n private privLanguageIdMode: LanguageIdMode;\r\n\r\n private constructor() {\r\n this.privProperties = new PropertyCollection();\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_LanguageIdMode, \"AtStart\");\r\n this.privLanguageIdMode = LanguageIdMode.AtStart;\r\n }\r\n\r\n /**\r\n * @member AutoDetectSourceLanguageConfig.fromOpenRange\r\n * @function\r\n * @public\r\n * Only [[SpeechSynthesizer]] supports source language auto detection from open range,\r\n * for [[Recognizer]], please use AutoDetectSourceLanguageConfig with specific source languages.\r\n * @return {AutoDetectSourceLanguageConfig} Instance of AutoDetectSourceLanguageConfig\r\n * @summary Creates an instance of the AutoDetectSourceLanguageConfig with open range.\r\n */\r\n public static fromOpenRange(): AutoDetectSourceLanguageConfig {\r\n const config = new AutoDetectSourceLanguageConfig();\r\n config.properties.setProperty(PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages, AutoDetectSourceLanguagesOpenRangeOptionName);\r\n return config;\r\n }\r\n\r\n /**\r\n * @member AutoDetectSourceLanguageConfig.fromLanguages\r\n * @function\r\n * @public\r\n * @param {string[]} languages Comma-separated string of languages (eg. \"en-US,fr-FR\") to populate properties of config.\r\n * @return {AutoDetectSourceLanguageConfig} Instance of AutoDetectSourceLanguageConfig\r\n * @summary Creates an instance of the AutoDetectSourceLanguageConfig with given languages.\r\n */\r\n public static fromLanguages(languages: string[]): AutoDetectSourceLanguageConfig {\r\n Contracts.throwIfArrayEmptyOrWhitespace(languages, \"languages\");\r\n const config = new AutoDetectSourceLanguageConfig();\r\n config.properties.setProperty(PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages, languages.join());\r\n return config;\r\n }\r\n\r\n /**\r\n * @member AutoDetectSourceLanguageConfig.fromSourceLanguageConfigs\r\n * @function\r\n * @public\r\n * @param {SourceLanguageConfig[]} configs SourceLanguageConfigs to populate properties of config.\r\n * @return {AutoDetectSourceLanguageConfig} Instance of AutoDetectSourceLanguageConfig\r\n * @summary Creates an instance of the AutoDetectSourceLanguageConfig with given SourceLanguageConfigs.\r\n */\r\n public static fromSourceLanguageConfigs(configs: SourceLanguageConfig[]): AutoDetectSourceLanguageConfig {\r\n if (configs.length < 1) {\r\n throw new Error(\"Expected non-empty SourceLanguageConfig array.\");\r\n }\r\n const autoConfig = new AutoDetectSourceLanguageConfig();\r\n const langs: string[] = [];\r\n configs.forEach((config: SourceLanguageConfig): void => {\r\n langs.push(config.language);\r\n if (config.endpointId !== undefined && config.endpointId !== \"\") {\r\n const customProperty = config.language + PropertyId.SpeechServiceConnection_EndpointId.toString();\r\n autoConfig.properties.setProperty(customProperty, config.endpointId);\r\n }\r\n });\r\n autoConfig.properties.setProperty(PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages, langs.join());\r\n\r\n return autoConfig;\r\n }\r\n\r\n /**\r\n * @member AutoDetectSourceLanguageConfig.prototype.properties\r\n * @function\r\n * @public\r\n * @return {PropertyCollection} Properties of the config.\r\n * @summary Gets an auto detected language config properties\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * @member AutoDetectSourceLanguageConfig.prototype.mode\r\n * @function\r\n * @public\r\n * @param {LanguageIdMode} mode LID mode desired.\r\n * @summary Sets LID operation to desired mode\r\n */\r\n public set mode(mode: LanguageIdMode) {\r\n if (mode === LanguageIdMode.Continuous) {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_RecognitionEndpointVersion, \"2\");\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_LanguageIdMode, \"Continuous\");\r\n } else { // LanguageIdMode.AtStart\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_RecognitionEndpointVersion, \"1\");\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_LanguageIdMode, \"AtStart\");\r\n }\r\n this.privLanguageIdMode = mode;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport {\r\n SpeechRecognitionResult,\r\n ConversationTranscriptionResult\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Output format\r\n * @class AutoDetectSourceLanguageResult\r\n */\r\nexport class AutoDetectSourceLanguageResult {\r\n\r\n private privLanguage: string;\r\n private privLanguageDetectionConfidence: string;\r\n\r\n private constructor(language: string, languageDetectionConfidence: string) {\r\n Contracts.throwIfNullOrUndefined(language, \"language\");\r\n Contracts.throwIfNullOrUndefined(languageDetectionConfidence, \"languageDetectionConfidence\");\r\n this.privLanguage = language;\r\n this.privLanguageDetectionConfidence = languageDetectionConfidence;\r\n }\r\n\r\n /**\r\n * Creates an instance of AutoDetectSourceLanguageResult object from a SpeechRecognitionResult instance.\r\n * @member AutoDetectSourceLanguageResult.fromResult\r\n * @function\r\n * @public\r\n * @param {SpeechRecognitionResult} result - The recognition result.\r\n * @returns {AutoDetectSourceLanguageResult} AutoDetectSourceLanguageResult object being created.\r\n */\r\n public static fromResult(result: SpeechRecognitionResult): AutoDetectSourceLanguageResult {\r\n return new AutoDetectSourceLanguageResult(result.language, result.languageDetectionConfidence);\r\n }\r\n\r\n /**\r\n * Creates an instance of AutoDetectSourceLanguageResult object from a ConversationTranscriptionResult instance.\r\n * @member AutoDetectSourceLanguageResult.fromConversationTranscriptionResult\r\n * @function\r\n * @public\r\n * @param {ConversationTranscriptionResult} result - The transcription result.\r\n * @returns {AutoDetectSourceLanguageResult} AutoDetectSourceLanguageResult object being created.\r\n */\r\n public static fromConversationTranscriptionResult(result: ConversationTranscriptionResult): AutoDetectSourceLanguageResult {\r\n return new AutoDetectSourceLanguageResult(result.language, result.languageDetectionConfidence);\r\n }\r\n\r\n public get language(): string {\r\n return this.privLanguage;\r\n }\r\n\r\n public get languageDetectionConfidence(): string {\r\n return this.privLanguageDetectionConfidence;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport { AvatarVideoFormat } from \"./Exports.js\";\r\n\r\n/**\r\n * Defines the talking avatar configuration.\r\n * @class AvatarConfig\r\n * Added in version 1.33.0\r\n *\r\n * @experimental This feature is experimental and might change or have limited support.\r\n */\r\nexport class AvatarConfig {\r\n private privCustomized: boolean = false;\r\n private privBackgroundColor: string;\r\n private privBackgroundImage: URL;\r\n private privRemoteIceServers: RTCIceServer[];\r\n\r\n /**\r\n * Defines the avatar character.\r\n */\r\n public character: string;\r\n /**\r\n * Defines the avatar style.\r\n */\r\n public style: string;\r\n /**\r\n * Defines the talking avatar output video format.\r\n */\r\n public videoFormat: AvatarVideoFormat;\r\n\r\n /**\r\n * Indicates if the talking avatar is customized.\r\n */\r\n public get customized(): boolean {\r\n return this.privCustomized;\r\n }\r\n\r\n /**\r\n * Sets if the talking avatar is customized.\r\n */\r\n public set customized(value: boolean) {\r\n this.privCustomized = value;\r\n }\r\n\r\n /**\r\n * Gets the background color.\r\n */\r\n public get backgroundColor(): string {\r\n return this.privBackgroundColor;\r\n }\r\n\r\n /**\r\n * Sets the background color.\r\n */\r\n public set backgroundColor(value: string) {\r\n this.privBackgroundColor = value;\r\n }\r\n\r\n /**\r\n * Gets the background image.\r\n */\r\n public get backgroundImage(): URL {\r\n return this.privBackgroundImage;\r\n }\r\n\r\n /**\r\n * Sets the background image.\r\n * @param {URL} value - The background image.\r\n */\r\n public set backgroundImage(value: URL) {\r\n this.privBackgroundImage = value;\r\n }\r\n\r\n /**\r\n * Gets the remote ICE servers.\r\n * @remarks This method is designed to be used internally in the SDK.\r\n * @returns {RTCIceServer[]} The remote ICE servers.\r\n */\r\n public get remoteIceServers(): RTCIceServer[] {\r\n return this.privRemoteIceServers;\r\n }\r\n\r\n /**\r\n * Sets the remote ICE servers.\r\n * @remarks Normally, the ICE servers are gathered from the PeerConnection,\r\n * set this property to override the ICE servers. E.g., the ICE servers are\r\n * different in client and server side.\r\n * @param {RTCIceServer[]} value - The remote ICE servers.\r\n */\r\n public set remoteIceServers(value: RTCIceServer[]) {\r\n this.privRemoteIceServers = value;\r\n }\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} character - The avatar character.\r\n * @param {string} style - The avatar style.\r\n * @param {AvatarVideoFormat} videoFormat - The talking avatar output video format.\r\n */\r\n public constructor(character: string, style: string, videoFormat: AvatarVideoFormat) {\r\n Contracts.throwIfNullOrWhitespace(character, \"character\");\r\n this.character = character;\r\n this.style = style;\r\n if (videoFormat === undefined) {\r\n videoFormat = new AvatarVideoFormat();\r\n }\r\n this.videoFormat = videoFormat;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport enum AvatarEventTypes {\r\n SwitchedToSpeaking = \"SwitchedToSpeaking\",\r\n SwitchedToIdle = \"SwitchedToIdle\",\r\n SessionClosed = \"SessionClosed\",\r\n}\r\n\r\n/**\r\n * Defines content for talking avatar events.\r\n * @class AvatarEventArgs\r\n * Added in version 1.33.0\r\n *\r\n * @experimental This feature is experimental and might change or have limited support.\r\n */\r\nexport class AvatarEventArgs {\r\n private privType: AvatarEventTypes;\r\n private privOffset: number;\r\n private privDescription: string;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {number} audioOffset - The audio offset.\r\n * @param {string} description - The description of the event.\r\n */\r\n public constructor(audioOffset: number, description: string) {\r\n this.privOffset = audioOffset;\r\n this.privDescription = description;\r\n }\r\n\r\n /**\r\n * The type of the event.\r\n * @public\r\n * @returns {AvatarEventTypes} The type of the event.\r\n */\r\n public get type(): AvatarEventTypes {\r\n return this.privType;\r\n }\r\n\r\n /**\r\n * The time offset associated with this event.\r\n * @public\r\n * @returns {number} The time offset associated with this event.\r\n */\r\n public get offset(): number {\r\n return this.privOffset;\r\n }\r\n\r\n /**\r\n * The description of the event.\r\n * @public\r\n * @returns {string} The description of the event.\r\n */\r\n public get description(): string {\r\n return this.privDescription;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { SpeechSynthesisConnectionFactory } from \"../common.speech/SpeechSynthesisConnectionFactory.js\";\r\nimport { SynthesisRestAdapter } from \"../common.speech/SynthesisRestAdapter.js\";\r\nimport { SynthesizerConfig } from \"../common.speech/SynthesizerConfig.js\";\r\nimport {\r\n AvatarSynthesisAdapter,\r\n IAuthentication,\r\n ISynthesisConnectionFactory,\r\n SpeechServiceConfig,\r\n SynthesisAdapterBase\r\n} from \"../common.speech/Exports.js\";\r\nimport { createNoDashGuid, Deferred, Events, EventType, PlatformEvent } from \"../common/Exports.js\";\r\nimport { AudioOutputFormatImpl } from \"./Audio/AudioOutputFormat.js\";\r\nimport {\r\n AvatarConfig,\r\n AvatarEventArgs,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n SpeechConfig,\r\n SpeechSynthesisOutputFormat,\r\n SpeechSynthesisResult,\r\n SynthesisResult,\r\n Synthesizer\r\n} from \"./Exports.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport { SynthesisRequest } from \"./Synthesizer.js\";\r\n\r\n/**\r\n * Defines the avatar synthesizer.\r\n * @class AvatarSynthesizer\r\n * Added in version 1.33.0\r\n *\r\n * @experimental This feature is experimental and might change or have limited support.\r\n */\r\nexport class AvatarSynthesizer extends Synthesizer {\r\n protected privProperties: PropertyCollection;\r\n private privAvatarConfig: AvatarConfig;\r\n private privIceServers: RTCIceServer[];\r\n /**\r\n * Defines event handler for avatar events.\r\n * @member AvatarSynthesizer.prototype.avatarEventReceived\r\n * @function\r\n * @public\r\n */\r\n public avatarEventReceived: (sender: AvatarSynthesizer, event: AvatarEventArgs) => void;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - The speech config.\r\n * @param {AvatarConfig} avatarConfig - The talking avatar config.\r\n */\r\n public constructor(speechConfig: SpeechConfig, avatarConfig: AvatarConfig) {\r\n super(speechConfig);\r\n\r\n Contracts.throwIfNullOrUndefined(avatarConfig, \"avatarConfig\");\r\n\r\n this.privConnectionFactory = new SpeechSynthesisConnectionFactory();\r\n this.privAvatarConfig = avatarConfig;\r\n this.implCommonSynthesizeSetup();\r\n }\r\n\r\n protected implCommonSynthesizeSetup(): void {\r\n super.implCommonSynthesizeSetup();\r\n\r\n // The service checks the audio format setting while it ignores it in avatar synthesis.\r\n this.privAdapter.audioOutputFormat = AudioOutputFormatImpl.fromSpeechSynthesisOutputFormat(\r\n SpeechSynthesisOutputFormat.Riff24Khz16BitMonoPcm\r\n );\r\n }\r\n\r\n /**\r\n * Starts the talking avatar session and establishes the WebRTC connection.\r\n * @member AvatarSynthesizer.prototype.startAvatarAsync\r\n * @function\r\n * @public\r\n * @param {AvatarWebRTCConnectionInfo} peerConnection - The peer connection.\r\n * @returns {Promise} The promise of the connection result.\r\n */\r\n public async startAvatarAsync(peerConnection: RTCPeerConnection): Promise {\r\n Contracts.throwIfNullOrUndefined(peerConnection, \"peerConnection\");\r\n this.privIceServers = peerConnection.getConfiguration().iceServers;\r\n Contracts.throwIfNullOrUndefined(this.privIceServers, \"Ice servers must be set.\");\r\n const iceGatheringDone = new Deferred();\r\n // https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/icegatheringstatechange_event\r\n peerConnection.onicegatheringstatechange = (): void => {\r\n Events.instance.onEvent(new PlatformEvent(\"peer connection: ice gathering state: \" + peerConnection.iceGatheringState, EventType.Debug));\r\n if (peerConnection.iceGatheringState === \"complete\") {\r\n Events.instance.onEvent(new PlatformEvent(\"peer connection: ice gathering complete.\", EventType.Info));\r\n iceGatheringDone.resolve();\r\n }\r\n };\r\n peerConnection.onicecandidate = (event: RTCPeerConnectionIceEvent): void => {\r\n if (event.candidate) {\r\n Events.instance.onEvent(new PlatformEvent(\"peer connection: ice candidate: \" + event.candidate.candidate, EventType.Debug));\r\n } else {\r\n Events.instance.onEvent(new PlatformEvent(\"peer connection: ice candidate: complete\", EventType.Debug));\r\n iceGatheringDone.resolve();\r\n }\r\n };\r\n // Set a timeout for ice gathering, currently 2 seconds.\r\n setTimeout((): void => {\r\n if (peerConnection.iceGatheringState !== \"complete\") {\r\n Events.instance.onEvent(new PlatformEvent(\"peer connection: ice gathering timeout.\", EventType.Warning));\r\n iceGatheringDone.resolve();\r\n }\r\n }, 2000);\r\n const sdp: RTCSessionDescriptionInit = await peerConnection.createOffer();\r\n await peerConnection.setLocalDescription(sdp);\r\n await iceGatheringDone.promise;\r\n Events.instance.onEvent(new PlatformEvent(\"peer connection: got local SDP.\", EventType.Info));\r\n this.privProperties.setProperty(PropertyId.TalkingAvatarService_WebRTC_SDP, JSON.stringify(peerConnection.localDescription));\r\n\r\n const result: SpeechSynthesisResult = await this.speak(\"\", false);\r\n if (result.reason !== ResultReason.SynthesizingAudioCompleted) {\r\n return new SynthesisResult(\r\n result.resultId,\r\n result.reason,\r\n result.errorDetails,\r\n result.properties,\r\n );\r\n }\r\n const sdpAnswerString: string = atob(result.properties.getProperty(PropertyId.TalkingAvatarService_WebRTC_SDP));\r\n const sdpAnswer: RTCSessionDescription = new RTCSessionDescription(\r\n JSON.parse(sdpAnswerString) as RTCSessionDescriptionInit,\r\n );\r\n await peerConnection.setRemoteDescription(sdpAnswer);\r\n return new SynthesisResult(\r\n result.resultId,\r\n result.reason,\r\n undefined,\r\n result.properties,\r\n );\r\n }\r\n\r\n /**\r\n * Speaks plain text asynchronously. The rendered audio and video will be sent via the WebRTC connection.\r\n * @member AvatarSynthesizer.prototype.speakTextAsync\r\n * @function\r\n * @public\r\n * @param {string} text - The plain text to speak.\r\n * @returns {Promise} The promise of the synthesis result.\r\n */\r\n public async speakTextAsync(text: string): Promise {\r\n const r = await this.speak(text, false);\r\n return new SynthesisResult(\r\n r.resultId,\r\n r.reason,\r\n r.errorDetails,\r\n r.properties,\r\n );\r\n }\r\n\r\n /**\r\n * Speaks SSML asynchronously. The rendered audio and video will be sent via the WebRTC connection.\r\n * @member AvatarSynthesizer.prototype.speakSsmlAsync\r\n * @function\r\n * @public\r\n * @param {string} ssml - The SSML text to speak.\r\n * @returns {Promise} The promise of the synthesis result.\r\n */\r\n public async speakSsmlAsync(ssml: string): Promise {\r\n const r = await this.speak(ssml, true);\r\n return new SynthesisResult(\r\n r.resultId,\r\n r.reason,\r\n r.errorDetails,\r\n r.properties,\r\n );\r\n }\r\n\r\n /**\r\n * Speaks text asynchronously. The avatar will switch to idle state.\r\n * @member AvatarSynthesizer.prototype.stopSpeakingAsync\r\n * @function\r\n * @public\r\n * @returns {Promise} The promise of the void result.\r\n */\r\n public async stopSpeakingAsync(): Promise {\r\n while (this.synthesisRequestQueue.length() > 0) {\r\n const request = await this.synthesisRequestQueue.dequeue();\r\n request.err(\"Synthesis is canceled by user.\");\r\n }\r\n return this.privAdapter.stopSpeaking();\r\n }\r\n\r\n /**\r\n * Stops the talking avatar session and closes the WebRTC connection.\r\n * For now, this is the same as close().\r\n * You need to create a new AvatarSynthesizer instance to start a new session.\r\n * @member AvatarSynthesizer.prototype.stopAvatarAsync\r\n * @function\r\n * @public\r\n * @returns {Promise} The promise of the void result.\r\n */\r\n public async stopAvatarAsync(): Promise {\r\n Contracts.throwIfDisposed(this.privDisposed);\r\n return this.dispose(true);\r\n }\r\n\r\n /**\r\n * Dispose of associated resources.\r\n * @member AvatarSynthesizer.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public async close(): Promise {\r\n if (this.privDisposed) {\r\n return;\r\n }\r\n\r\n return this.dispose(true);\r\n }\r\n\r\n /**\r\n * Gets the ICE servers. Internal use only.\r\n */\r\n public get iceServers(): RTCIceServer[] {\r\n return this.privIceServers;\r\n }\r\n\r\n // Creates the synthesis adapter\r\n protected createSynthesisAdapter(\r\n authentication: IAuthentication,\r\n connectionFactory: ISynthesisConnectionFactory,\r\n synthesizerConfig: SynthesizerConfig): SynthesisAdapterBase {\r\n return new AvatarSynthesisAdapter(\r\n authentication,\r\n connectionFactory,\r\n synthesizerConfig,\r\n this,\r\n this.privAvatarConfig);\r\n }\r\n\r\n protected createRestSynthesisAdapter(\r\n _authentication: IAuthentication,\r\n _synthesizerConfig: SynthesizerConfig): SynthesisRestAdapter {\r\n return undefined;\r\n }\r\n\r\n protected createSynthesizerConfig(speechConfig: SpeechServiceConfig): SynthesizerConfig {\r\n const config = super.createSynthesizerConfig(speechConfig);\r\n config.avatarEnabled = true;\r\n return config;\r\n }\r\n\r\n protected async speak(text: string, isSSML: boolean): Promise {\r\n const requestId = createNoDashGuid();\r\n const deferredResult = new Deferred();\r\n this.synthesisRequestQueue.enqueue(new SynthesisRequest(requestId, text, isSSML,\r\n (e: SpeechSynthesisResult): void => {\r\n deferredResult.resolve(e);\r\n this.privSynthesizing = false;\r\n void this.adapterSpeak();\r\n },\r\n (e: string): void => {\r\n deferredResult.reject(e);\r\n this.privSynthesizing = false;\r\n }));\r\n void this.adapterSpeak();\r\n return deferredResult.promise;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\n/**\r\n * Defines a coordinate in 2D space.\r\n * @class Coordinate\r\n * Added in version 1.33.0\r\n */\r\nexport class Coordinate {\r\n public x: number;\r\n public y: number;\r\n\r\n public constructor(x: number, y: number) {\r\n this.x = x;\r\n this.y = y;\r\n }\r\n}\r\n\r\n/**\r\n * Defines the avatar output video format.\r\n * @class AvatarVideoFormat\r\n * Added in version 1.33.0\r\n *\r\n * @experimental This feature is experimental and might change in the future.\r\n */\r\nexport class AvatarVideoFormat {\r\n /**\r\n * Defines the video codec.\r\n * @default \"H264\"\r\n */\r\n public codec: string;\r\n /**\r\n * Defines the video bitrate.\r\n * @default 2000000\r\n */\r\n public bitrate: number;\r\n /**\r\n * Defines the video width.\r\n * @default 1920\r\n */\r\n public width: number;\r\n /**\r\n * Defines the video height.\r\n * @default 1080\r\n */\r\n public height: number;\r\n\r\n /**\r\n * Sets the video crop range.\r\n */\r\n public setCropRange(topLeft: Coordinate, bottomRight: Coordinate): void {\r\n this.cropRange = {\r\n bottomRight,\r\n topLeft,\r\n };\r\n }\r\n\r\n /**\r\n * Defines the video crop range.\r\n * @default undefined\r\n * @internal\r\n */\r\n public cropRange: {\r\n topLeft: Coordinate;\r\n bottomRight: Coordinate;\r\n };\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} codec - The video codec.\r\n * @param {number} bitrate - The video bitrate.\r\n * @param {number} width - The video width.\r\n * @param {number} height - The video height.\r\n */\r\n public constructor(codec: string = \"H264\",\r\n bitrate: number = 2000000,\r\n width: number = 1920,\r\n height: number = 1080,\r\n ) {\r\n this.codec = codec;\r\n this.bitrate = bitrate;\r\n this.width = width;\r\n this.height = height;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ResultReason,\r\n PropertyCollection,\r\n SynthesisResult\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Defines the avatar WebRTC connection result.\r\n * @class AvatarWebRTCConnectionResult\r\n * Added in version 1.33.0\r\n *\r\n * @experimental This feature is experimental and might change in the future.\r\n */\r\nexport class AvatarWebRTCConnectionResult extends SynthesisResult {\r\n private readonly privSDPAnswer: RTCSessionDescriptionInit;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {RTCSessionDescriptionInit} SDPAnswer - The SDP answer of WebRTC connection.\r\n * @param {string} resultId - The result id.\r\n * @param {ResultReason} reason - The reason.\r\n * @param {string} errorDetails - Error details, if provided.\r\n * @param {PropertyCollection} properties - Additional properties, if provided.\r\n */\r\n public constructor(SDPAnswer?: RTCSessionDescriptionInit, resultId?: string, reason?: ResultReason, errorDetails?: string, properties?: PropertyCollection) {\r\n super(resultId, reason, errorDetails, properties);\r\n this.privSDPAnswer = SDPAnswer;\r\n }\r\n\r\n /**\r\n * Specifies SDP (Session Description Protocol) answer of WebRTC connection.\r\n * @member AvatarWebRTCConnectionResult.prototype.SDPAnswer\r\n * @function\r\n * @public\r\n * @returns {RTCSessionDescriptionInit} Specifies the SDP answer of WebRTC connection.\r\n */\r\n public get SDPAnswer(): RTCSessionDescriptionInit {\r\n return this.privSDPAnswer;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport { DialogServiceConfig, DialogServiceConfigImpl } from \"./DialogServiceConfig.js\";\r\nimport { PropertyId } from \"./Exports.js\";\r\n\r\n/**\r\n * Class that defines configurations for the dialog service connector object for using a Bot Framework backend.\r\n * @class BotFrameworkConfig\r\n */\r\nexport class BotFrameworkConfig extends DialogServiceConfigImpl {\r\n\r\n /**\r\n * Creates an instance of BotFrameworkConfig.\r\n */\r\n public constructor() {\r\n super();\r\n }\r\n\r\n /**\r\n * Creates a bot framework configuration instance with the provided subscription information.\r\n * @member BotFrameworkConfig.fromSubscription\r\n * @function\r\n * @public\r\n * @param subscription Subscription key associated with the bot\r\n * @param region The region name (see the region page).\r\n * @param botId Optional. Identifier for using a specific bot within an Azure resource group. Equivalent to the\r\n * resource name.\r\n * @returns {BotFrameworkConfig} A new bot framework configuration instance.\r\n */\r\n public static fromSubscription(subscription: string, region: string, botId?: string): BotFrameworkConfig {\r\n Contracts.throwIfNullOrWhitespace(subscription, \"subscription\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const botFrameworkConfig: BotFrameworkConfig = new DialogServiceConfigImpl();\r\n botFrameworkConfig.setProperty(\r\n PropertyId.Conversation_DialogType,\r\n DialogServiceConfig.DialogTypes.BotFramework);\r\n botFrameworkConfig.setProperty(PropertyId.SpeechServiceConnection_Key, subscription);\r\n botFrameworkConfig.setProperty(PropertyId.SpeechServiceConnection_Region, region);\r\n\r\n if (botId) {\r\n botFrameworkConfig.setProperty(PropertyId.Conversation_ApplicationId, botId);\r\n }\r\n\r\n return botFrameworkConfig;\r\n }\r\n\r\n /**\r\n * Creates a bot framework configuration instance for the specified authorization token and region.\r\n * Note: The caller must ensure that an authorization token is valid. Before an authorization token expires, the\r\n * caller must refresh it by setting the authorizationToken property on the corresponding\r\n * DialogServiceConnector instance created with this config. The contents of configuration objects are copied\r\n * when connectors are created, so setting authorizationToken on a DialogServiceConnector will not update the\r\n * original configuration's authorization token. Create a new configuration instance or set the\r\n * SpeechServiceAuthorization_Token property to update an existing instance if it will be used to create\r\n * further DialogServiceConnectors.\r\n * @member BotFrameworkConfig.fromAuthorizationToken\r\n * @function\r\n * @public\r\n * @param authorizationToken The authorization token associated with the bot\r\n * @param region The region name (see the region page).\r\n * @param botId Optional. Identifier for using a specific bot within an Azure resource group. Equivalent to the\r\n * resource name.\r\n * @returns {BotFrameworkConfig} A new bot framework configuration instance.\r\n */\r\n public static fromAuthorizationToken(\r\n authorizationToken: string, region: string, botId?: string\r\n ): BotFrameworkConfig {\r\n Contracts.throwIfNullOrWhitespace(authorizationToken, \"authorizationToken\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const botFrameworkConfig: BotFrameworkConfig = new DialogServiceConfigImpl();\r\n botFrameworkConfig.setProperty(\r\n PropertyId.Conversation_DialogType,\r\n DialogServiceConfig.DialogTypes.BotFramework);\r\n botFrameworkConfig.setProperty(PropertyId.SpeechServiceAuthorization_Token, authorizationToken);\r\n botFrameworkConfig.setProperty(PropertyId.SpeechServiceConnection_Region, region);\r\n\r\n if (botId) {\r\n botFrameworkConfig.setProperty(PropertyId.Conversation_ApplicationId, botId);\r\n }\r\n\r\n return botFrameworkConfig;\r\n }\r\n\r\n /**\r\n * Creates an instance of a BotFrameworkConfig.\r\n * This method is intended only for users who use a non-default service host. The standard resource path will be\r\n * assumed. For services with a non-standard resource path or no path at all, use fromEndpoint instead.\r\n * Note: Query parameters are not allowed in the host URI and must be set by other APIs.\r\n * Note: To use an authorization token with fromHost, use fromHost(URL) and then set the AuthorizationToken\r\n * property on the created BotFrameworkConfig instance.\r\n * Note: Added in version 1.15.0.\r\n * @member BotFrameworkConfig.fromHost\r\n * @function\r\n * @public\r\n * @param {URL | string} host - If a URL is provided, the fully-qualified host with protocol (e.g.\r\n * wss://your.host.com:1234) will be used. If a string is provided, it will be embedded in\r\n * wss://{host}.convai.speech.azure.us.\r\n * @param {string} subscriptionKey - The subscription key. If a subscription key is not specified, an authorization\r\n * token must be set.\r\n * @param botId Optional. Identifier for using a specific bot within an Azure resource group. Equivalent to the\r\n * resource name.\r\n * @returns {BotFrameworkConfig} A new bot framework configuration instance.\r\n */\r\n public static fromHost(\r\n host: URL | string,\r\n subscriptionKey?: string,\r\n botId?: string): BotFrameworkConfig {\r\n\r\n void botId;\r\n Contracts.throwIfNullOrUndefined(host, \"host\");\r\n const resolvedHost: URL = host instanceof URL ? host : new URL(`wss://${host}.convai.speech.azure.us`);\r\n Contracts.throwIfNullOrUndefined(resolvedHost, \"resolvedHost\");\r\n\r\n const botFrameworkConfig: BotFrameworkConfig = new DialogServiceConfigImpl();\r\n botFrameworkConfig.setProperty(\r\n PropertyId.Conversation_DialogType,\r\n DialogServiceConfig.DialogTypes.BotFramework);\r\n botFrameworkConfig.setProperty(PropertyId.SpeechServiceConnection_Host, resolvedHost.toString());\r\n\r\n if (undefined !== subscriptionKey) {\r\n botFrameworkConfig.setProperty(PropertyId.SpeechServiceConnection_Key, subscriptionKey);\r\n }\r\n\r\n return botFrameworkConfig;\r\n }\r\n\r\n /**\r\n * Creates an instance of a BotFrameworkConfig.\r\n * This method is intended only for users who use a non-standard service endpoint or parameters.\r\n * Note: The query parameters specified in the endpoint URL are not changed, even if they are set by any other APIs.\r\n * Note: To use authorization token with fromEndpoint, pass an empty string to the subscriptionKey in the\r\n * fromEndpoint method, and then set authorizationToken=\"token\" on the created BotFrameworkConfig instance to\r\n * use the authorization token.\r\n * Note: Added in version 1.15.0.\r\n * @member BotFrameworkConfig.fromEndpoint\r\n * @function\r\n * @public\r\n * @param {URL} endpoint - The service endpoint to connect to.\r\n * @param {string} subscriptionKey - The subscription key. If a subscription key is not specified, an authorization\r\n * token must be set.\r\n * @returns {BotFrameworkConfig} - A new bot framework configuration instance using the provided endpoint.\r\n */\r\n public static fromEndpoint(endpoint: URL, subscriptionKey?: string): BotFrameworkConfig {\r\n Contracts.throwIfNull(endpoint, \"endpoint\");\r\n\r\n const botFrameworkConfig: BotFrameworkConfig = new DialogServiceConfigImpl();\r\n botFrameworkConfig.setProperty(\r\n PropertyId.Conversation_DialogType,\r\n DialogServiceConfig.DialogTypes.BotFramework);\r\n botFrameworkConfig.setProperty(PropertyId.SpeechServiceConnection_Endpoint, endpoint.toString());\r\n\r\n if (undefined !== subscriptionKey) {\r\n botFrameworkConfig.setProperty(PropertyId.SpeechServiceConnection_Key, subscriptionKey);\r\n }\r\n\r\n return botFrameworkConfig;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { CancellationErrorCodePropertyName, EnumTranslation, SimpleSpeechPhrase } from \"../common.speech/Exports.js\";\r\nimport { CancellationDetailsBase } from \"./CancellationDetailsBase.js\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n RecognitionResult,\r\n SpeechSynthesisResult\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Contains detailed information about why a result was canceled.\r\n * @class CancellationDetails\r\n */\r\nexport class CancellationDetails extends CancellationDetailsBase {\r\n\r\n private constructor(reason: CancellationReason, errorDetails: string, errorCode: CancellationErrorCode) {\r\n super(reason, errorDetails, errorCode);\r\n }\r\n\r\n /**\r\n * Creates an instance of CancellationDetails object for the canceled RecognitionResult.\r\n * @member CancellationDetails.fromResult\r\n * @function\r\n * @public\r\n * @param {RecognitionResult | SpeechSynthesisResult} result - The result that was canceled.\r\n * @returns {CancellationDetails} The cancellation details object being created.\r\n */\r\n public static fromResult(result: RecognitionResult | SpeechSynthesisResult): CancellationDetails {\r\n let reason = CancellationReason.Error;\r\n let errorCode: CancellationErrorCode = CancellationErrorCode.NoError;\r\n\r\n if (result instanceof RecognitionResult && !!result.json) {\r\n const simpleSpeech: SimpleSpeechPhrase = SimpleSpeechPhrase.fromJSON(result.json);\r\n reason = EnumTranslation.implTranslateCancelResult(simpleSpeech.RecognitionStatus);\r\n }\r\n\r\n if (!!result.properties) {\r\n errorCode = CancellationErrorCode[result.properties.getProperty(CancellationErrorCodePropertyName, CancellationErrorCode[CancellationErrorCode.NoError]) as keyof typeof CancellationErrorCode];\r\n }\r\n\r\n return new CancellationDetails(reason, result.errorDetails || EnumTranslation.implTranslateErrorDetails(errorCode), errorCode);\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Contains detailed information about why a result was canceled.\r\n * @class CancellationDetailsBase\r\n */\r\nexport class CancellationDetailsBase {\r\n private privReason: CancellationReason;\r\n private privErrorDetails: string;\r\n private privErrorCode: CancellationErrorCode;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {CancellationReason} reason - The cancellation reason.\r\n * @param {string} errorDetails - The error details, if provided.\r\n */\r\n protected constructor(reason: CancellationReason, errorDetails: string, errorCode: CancellationErrorCode) {\r\n this.privReason = reason;\r\n this.privErrorDetails = errorDetails;\r\n this.privErrorCode = errorCode;\r\n }\r\n\r\n /**\r\n * The reason the recognition was canceled.\r\n * @member CancellationDetailsBase.prototype.reason\r\n * @function\r\n * @public\r\n * @returns {CancellationReason} Specifies the reason canceled.\r\n */\r\n public get reason(): CancellationReason {\r\n return this.privReason;\r\n }\r\n\r\n /**\r\n * In case of an unsuccessful recognition, provides details of the occurred error.\r\n * @member CancellationDetailsBase.prototype.errorDetails\r\n * @function\r\n * @public\r\n * @returns {string} A String that represents the error details.\r\n */\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n\r\n /**\r\n * The error code in case of an unsuccessful recognition.\r\n * Added in version 1.1.0.\r\n * @return An error code that represents the error reason.\r\n */\r\n public get ErrorCode(): CancellationErrorCode {\r\n return this.privErrorCode;\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines error code in case that CancellationReason is Error.\r\n * Added in version 1.1.0.\r\n */\r\nexport enum CancellationErrorCode {\r\n /**\r\n * Indicates that no error occurred during speech recognition.\r\n */\r\n NoError,\r\n\r\n /**\r\n * Indicates an authentication error.\r\n */\r\n AuthenticationFailure,\r\n\r\n /**\r\n * Indicates that one or more recognition parameters are invalid.\r\n */\r\n BadRequestParameters,\r\n\r\n /**\r\n * Indicates that the number of parallel requests exceeded the number of allowed\r\n * concurrent transcriptions for the subscription.\r\n */\r\n TooManyRequests,\r\n\r\n /**\r\n * Indicates a connection error.\r\n */\r\n ConnectionFailure,\r\n\r\n /**\r\n * Indicates a time-out error when waiting for response from service.\r\n */\r\n ServiceTimeout,\r\n\r\n /**\r\n * Indicates that an error is returned by the service.\r\n */\r\n ServiceError,\r\n\r\n /**\r\n * Indicates an unexpected runtime error.\r\n */\r\n RuntimeError,\r\n\r\n /**\r\n * Indicates an quota overrun on existing key.\r\n */\r\n Forbidden,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n CancellationErrorCode,\r\n CancellationEventArgs,\r\n CancellationReason,\r\n RecognitionEventArgs\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Defines content of a CancellationEvent.\r\n * @class CancellationEventArgsBase\r\n */\r\nexport class CancellationEventArgsBase extends RecognitionEventArgs implements CancellationEventArgs {\r\n private privReason: CancellationReason;\r\n private privErrorDetails: string;\r\n private privErrorCode: CancellationErrorCode;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {CancellationReason} reason - The cancellation reason.\r\n * @param {string} errorDetails - Error details, if provided.\r\n * @param {number} offset - The offset.\r\n * @param {string} sessionId - The session id.\r\n */\r\n public constructor(reason: CancellationReason, errorDetails: string,\r\n errorCode: CancellationErrorCode, offset?: number, sessionId?: string) {\r\n super(offset, sessionId);\r\n\r\n this.privReason = reason;\r\n this.privErrorDetails = errorDetails;\r\n this.privErrorCode = errorCode;\r\n }\r\n\r\n /**\r\n * The reason the recognition was canceled.\r\n * @member CancellationEventArgsBase.prototype.reason\r\n * @function\r\n * @public\r\n * @returns {CancellationReason} Specifies the reason canceled.\r\n */\r\n public get reason(): CancellationReason {\r\n return this.privReason;\r\n }\r\n\r\n /**\r\n * The error code in case of an unsuccessful operation.\r\n * @return An error code that represents the error reason.\r\n */\r\n public get errorCode(): CancellationErrorCode {\r\n return this.privErrorCode;\r\n }\r\n\r\n /**\r\n * In case of an unsuccessful operation, provides details of the occurred error.\r\n * @member CancellationEventArgsBase.prototype.errorDetails\r\n * @function\r\n * @public\r\n * @returns {string} A String that represents the error details.\r\n */\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines the possible reasons a recognition result might be canceled.\r\n * @class CancellationReason\r\n */\r\nexport enum CancellationReason {\r\n /**\r\n * Indicates that an error occurred during speech recognition.\r\n * @member CancellationReason.Error\r\n */\r\n Error,\r\n\r\n /**\r\n * Indicates that the end of the audio stream was reached.\r\n * @member CancellationReason.EndOfStream\r\n */\r\n EndOfStream,\r\n}\r\n","//\r\n// Copyright (c) Microsoft. All rights reserved.\r\n// Licensed under the MIT license. See LICENSE.md file in the project root for full license information.\r\n//\r\n\r\nimport {\r\n ServiceRecognizerBase,\r\n SynthesisAdapterBase,\r\n} from \"../common.speech/Exports.js\";\r\nimport {\r\n ConnectionEvent,\r\n ConnectionMessageReceivedEvent,\r\n ConnectionMessageSentEvent,\r\n IDetachable,\r\n marshalPromiseToCallbacks,\r\n ServiceEvent,\r\n} from \"../common/Exports.js\";\r\nimport {\r\n ConnectionMessageImpl\r\n} from \"./ConnectionMessage.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport {\r\n ConnectionEventArgs,\r\n ConnectionMessageEventArgs,\r\n ConversationTranscriber,\r\n Recognizer,\r\n ServiceEventArgs,\r\n SpeechSynthesizer,\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Connection is a proxy class for managing connection to the speech service of the specified Recognizer.\r\n * By default, a Recognizer autonomously manages connection to service when needed.\r\n * The Connection class provides additional methods for users to explicitly open or close a connection and\r\n * to subscribe to connection status changes.\r\n * The use of Connection is optional, and mainly for scenarios where fine tuning of application\r\n * behavior based on connection status is needed. Users can optionally call Open() to manually set up a connection\r\n * in advance before starting recognition on the Recognizer associated with this Connection.\r\n * If the Recognizer needs to connect or disconnect to service, it will\r\n * setup or shutdown the connection independently. In this case the Connection will be notified by change of connection\r\n * status via Connected/Disconnected events.\r\n * Added in version 1.2.1.\r\n */\r\nexport class Connection {\r\n private privInternalData: ServiceRecognizerBase | SynthesisAdapterBase;\r\n private privEventListener: IDetachable;\r\n private privServiceEventListener: IDetachable;\r\n\r\n /**\r\n * Gets the Connection instance from the specified recognizer.\r\n * @param recognizer The recognizer associated with the connection.\r\n * @return The Connection instance of the recognizer.\r\n */\r\n public static fromRecognizer(recognizer: Recognizer | ConversationTranscriber): Connection {\r\n const recoBase = recognizer.internalData as ServiceRecognizerBase;\r\n const ret: Connection = new Connection();\r\n\r\n ret.privInternalData = recoBase;\r\n ret.setupEvents();\r\n return ret;\r\n }\r\n\r\n /**\r\n * Gets the Connection instance from the specified synthesizer.\r\n * @param synthesizer The synthesizer associated with the connection.\r\n * @return The Connection instance of the synthesizer.\r\n */\r\n public static fromSynthesizer(synthesizer: SpeechSynthesizer): Connection {\r\n const synthBase: SynthesisAdapterBase = synthesizer.internalData as SynthesisAdapterBase;\r\n\r\n const ret: Connection = new Connection();\r\n\r\n ret.privInternalData = synthBase;\r\n ret.setupEvents();\r\n return ret;\r\n }\r\n\r\n /**\r\n * Starts to set up connection to the service.\r\n * Users can optionally call openConnection() to manually set up a connection in advance before starting recognition on the\r\n * Recognizer associated with this Connection. After starting recognition, calling Open() will have no effect\r\n *\r\n * Note: On return, the connection might not be ready yet. Please subscribe to the Connected event to\r\n * be notified when the connection is established.\r\n */\r\n public openConnection(cb?: () => void, err?: (error: string) => void): void {\r\n marshalPromiseToCallbacks(this.privInternalData.connect(), cb, err);\r\n }\r\n\r\n /**\r\n * Closes the connection the service.\r\n * Users can optionally call closeConnection() to manually shutdown the connection of the associated Recognizer.\r\n *\r\n * If closeConnection() is called during recognition, recognition will fail and cancel with an error.\r\n */\r\n public closeConnection(cb?: () => void, err?: (error: string) => void): void {\r\n if (this.privInternalData instanceof SynthesisAdapterBase) {\r\n throw new Error(\"Disconnecting a synthesizer's connection is currently not supported\");\r\n } else {\r\n marshalPromiseToCallbacks(this.privInternalData.disconnect(), cb, err);\r\n }\r\n }\r\n\r\n /**\r\n * Appends a parameter in a message to service.\r\n * Added in version 1.12.1.\r\n * @param path The path of the network message.\r\n * @param propertyName Name of the property\r\n * @param propertyValue Value of the property. This is a json string.\r\n */\r\n public setMessageProperty(path: string, propertyName: string, propertyValue: string | object): void {\r\n Contracts.throwIfNullOrWhitespace(propertyName, \"propertyName\");\r\n\r\n if (this.privInternalData instanceof ServiceRecognizerBase) {\r\n if (path.toLowerCase() !== \"speech.context\") {\r\n throw new Error(\"Only speech.context message property sets are currently supported for recognizer\");\r\n } else {\r\n this.privInternalData.speechContext.setSection(propertyName, propertyValue);\r\n }\r\n } else if (this.privInternalData instanceof SynthesisAdapterBase) {\r\n if (path.toLowerCase() !== \"synthesis.context\") {\r\n throw new Error(\"Only synthesis.context message property sets are currently supported for synthesizer\");\r\n } else {\r\n this.privInternalData.synthesisContext.setSection(propertyName, propertyValue);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sends a message to the speech service.\r\n * Added in version 1.13.0.\r\n * @param path The WebSocket path of the message\r\n * @param payload The payload of the message. This is a json string or a ArrayBuffer.\r\n * @param success A callback to indicate success.\r\n * @param error A callback to indicate an error.\r\n */\r\n public sendMessageAsync(path: string, payload: string | ArrayBuffer, success?: () => void, error?: (error: string) => void): void {\r\n marshalPromiseToCallbacks(this.privInternalData.sendNetworkMessage(path, payload), success, error);\r\n }\r\n\r\n /**\r\n * Any message from service that is not being processed by any other top level recognizers.\r\n *\r\n * Will be removed in 2.0.\r\n */\r\n public receivedServiceMessage: (args: ServiceEventArgs) => void;\r\n\r\n /**\r\n * Any message received from the Speech Service.\r\n */\r\n public messageReceived: (args: ConnectionMessageEventArgs) => void;\r\n\r\n /**\r\n * Any message sent to the Speech Service.\r\n */\r\n public messageSent: (args: ConnectionMessageEventArgs) => void;\r\n\r\n /**\r\n * The Connected event to indicate that the recognizer is connected to service.\r\n */\r\n public connected: (args: ConnectionEventArgs) => void;\r\n\r\n /**\r\n * The Disconnected event to indicate that the recognizer is disconnected from service.\r\n */\r\n public disconnected: (args: ConnectionEventArgs) => void;\r\n\r\n /**\r\n * Dispose of associated resources.\r\n */\r\n public close(): void {\r\n /* eslint-disable no-empty */\r\n }\r\n\r\n private setupEvents(): void {\r\n this.privEventListener = this.privInternalData.connectionEvents.attach((connectionEvent: ConnectionEvent): void => {\r\n if (connectionEvent.name === \"ConnectionEstablishedEvent\") {\r\n if (!!this.connected) {\r\n this.connected(new ConnectionEventArgs(connectionEvent.connectionId));\r\n }\r\n } else if (connectionEvent.name === \"ConnectionClosedEvent\") {\r\n if (!!this.disconnected) {\r\n this.disconnected(new ConnectionEventArgs(connectionEvent.connectionId));\r\n }\r\n } else if (connectionEvent.name === \"ConnectionMessageSentEvent\") {\r\n if (!!this.messageSent) {\r\n this.messageSent(new ConnectionMessageEventArgs(new ConnectionMessageImpl((connectionEvent as ConnectionMessageSentEvent).message)));\r\n }\r\n } else if (connectionEvent.name === \"ConnectionMessageReceivedEvent\") {\r\n if (!!this.messageReceived) {\r\n this.messageReceived(new ConnectionMessageEventArgs(new ConnectionMessageImpl((connectionEvent as ConnectionMessageReceivedEvent).message)));\r\n }\r\n }\r\n });\r\n\r\n this.privServiceEventListener = this.privInternalData.serviceEvents.attach((e: ServiceEvent): void => {\r\n if (!!this.receivedServiceMessage) {\r\n this.receivedServiceMessage(new ServiceEventArgs(e.jsonString, e.name));\r\n }\r\n });\r\n }\r\n}\r\n","//\r\n// Copyright (c) Microsoft. All rights reserved.\r\n// Licensed under the MIT license. See LICENSE.md file in the project root for full license information.\r\n//\r\n\r\nimport { SessionEventArgs } from \"./Exports.js\";\r\n\r\n/**\r\n * Defines payload for connection events like Connected/Disconnected.\r\n * Added in version 1.2.0\r\n */\r\nexport class ConnectionEventArgs extends SessionEventArgs {\r\n}\r\n","//\r\n// Copyright (c) Microsoft. All rights reserved.\r\n// Licensed under the MIT license. See LICENSE.md file in the project root for full license information.\r\n//\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nimport { HeaderNames } from \"../common.speech/HeaderNames.js\";\r\nimport {\r\n ConnectionMessage as IntConnectionMessage,\r\n MessageType\r\n} from \"../common/Exports.js\";\r\nimport {\r\n PropertyCollection\r\n} from \"./PropertyCollection.js\";\r\nimport { PropertyId } from \"./PropertyId.js\";\r\n\r\n/**\r\n * ConnectionMessage represents implementation specific messages sent to and received from\r\n * the speech service. These messages are provided for debugging purposes and should not\r\n * be used for production use cases with the Azure Cognitive Services Speech Service.\r\n * Messages sent to and received from the Speech Service are subject to change without\r\n * notice. This includes message contents, headers, payloads, ordering, etc.\r\n * Added in version 1.11.0.\r\n */\r\nexport abstract class ConnectionMessage {\r\n /**\r\n * The message path.\r\n */\r\n public abstract get path(): string;\r\n\r\n /**\r\n * Checks to see if the ConnectionMessage is a text message.\r\n * See also IsBinaryMessage().\r\n */\r\n public abstract get isTextMessage(): boolean;\r\n\r\n /**\r\n * Checks to see if the ConnectionMessage is a binary message.\r\n * See also GetBinaryMessage().\r\n */\r\n public abstract get isBinaryMessage(): boolean;\r\n\r\n /**\r\n * Gets the text message payload. Typically the text message content-type is\r\n * application/json. To determine other content-types use\r\n * Properties.GetProperty(\"Content-Type\").\r\n */\r\n public abstract get TextMessage(): string;\r\n\r\n /**\r\n * Gets the binary message payload.\r\n */\r\n public abstract get binaryMessage(): ArrayBuffer;\r\n\r\n /**\r\n * A collection of properties and their values defined for this .\r\n * Message headers can be accessed via this collection (e.g. \"Content-Type\").\r\n */\r\n public abstract get properties(): PropertyCollection;\r\n\r\n /**\r\n * Returns a string that represents the connection message.\r\n */\r\n public abstract toString(): string;\r\n}\r\n\r\nexport class ConnectionMessageImpl {\r\n\r\n private privConnectionMessage: IntConnectionMessage;\r\n private privProperties: PropertyCollection;\r\n\r\n public constructor(message: IntConnectionMessage) {\r\n this.privConnectionMessage = message;\r\n this.privProperties = new PropertyCollection();\r\n if (!!this.privConnectionMessage.headers[HeaderNames.ConnectionId]) {\r\n this.privProperties.setProperty(PropertyId.Speech_SessionId, this.privConnectionMessage.headers[HeaderNames.ConnectionId]);\r\n }\r\n\r\n Object.keys(this.privConnectionMessage.headers).forEach((header: string): void => {\r\n this.privProperties.setProperty(header, this.privConnectionMessage.headers[header]);\r\n });\r\n }\r\n\r\n /**\r\n * The message path.\r\n */\r\n public get path(): string {\r\n return this.privConnectionMessage.headers[Object.keys(this.privConnectionMessage.headers).find((key: string): boolean => key.toLowerCase() === \"path\".toLowerCase())];\r\n }\r\n\r\n /**\r\n * Checks to see if the ConnectionMessage is a text message.\r\n * See also IsBinaryMessage().\r\n */\r\n public get isTextMessage(): boolean {\r\n return this.privConnectionMessage.messageType === MessageType.Text;\r\n }\r\n\r\n /**\r\n * Checks to see if the ConnectionMessage is a binary message.\r\n * See also GetBinaryMessage().\r\n */\r\n public get isBinaryMessage(): boolean {\r\n return this.privConnectionMessage.messageType === MessageType.Binary;\r\n }\r\n\r\n /**\r\n * Gets the text message payload. Typically the text message content-type is\r\n * application/json. To determine other content-types use\r\n * Properties.GetProperty(\"Content-Type\").\r\n */\r\n public get TextMessage(): string {\r\n return this.privConnectionMessage.textBody;\r\n }\r\n\r\n /**\r\n * Gets the binary message payload.\r\n */\r\n public get binaryMessage(): ArrayBuffer {\r\n return this.privConnectionMessage.binaryBody;\r\n }\r\n\r\n /**\r\n * A collection of properties and their values defined for this .\r\n * Message headers can be accessed via this collection (e.g. \"Content-Type\").\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * Returns a string that represents the connection message.\r\n */\r\n public toString(): string {\r\n return \"\";\r\n }\r\n}\r\n","//\r\n// Copyright (c) Microsoft. All rights reserved.\r\n// Licensed under the MIT license. See LICENSE.md file in the project root for full license information.\r\n//\r\n\r\nimport {\r\n ConnectionMessage\r\n} from \"./Exports.js\";\r\n\r\nexport class ConnectionMessageEventArgs {\r\n\r\n private privConnectionMessage: ConnectionMessage;\r\n\r\n public constructor(message: ConnectionMessage) {\r\n this.privConnectionMessage = message;\r\n }\r\n\r\n /**\r\n * Gets the associated with this .\r\n */\r\n public get message(): ConnectionMessage {\r\n return this.privConnectionMessage;\r\n }\r\n\r\n /**\r\n * Returns a string that represents the connection message event.\r\n */\r\n public toString(): string {\r\n return \"Message: \" + this.privConnectionMessage.toString();\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * @class Contracts\r\n * @private\r\n */\r\nexport class Contracts {\r\n public static throwIfNullOrUndefined(param: any, name: string): void {\r\n if (param === undefined || param === null) {\r\n throw new Error(\"throwIfNullOrUndefined:\" + name);\r\n }\r\n }\r\n\r\n public static throwIfNull(param: any, name: string): void {\r\n if (param === null) {\r\n throw new Error(\"throwIfNull:\" + name);\r\n }\r\n }\r\n\r\n public static throwIfNullOrWhitespace(param: string, name: string): void {\r\n Contracts.throwIfNullOrUndefined(param, name);\r\n\r\n if ((\"\" + param).trim().length < 1) {\r\n throw new Error(\"throwIfNullOrWhitespace:\" + name);\r\n }\r\n }\r\n\r\n public static throwIfNullOrTooLong(param: string, name: string, maxLength: number): void {\r\n Contracts.throwIfNullOrUndefined(param, name);\r\n\r\n if ((\"\" + param).length > maxLength) {\r\n throw new Error(\"throwIfNullOrTooLong:\" + name + \" (more than \" + maxLength.toString() + \" characters)\");\r\n }\r\n }\r\n\r\n public static throwIfNullOrTooShort(param: string, name: string, minLength: number): void {\r\n Contracts.throwIfNullOrUndefined(param, name);\r\n\r\n if ((\"\" + param).length < minLength) {\r\n throw new Error(\"throwIfNullOrTooShort:\" + name + \" (less than \" + minLength.toString() + \" characters)\");\r\n }\r\n }\r\n\r\n public static throwIfDisposed(isDisposed: boolean): void {\r\n if (isDisposed) {\r\n throw new Error(\"the object is already disposed\");\r\n }\r\n }\r\n\r\n public static throwIfArrayEmptyOrWhitespace(array: string[], name: string): void {\r\n Contracts.throwIfNullOrUndefined(array, name);\r\n\r\n if (array.length === 0) {\r\n throw new Error(\"throwIfArrayEmptyOrWhitespace:\" + name);\r\n }\r\n\r\n for (const item of array) {\r\n Contracts.throwIfNullOrWhitespace(item, name);\r\n }\r\n }\r\n\r\n public static throwIfFileDoesNotExist(param: string, name: string): void {\r\n Contracts.throwIfNullOrWhitespace(param, name);\r\n\r\n // TODO check for file existence.\r\n }\r\n\r\n public static throwIfNotUndefined(param: any, name: string): void {\r\n if (param !== undefined) {\r\n throw new Error(\"throwIfNotUndefined:\" + name);\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n CancellationEventArgsBase,\r\n} from \"./CancellationEventArgsBase.js\";\r\n\r\n/**\r\n * Defines content of a RecognitionErrorEvent.\r\n * @class ConversationTranscriptionCanceledEventArgs\r\n */\r\nexport class ConversationTranscriptionCanceledEventArgs extends CancellationEventArgsBase {\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport { DialogServiceConfig, DialogServiceConfigImpl } from \"./DialogServiceConfig.js\";\r\nimport { PropertyId } from \"./Exports.js\";\r\n\r\n/**\r\n * Class that defines configurations for the dialog service connector object for using a CustomCommands backend.\r\n * @class CustomCommandsConfig\r\n */\r\nexport class CustomCommandsConfig extends DialogServiceConfigImpl {\r\n\r\n /**\r\n * Creates an instance of CustomCommandsConfig.\r\n */\r\n public constructor() {\r\n super();\r\n }\r\n\r\n /**\r\n * Creates an instance of the bot framework config with the specified subscription and region.\r\n * @member CustomCommandsConfig.fromSubscription\r\n * @function\r\n * @public\r\n * @param applicationId Speech Commands application id.\r\n * @param subscription Subscription key associated with the bot\r\n * @param region The region name (see the region page).\r\n * @returns {CustomCommandsConfig} A new bot framework config.\r\n */\r\n public static fromSubscription(applicationId: string, subscription: string, region: string): CustomCommandsConfig {\r\n Contracts.throwIfNullOrWhitespace(applicationId, \"applicationId\");\r\n Contracts.throwIfNullOrWhitespace(subscription, \"subscription\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const customCommandsConfig: CustomCommandsConfig = new DialogServiceConfigImpl();\r\n customCommandsConfig.setProperty(PropertyId.Conversation_DialogType, DialogServiceConfig.DialogTypes.CustomCommands);\r\n customCommandsConfig.setProperty(PropertyId.Conversation_ApplicationId, applicationId);\r\n customCommandsConfig.setProperty(PropertyId.SpeechServiceConnection_Key, subscription);\r\n customCommandsConfig.setProperty(PropertyId.SpeechServiceConnection_Region, region);\r\n return customCommandsConfig;\r\n }\r\n\r\n /**\r\n * Creates an instance of the bot framework config with the specified Speech Commands application id, authorization token and region.\r\n * Note: The caller needs to ensure that the authorization token is valid. Before the authorization token\r\n * expires, the caller needs to refresh it by calling this setter with a new valid token.\r\n * As configuration values are copied when creating a new recognizer, the new token value will not apply to recognizers that have already been created.\r\n * For recognizers that have been created before, you need to set authorization token of the corresponding recognizer\r\n * to refresh the token. Otherwise, the recognizers will encounter errors during recognition.\r\n * @member CustomCommandsConfig.fromAuthorizationToken\r\n * @function\r\n * @public\r\n * @param applicationId Speech Commands application id.\r\n * @param authorizationToken The authorization token associated with the application.\r\n * @param region The region name (see the region page).\r\n * @returns {CustomCommandsConfig} A new speech commands config.\r\n */\r\n public static fromAuthorizationToken(applicationId: string, authorizationToken: string, region: string): CustomCommandsConfig {\r\n Contracts.throwIfNullOrWhitespace(applicationId, \"applicationId\");\r\n Contracts.throwIfNullOrWhitespace(authorizationToken, \"authorizationToken\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const customCommandsConfig: CustomCommandsConfig = new DialogServiceConfigImpl();\r\n customCommandsConfig.setProperty(PropertyId.Conversation_DialogType, DialogServiceConfig.DialogTypes.CustomCommands);\r\n customCommandsConfig.setProperty(PropertyId.Conversation_ApplicationId, applicationId);\r\n customCommandsConfig.setProperty(PropertyId.SpeechServiceAuthorization_Token, authorizationToken);\r\n customCommandsConfig.setProperty(PropertyId.SpeechServiceConnection_Region, region);\r\n return customCommandsConfig;\r\n }\r\n\r\n /**\r\n * Sets the corresponding backend application identifier.\r\n * @member CustomCommandsConfig.prototype.Conversation_ApplicationId\r\n * @function\r\n * @public\r\n * @param {string} value - The application identifier to set.\r\n */\r\n public set applicationId(value: string) {\r\n Contracts.throwIfNullOrWhitespace(value, \"value\");\r\n this.setProperty(PropertyId.Conversation_ApplicationId, value);\r\n }\r\n\r\n /**\r\n * Gets the corresponding backend application identifier.\r\n * @member CustomCommandsConfig.prototype.Conversation_ApplicationId\r\n * @function\r\n * @public\r\n * @param {string} value - The application identifier to get.\r\n */\r\n public get applicationId(): string {\r\n return this.getProperty(PropertyId.Conversation_ApplicationId);\r\n }\r\n}\r\n","//\r\n// Copyright (c) Microsoft. All rights reserved.\r\n// Licensed under the MIT license. See LICENSE.md file in the project root for full license information.\r\n//\r\n\r\nimport { ConsoleLoggingListener } from \"../common.browser/Exports.js\";\r\nimport { Events } from \"../common/Exports.js\";\r\nimport { LogLevel } from \"./LogLevel.js\";\r\n\r\ntype LogCallback = (s: string) => void;\r\n\r\n/**\r\n * Defines diagnostics API for managing console output\r\n * Added in version 1.21.0\r\n */\r\nexport class Diagnostics {\r\n private static privListener: ConsoleLoggingListener = undefined;\r\n\r\n public static SetLoggingLevel(logLevel: LogLevel): void {\r\n this.privListener = new ConsoleLoggingListener(logLevel);\r\n Events.instance.attachConsoleListener(this.privListener);\r\n }\r\n\r\n public static StartConsoleOutput(): void {\r\n if (!!this.privListener) {\r\n this.privListener.enableConsoleOutput = true;\r\n }\r\n }\r\n\r\n public static StopConsoleOutput(): void {\r\n if (!!this.privListener) {\r\n this.privListener.enableConsoleOutput = false;\r\n }\r\n }\r\n\r\n public static SetLogOutputPath(path: string): void {\r\n if (typeof window === \"undefined\") {\r\n if (!!this.privListener) {\r\n this.privListener.logPath = path;\r\n }\r\n } else {\r\n throw new Error(\"File system logging not available in browser.\");\r\n }\r\n }\r\n\r\n\r\n public static set onLogOutput( callback: LogCallback ) {\r\n if (!!this.privListener) {\r\n this.privListener.logCallback = callback;\r\n }\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport { PropertyCollection, PropertyId, ServicePropertyChannel, SpeechConfigImpl } from \"./Exports.js\";\r\nimport { OutputFormat } from \"./OutputFormat.js\";\r\n\r\n/**\r\n * Class that defines base configurations for dialog service connector\r\n * @class DialogServiceConfig\r\n */\r\nexport abstract class DialogServiceConfig {\r\n\r\n /**\r\n * Creates an instance of DialogService config.\r\n * @constructor\r\n */\r\n protected constructor() {\r\n return;\r\n }\r\n\r\n /**\r\n * Sets an arbitrary property.\r\n * @member DialogServiceConfig.prototype.setProperty\r\n * @function\r\n * @public\r\n * @param {string} name - The name of the property to set.\r\n * @param {string} value - The new value of the property.\r\n */\r\n public abstract setProperty(name: string | PropertyId, value: string): void;\r\n\r\n /**\r\n * Returns the current value of an arbitrary property.\r\n * @member DialogServiceConfig.prototype.getProperty\r\n * @function\r\n * @public\r\n * @param {string} name - The name of the property to query.\r\n * @param {string} def - The value to return in case the property is not known.\r\n * @returns {string} The current value, or provided default, of the given property.\r\n */\r\n public abstract getProperty(name: string | PropertyId, def?: string): string;\r\n\r\n /**\r\n * @member DialogServiceConfig.prototype.setServiceProperty\r\n * @function\r\n * @public\r\n * @param {name} The name of the property.\r\n * @param {value} Value to set.\r\n * @param {channel} The channel used to pass the specified property to service.\r\n * @summary Sets a property value that will be passed to service using the specified channel.\r\n */\r\n public abstract setServiceProperty(name: string, value: string, channel: ServicePropertyChannel): void;\r\n\r\n /**\r\n * Sets the proxy configuration.\r\n * Only relevant in Node.js environments.\r\n * Added in version 1.4.0.\r\n * @param proxyHostName The host name of the proxy server.\r\n * @param proxyPort The port number of the proxy server.\r\n */\r\n public abstract setProxy(proxyHostName: string, proxyPort: number): void;\r\n\r\n /**\r\n * Sets the proxy configuration.\r\n * Only relevant in Node.js environments.\r\n * Added in version 1.4.0.\r\n * @param proxyHostName The host name of the proxy server, without the protocol scheme (http://)\r\n * @param porxyPort The port number of the proxy server.\r\n * @param proxyUserName The user name of the proxy server.\r\n * @param proxyPassword The password of the proxy server.\r\n */\r\n public abstract setProxy(proxyHostName: string, proxyPort: number, proxyUserName: string, proxyPassword: string): void;\r\n\r\n /**\r\n * Returns the configured language.\r\n * @member DialogServiceConfig.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n */\r\n public abstract get speechRecognitionLanguage(): string;\r\n\r\n /**\r\n * Gets/Sets the input language.\r\n * @member DialogServiceConfig.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @param {string} value - The language to use for recognition.\r\n */\r\n public abstract set speechRecognitionLanguage(value: string);\r\n\r\n /**\r\n * Sets the corresponding backend application identifier.\r\n * @member DialogServiceConfig.prototype.Conversation_ApplicationId\r\n * @function\r\n * @public\r\n * @param {string} value - The application identifier to set.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n public set applicationId(value: string) { }\r\n\r\n public static get DialogTypes(): { BotFramework: string; CustomCommands: string } {\r\n return {\r\n BotFramework: \"bot_framework\",\r\n CustomCommands: \"custom_commands\"\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Dialog Service configuration.\r\n * @class DialogServiceConfigImpl\r\n */\r\nexport class DialogServiceConfigImpl extends DialogServiceConfig {\r\n\r\n private privSpeechConfig: SpeechConfigImpl;\r\n\r\n /**\r\n * Creates an instance of dialogService config.\r\n */\r\n public constructor() {\r\n super();\r\n this.privSpeechConfig = new SpeechConfigImpl();\r\n }\r\n\r\n /**\r\n * Provides access to custom properties.\r\n * @member DialogServiceConfigImpl.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The properties.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privSpeechConfig.properties;\r\n }\r\n\r\n /**\r\n * Gets the speech recognition language.\r\n * @member DialogServiceConfigImpl.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n */\r\n public get speechRecognitionLanguage(): string {\r\n return this.privSpeechConfig.speechRecognitionLanguage;\r\n }\r\n\r\n /**\r\n * Sets the speech recognition language.\r\n * @member DialogServiceConfigImpl.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @param {string} value - The language to set.\r\n */\r\n public set speechRecognitionLanguage(value: string) {\r\n Contracts.throwIfNullOrWhitespace(value, \"value\");\r\n this.privSpeechConfig.speechRecognitionLanguage = value;\r\n }\r\n\r\n public get outputFormat(): OutputFormat {\r\n return this.privSpeechConfig.outputFormat;\r\n }\r\n\r\n public set outputFormat(value: OutputFormat) {\r\n this.privSpeechConfig.outputFormat = value;\r\n }\r\n\r\n /**\r\n * Sets a named property as value\r\n * @member DialogServiceConfigImpl.prototype.setProperty\r\n * @function\r\n * @public\r\n * @param {PropertyId | string} name - The property to set.\r\n * @param {string} value - The value.\r\n */\r\n public setProperty(name: string | PropertyId, value: string): void {\r\n this.privSpeechConfig.setProperty(name, value);\r\n }\r\n\r\n /**\r\n * Sets a named property as value\r\n * @member DialogServiceConfigImpl.prototype.getProperty\r\n * @function\r\n * @public\r\n * @param {PropertyId | string} name - The property to get.\r\n * @param {string} def - The default value to return in case the property is not known.\r\n * @returns {string} The current value, or provided default, of the given property.\r\n */\r\n public getProperty(name: string | PropertyId, def?: string): string {\r\n void def;\r\n return this.privSpeechConfig.getProperty(name);\r\n }\r\n\r\n /**\r\n * Sets the proxy configuration.\r\n * Only relevant in Node.js environments.\r\n * Added in version 1.4.0.\r\n * @param proxyHostName The host name of the proxy server, without the protocol scheme (http://)\r\n * @param proxyPort The port number of the proxy server.\r\n * @param proxyUserName The user name of the proxy server.\r\n * @param proxyPassword The password of the proxy server.\r\n */\r\n public setProxy(proxyHostName: string, proxyPort: number, proxyUserName?: string, proxyPassword?: string): void {\r\n this.setProperty(PropertyId.SpeechServiceConnection_ProxyHostName, proxyHostName);\r\n this.setProperty(PropertyId.SpeechServiceConnection_ProxyPort, `${proxyPort}`);\r\n if (proxyUserName) {\r\n this.setProperty(PropertyId.SpeechServiceConnection_ProxyUserName, proxyUserName);\r\n }\r\n if (proxyPassword) {\r\n this.setProperty(PropertyId.SpeechServiceConnection_ProxyPassword, proxyPassword);\r\n }\r\n }\r\n\r\n public setServiceProperty(name: string, value: string, channel: ServicePropertyChannel): void {\r\n void channel;\r\n this.privSpeechConfig.setServiceProperty(name, value);\r\n }\r\n\r\n /**\r\n * Dispose of associated resources.\r\n * @member DialogServiceConfigImpl.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(): void {\r\n return;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { DialogConnectionFactory } from \"../common.speech/DialogConnectorFactory.js\";\r\nimport {\r\n DialogServiceAdapter,\r\n IAgentConfig,\r\n IAuthentication,\r\n IConnectionFactory,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeechServiceConfig\r\n} from \"../common.speech/Exports.js\";\r\nimport {\r\n Deferred,\r\n marshalPromiseToCallbacks\r\n} from \"../common/Exports.js\";\r\nimport { ActivityReceivedEventArgs } from \"./ActivityReceivedEventArgs.js\";\r\nimport { AudioConfigImpl } from \"./Audio/AudioConfig.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport { DialogServiceConfig, DialogServiceConfigImpl } from \"./DialogServiceConfig.js\";\r\nimport {\r\n AudioConfig,\r\n PropertyCollection,\r\n Recognizer,\r\n SpeechRecognitionCanceledEventArgs,\r\n SpeechRecognitionEventArgs,\r\n SpeechRecognitionResult\r\n} from \"./Exports.js\";\r\nimport { PropertyId } from \"./PropertyId.js\";\r\nimport { TurnStatusReceivedEventArgs } from \"./TurnStatusReceivedEventArgs.js\";\r\n\r\n/**\r\n * Dialog Service Connector\r\n * @class DialogServiceConnector\r\n */\r\nexport class DialogServiceConnector extends Recognizer {\r\n private privIsDisposed: boolean;\r\n private isTurnComplete: boolean;\r\n\r\n /**\r\n * Initializes an instance of the DialogServiceConnector.\r\n * @constructor\r\n * @param {DialogServiceConfig} dialogConfig - Set of properties to configure this recognizer.\r\n * @param {AudioConfig} audioConfig - An optional audio config associated with the recognizer\r\n */\r\n public constructor(dialogConfig: DialogServiceConfig, audioConfig?: AudioConfig) {\r\n const dialogServiceConfigImpl = dialogConfig as DialogServiceConfigImpl;\r\n Contracts.throwIfNull(dialogConfig, \"dialogConfig\");\r\n\r\n super(audioConfig, dialogServiceConfigImpl.properties, new DialogConnectionFactory());\r\n\r\n this.isTurnComplete = true;\r\n this.privIsDisposed = false;\r\n this.privProperties = dialogServiceConfigImpl.properties.clone();\r\n\r\n const agentConfig = this.buildAgentConfig();\r\n this.privReco.agentConfig.set(agentConfig);\r\n }\r\n\r\n /**\r\n * The event recognizing signals that an intermediate recognition result is received.\r\n * @member DialogServiceConnector.prototype.recognizing\r\n * @function\r\n * @public\r\n */\r\n public recognizing: (sender: DialogServiceConnector, event: SpeechRecognitionEventArgs) => void;\r\n\r\n /**\r\n * The event recognized signals that a final recognition result is received.\r\n * @member DialogServiceConfig.prototype.recognized\r\n * @function\r\n * @public\r\n */\r\n public recognized: (sender: DialogServiceConnector, event: SpeechRecognitionEventArgs) => void;\r\n\r\n /**\r\n * The event canceled signals that an error occurred during recognition.\r\n * @member DialogServiceConnector.prototype.canceled\r\n * @function\r\n * @public\r\n */\r\n public canceled: (sender: DialogServiceConnector, event: SpeechRecognitionCanceledEventArgs) => void;\r\n\r\n /**\r\n * The event activityReceived signals that an activity has been received.\r\n * @member DialogServiceConnector.prototype.activityReceived\r\n * @function\r\n * @public\r\n */\r\n public activityReceived: (sender: DialogServiceConnector, event: ActivityReceivedEventArgs) => void;\r\n\r\n /**\r\n * The event turnStatusReceived signals that a turn status message has been received. These messages are\r\n * associated with both an interaction and a conversation. They are used to notify the client in the event\r\n * of an interaction failure with the dialog backend, e.g. in the event of a network issue, timeout, crash,\r\n * or other problem.\r\n * @member DialogServiceConnector.prototype.turnStatusReceived\r\n * @function\r\n * @public\r\n */\r\n public turnStatusReceived: (sender: DialogServiceConnector, event: TurnStatusReceivedEventArgs) => void;\r\n\r\n /**\r\n * Starts a connection to the service.\r\n * Users can optionally call connect() to manually set up a connection in advance, before starting interactions.\r\n *\r\n * Note: On return, the connection might not be ready yet. Please subscribe to the Connected event to\r\n * be notified when the connection is established.\r\n * @member DialogServiceConnector.prototype.connect\r\n * @function\r\n * @public\r\n */\r\n public connect(cb?: () => void, err?: (error: string) => void): void {\r\n marshalPromiseToCallbacks(this.privReco.connect(), cb, err);\r\n }\r\n\r\n /**\r\n * Closes the connection the service.\r\n * Users can optionally call disconnect() to manually shutdown the connection of the associated DialogServiceConnector.\r\n *\r\n * If disconnect() is called during a recognition, recognition will fail and cancel with an error.\r\n */\r\n public disconnect(cb?: () => void, err?: (error: string) => void): void {\r\n marshalPromiseToCallbacks(this.privReco.disconnect(), cb, err);\r\n }\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member DialogServiceConnector.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Sets the authorization token used to communicate with the service.\r\n * @member DialogServiceConnector.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} token - Authorization token.\r\n */\r\n public set authorizationToken(token: string) {\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, token);\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this DialogServiceConnector.\r\n * @member DialogServiceConnector.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their values defined for this DialogServiceConnector.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /** Gets the template for the activity generated by service from speech.\r\n * Properties from the template will be stamped on the generated activity.\r\n * It can be empty\r\n */\r\n public get speechActivityTemplate(): string {\r\n return this.properties.getProperty(PropertyId.Conversation_Speech_Activity_Template);\r\n }\r\n\r\n /** Sets the template for the activity generated by service from speech.\r\n * Properties from the template will be stamped on the generated activity.\r\n * It can be null or empty.\r\n * Note: it has to be a valid Json object.\r\n */\r\n public set speechActivityTemplate(speechActivityTemplate: string) {\r\n this.properties.setProperty(PropertyId.Conversation_Speech_Activity_Template, speechActivityTemplate);\r\n }\r\n\r\n /**\r\n * Starts recognition and stops after the first utterance is recognized.\r\n * @member DialogServiceConnector.prototype.listenOnceAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback that received the result when the reco has completed.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public listenOnceAsync(cb?: (e: SpeechRecognitionResult) => void, err?: (e: string) => void): void {\r\n if (this.isTurnComplete) {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n const callbackHolder = async (): Promise => {\r\n await this.privReco.connect();\r\n await this.implRecognizerStop();\r\n this.isTurnComplete = false;\r\n\r\n const ret: Deferred = new Deferred();\r\n await this.privReco.recognize(RecognitionMode.Conversation, ret.resolve, ret.reject);\r\n\r\n const e: SpeechRecognitionResult = await ret.promise;\r\n await this.implRecognizerStop();\r\n\r\n return e;\r\n };\r\n\r\n const retPromise: Promise = callbackHolder();\r\n\r\n retPromise.catch((): void => {\r\n // Destroy the recognizer.\r\n // We've done all we can here.\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n this.dispose(true).catch((): void => { });\r\n });\r\n\r\n marshalPromiseToCallbacks(retPromise.finally((): void => {\r\n this.isTurnComplete = true;\r\n }), cb, err);\r\n }\r\n }\r\n\r\n public sendActivityAsync(activity: string, cb?: () => void, errCb?: (error: string) => void): void {\r\n marshalPromiseToCallbacks((this.privReco as DialogServiceAdapter).sendMessage(activity), cb, errCb);\r\n }\r\n\r\n /**\r\n * closes all external resources held by an instance of this class.\r\n * @member DialogServiceConnector.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, err?: (error: string) => void): void {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n\r\n marshalPromiseToCallbacks(this.dispose(true), cb, err);\r\n }\r\n\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privIsDisposed) {\r\n return;\r\n }\r\n\r\n if (disposing) {\r\n this.privIsDisposed = true;\r\n await this.implRecognizerStop();\r\n await super.dispose(disposing);\r\n }\r\n }\r\n\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(speechConfig, this.privProperties);\r\n }\r\n\r\n protected createServiceRecognizer(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioConfig: AudioConfig,\r\n recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n\r\n const audioSource: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n\r\n return new DialogServiceAdapter(authentication, connectionFactory, audioSource, recognizerConfig, this);\r\n }\r\n\r\n private buildAgentConfig(): IAgentConfig {\r\n const communicationType = this.properties.getProperty(\"Conversation_Communication_Type\", \"Default\");\r\n\r\n return {\r\n botInfo: {\r\n commType: communicationType,\r\n commandsCulture: undefined,\r\n connectionId: this.properties.getProperty(PropertyId.Conversation_Agent_Connection_Id),\r\n conversationId: this.properties.getProperty(PropertyId.Conversation_Conversation_Id, undefined),\r\n fromId: this.properties.getProperty(PropertyId.Conversation_From_Id, undefined),\r\n ttsAudioFormat: this.properties.getProperty(PropertyId.SpeechServiceConnection_SynthOutputFormat, undefined)\r\n },\r\n version: 0.2\r\n };\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport { AudioConfig } from \"./Audio/AudioConfig.js\";\r\nexport { AudioStreamFormat, AudioFormatTag } from \"./Audio/AudioStreamFormat.js\";\r\nexport { AudioInputStream, PullAudioInputStream, PushAudioInputStream } from \"./Audio/AudioInputStream.js\";\r\nexport { AudioOutputStream, PullAudioOutputStream, PushAudioOutputStream} from \"./Audio/AudioOutputStream.js\";\r\nexport { CancellationReason } from \"./CancellationReason.js\";\r\nexport { PullAudioInputStreamCallback } from \"./Audio/PullAudioInputStreamCallback.js\";\r\nexport { PushAudioOutputStreamCallback } from \"./Audio/PushAudioOutputStreamCallback.js\";\r\nexport { KeywordRecognitionModel } from \"./KeywordRecognitionModel.js\";\r\nexport { SessionEventArgs } from \"./SessionEventArgs.js\";\r\nexport { RecognitionEventArgs } from \"./RecognitionEventArgs.js\";\r\nexport { OutputFormat } from \"./OutputFormat.js\";\r\nexport { IntentRecognitionEventArgs } from \"./IntentRecognitionEventArgs.js\";\r\nexport { RecognitionResult } from \"./RecognitionResult.js\";\r\nexport { SpeechRecognitionResult } from \"./SpeechRecognitionResult.js\";\r\nexport { IntentRecognitionResult } from \"./IntentRecognitionResult.js\";\r\nexport { LanguageUnderstandingModel } from \"./LanguageUnderstandingModel.js\";\r\nexport { SpeechRecognitionEventArgs, ConversationTranscriptionEventArgs, MeetingTranscriptionEventArgs } from \"./SpeechRecognitionEventArgs.js\";\r\nexport { SpeechRecognitionCanceledEventArgs } from \"./SpeechRecognitionCanceledEventArgs.js\";\r\nexport { TranslationRecognitionEventArgs } from \"./TranslationRecognitionEventArgs.js\";\r\nexport { TranslationSynthesisEventArgs } from \"./TranslationSynthesisEventArgs.js\";\r\nexport { TranslationRecognitionResult } from \"./TranslationRecognitionResult.js\";\r\nexport { TranslationSynthesisResult } from \"./TranslationSynthesisResult.js\";\r\nexport { ResultReason } from \"./ResultReason.js\";\r\nexport { SpeechConfig, SpeechConfigImpl } from \"./SpeechConfig.js\";\r\nexport { SpeechTranslationConfig, SpeechTranslationConfigImpl } from \"./SpeechTranslationConfig.js\";\r\nexport { PropertyCollection } from \"./PropertyCollection.js\";\r\nexport { PropertyId } from \"./PropertyId.js\";\r\nexport { Recognizer } from \"./Recognizer.js\";\r\nexport { SpeechRecognizer } from \"./SpeechRecognizer.js\";\r\nexport { IntentRecognizer } from \"./IntentRecognizer.js\";\r\nexport { VoiceProfileType } from \"./VoiceProfileType.js\";\r\nexport { TranslationRecognizer } from \"./TranslationRecognizer.js\";\r\nexport { Translations } from \"./Translations.js\";\r\nexport { NoMatchReason } from \"./NoMatchReason.js\";\r\nexport { NoMatchDetails } from \"./NoMatchDetails.js\";\r\nexport { TranslationRecognitionCanceledEventArgs } from \"./TranslationRecognitionCanceledEventArgs.js\";\r\nexport { IntentRecognitionCanceledEventArgs } from \"./IntentRecognitionCanceledEventArgs.js\";\r\nexport { CancellationDetailsBase } from \"./CancellationDetailsBase.js\";\r\nexport { CancellationDetails } from \"./CancellationDetails.js\";\r\nexport { CancellationErrorCode } from \"./CancellationErrorCodes.js\";\r\nexport { ConnectionEventArgs } from \"./ConnectionEventArgs.js\";\r\nexport { ServiceEventArgs } from \"./ServiceEventArgs.js\";\r\nexport { Connection } from \"./Connection.js\";\r\nexport { PhraseListGrammar } from \"./PhraseListGrammar.js\";\r\nexport { DialogServiceConfig } from \"./DialogServiceConfig.js\";\r\nexport { BotFrameworkConfig } from \"./BotFrameworkConfig.js\";\r\nexport { CustomCommandsConfig } from \"./CustomCommandsConfig.js\";\r\nexport { DialogServiceConnector } from \"./DialogServiceConnector.js\";\r\nexport { ActivityReceivedEventArgs } from \"./ActivityReceivedEventArgs.js\";\r\nexport { TurnStatusReceivedEventArgs } from \"./TurnStatusReceivedEventArgs.js\";\r\nexport { ServicePropertyChannel } from \"./ServicePropertyChannel.js\";\r\nexport { ProfanityOption } from \"./ProfanityOption.js\";\r\nexport { BaseAudioPlayer } from \"./Audio/BaseAudioPlayer.js\";\r\nexport { ConnectionMessageEventArgs } from \"./ConnectionMessageEventArgs.js\";\r\nexport { ConnectionMessage } from \"./ConnectionMessage.js\";\r\nexport { VoiceProfile } from \"./VoiceProfile.js\";\r\nexport { VoiceProfileEnrollmentResult, VoiceProfileEnrollmentCancellationDetails } from \"./VoiceProfileEnrollmentResult.js\";\r\nexport { VoiceProfileResult, VoiceProfileCancellationDetails } from \"./VoiceProfileResult.js\";\r\nexport { VoiceProfilePhraseResult } from \"./VoiceProfilePhraseResult.js\";\r\nexport { VoiceProfileClient } from \"./VoiceProfileClient.js\";\r\nexport { SpeakerRecognizer } from \"./SpeakerRecognizer.js\";\r\nexport { SpeakerIdentificationModel } from \"./SpeakerIdentificationModel.js\";\r\nexport { SpeakerVerificationModel } from \"./SpeakerVerificationModel.js\";\r\nexport { AutoDetectSourceLanguageConfig } from \"./AutoDetectSourceLanguageConfig.js\";\r\nexport { AutoDetectSourceLanguageResult } from \"./AutoDetectSourceLanguageResult.js\";\r\nexport { SourceLanguageConfig } from \"./SourceLanguageConfig.js\";\r\nexport { SpeakerRecognitionResult, SpeakerRecognitionResultType, SpeakerRecognitionCancellationDetails } from \"./SpeakerRecognitionResult.js\";\r\nexport { Conversation,\r\n ConversationExpirationEventArgs,\r\n ConversationInfo,\r\n ConversationParticipantsChangedEventArgs,\r\n ConversationTranslationCanceledEventArgs,\r\n ConversationTranslationEventArgs,\r\n ConversationTranslationResult,\r\n ConversationTranslator,\r\n ConversationTranscriber,\r\n ConversationTranscriptionResult,\r\n Meeting,\r\n MeetingInfo,\r\n MeetingTranscriber,\r\n IParticipant,\r\n Participant,\r\n ParticipantChangedReason,\r\n User,\r\n VoiceSignature\r\n } from \"./Transcription/Exports.js\";\r\nexport { Synthesizer } from \"./Synthesizer.js\";\r\nexport { SpeechSynthesisOutputFormat } from \"./SpeechSynthesisOutputFormat.js\";\r\nexport { SpeechSynthesizer } from \"./SpeechSynthesizer.js\";\r\nexport { SynthesisResult } from \"./SynthesisResult.js\";\r\nexport { SpeechSynthesisResult } from \"./SpeechSynthesisResult.js\";\r\nexport { SpeechSynthesisEventArgs } from \"./SpeechSynthesisEventArgs.js\";\r\nexport { SpeechSynthesisWordBoundaryEventArgs } from \"./SpeechSynthesisWordBoundaryEventArgs.js\";\r\nexport { SpeechSynthesisBookmarkEventArgs } from \"./SpeechSynthesisBookmarkEventArgs.js\";\r\nexport { SpeechSynthesisVisemeEventArgs } from \"./SpeechSynthesisVisemeEventArgs.js\";\r\nexport { SpeechSynthesisBoundaryType } from \"./SpeechSynthesisBoundaryType.js\";\r\nexport { SynthesisVoicesResult } from \"./SynthesisVoicesResult.js\";\r\nexport { VoiceInfo } from \"./VoiceInfo.js\";\r\nexport { IPlayer } from \"./Audio/IPlayer.js\";\r\nexport { SpeakerAudioDestination } from \"./Audio/SpeakerAudioDestination.js\";\r\nexport { CancellationEventArgs } from \"./CancellationEventArgs.js\";\r\nexport { ConversationTranscriptionCanceledEventArgs } from \"./ConversationTranscriptionCanceledEventArgs.js\";\r\nexport { MeetingTranscriptionCanceledEventArgs } from \"./MeetingTranscriptionCanceledEventArgs.js\";\r\nexport { PronunciationAssessmentGradingSystem } from \"./PronunciationAssessmentGradingSystem.js\";\r\nexport { PronunciationAssessmentGranularity } from \"./PronunciationAssessmentGranularity.js\";\r\nexport { PronunciationAssessmentConfig } from \"./PronunciationAssessmentConfig.js\";\r\nexport { PronunciationAssessmentResult } from \"./PronunciationAssessmentResult.js\";\r\nexport { LanguageIdMode } from \"./LanguageIdMode.js\";\r\nexport { AvatarConfig } from \"./AvatarConfig.js\";\r\nexport { AvatarEventArgs } from \"./AvatarEventArgs.js\";\r\nexport { AvatarSynthesizer } from \"./AvatarSynthesizer.js\";\r\nexport { AvatarVideoFormat, Coordinate } from \"./AvatarVideoFormat.js\";\r\nexport { AvatarWebRTCConnectionResult } from \"./AvatarWebRTCConnectionResult.js\";\r\nexport { Diagnostics } from \"./Diagnostics.js\";\r\nexport { LogLevel } from \"./LogLevel.js\";\r\nexport { IVoiceJson } from \"./IVoiceJson.js\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { CancellationEventArgs } from \"./CancellationEventArgs.js\";\r\nimport { CancellationErrorCode, CancellationReason, IntentRecognitionEventArgs, IntentRecognitionResult } from \"./Exports.js\";\r\n\r\n/**\r\n * Define payload of intent recognition canceled result events.\r\n * @class IntentRecognitionCanceledEventArgs\r\n */\r\nexport class IntentRecognitionCanceledEventArgs extends IntentRecognitionEventArgs implements CancellationEventArgs {\r\n private privReason: CancellationReason;\r\n private privErrorDetails: string;\r\n private privErrorCode: CancellationErrorCode;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {CancellationReason} result - The result of the intent recognition.\r\n * @param {string} offset - The offset.\r\n * @param {IntentRecognitionResult} sessionId - The session id.\r\n */\r\n public constructor(\r\n reason: CancellationReason,\r\n errorDetails: string,\r\n errorCode: CancellationErrorCode,\r\n result?: IntentRecognitionResult,\r\n offset?: number,\r\n sessionId?: string) {\r\n super(result, offset, sessionId);\r\n\r\n this.privReason = reason;\r\n this.privErrorDetails = errorDetails;\r\n this.privErrorCode = errorCode;\r\n }\r\n\r\n /**\r\n * The reason the recognition was canceled.\r\n * @member IntentRecognitionCanceledEventArgs.prototype.reason\r\n * @function\r\n * @public\r\n * @returns {CancellationReason} Specifies the reason canceled.\r\n */\r\n public get reason(): CancellationReason {\r\n return this.privReason;\r\n }\r\n\r\n /**\r\n * The error code in case of an unsuccessful recognition.\r\n * Added in version 1.1.0.\r\n * @return An error code that represents the error reason.\r\n */\r\n public get errorCode(): CancellationErrorCode {\r\n return this.privErrorCode;\r\n }\r\n\r\n /**\r\n * In case of an unsuccessful recognition, provides details of the occurred error.\r\n * @member IntentRecognitionCanceledEventArgs.prototype.errorDetails\r\n * @function\r\n * @public\r\n * @returns {string} A String that represents the error details.\r\n */\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IntentRecognitionResult, RecognitionEventArgs } from \"./Exports.js\";\r\n\r\n/**\r\n * Intent recognition result event arguments.\r\n * @class\r\n */\r\nexport class IntentRecognitionEventArgs extends RecognitionEventArgs {\r\n private privResult: IntentRecognitionResult;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param result - The result of the intent recognition.\r\n * @param offset - The offset.\r\n * @param sessionId - The session id.\r\n */\r\n public constructor(result: IntentRecognitionResult, offset?: number, sessionId?: string) {\r\n super(offset, sessionId);\r\n\r\n this.privResult = result;\r\n }\r\n\r\n /**\r\n * Represents the intent recognition result.\r\n * @member IntentRecognitionEventArgs.prototype.result\r\n * @function\r\n * @public\r\n * @returns {IntentRecognitionResult} Represents the intent recognition result.\r\n */\r\n public get result(): IntentRecognitionResult {\r\n return this.privResult;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection, ResultReason, SpeechRecognitionResult } from \"./Exports.js\";\r\n\r\n/**\r\n * Intent recognition result.\r\n * @class\r\n */\r\nexport class IntentRecognitionResult extends SpeechRecognitionResult {\r\n private privIntentId: string;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param intentId - The intent id.\r\n * @param resultId - The result id.\r\n * @param reason - The reason.\r\n * @param text - The recognized text.\r\n * @param duration - The duration.\r\n * @param offset - The offset into the stream.\r\n * @param language - Primary Language detected, if provided.\r\n * @param languageDetectionConfidence - Primary Language confidence (\"Unknown,\" \"Low,\" \"Medium,\" \"High\"...), if provided.\r\n * @param errorDetails - Error details, if provided.\r\n * @param json - Additional Json, if provided.\r\n * @param properties - Additional properties, if provided.\r\n */\r\n public constructor(intentId?: string, resultId?: string, reason?: ResultReason, text?: string,\r\n duration?: number, offset?: number, language?: string, languageDetectionConfidence?: string,\r\n errorDetails?: string, json?: string, properties?: PropertyCollection) {\r\n super(resultId, reason, text, duration, offset, language, languageDetectionConfidence, undefined, errorDetails, json, properties);\r\n\r\n this.privIntentId = intentId;\r\n }\r\n\r\n /**\r\n * A String that represents the intent identifier being recognized.\r\n * @member IntentRecognitionResult.prototype.intentId\r\n * @function\r\n * @public\r\n * @returns {string} A String that represents the intent identifier being recognized.\r\n */\r\n public get intentId(): string {\r\n return this.privIntentId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n AddedLmIntent,\r\n IAuthentication,\r\n IConnectionFactory,\r\n IntentConnectionFactory,\r\n IntentServiceRecognizer,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeechServiceConfig\r\n} from \"../common.speech/Exports.js\";\r\nimport { marshalPromiseToCallbacks } from \"../common/Exports.js\";\r\nimport { AudioConfigImpl } from \"./Audio/AudioConfig.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport {\r\n AudioConfig,\r\n IntentRecognitionCanceledEventArgs,\r\n IntentRecognitionEventArgs,\r\n IntentRecognitionResult,\r\n KeywordRecognitionModel,\r\n LanguageUnderstandingModel,\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer,\r\n SpeechConfig,\r\n} from \"./Exports.js\";\r\nimport { LanguageUnderstandingModelImpl } from \"./LanguageUnderstandingModel.js\";\r\nimport { SpeechConfigImpl } from \"./SpeechConfig.js\";\r\n\r\n/**\r\n * Intent recognizer.\r\n * @class\r\n */\r\nexport class IntentRecognizer extends Recognizer {\r\n private privDisposedIntentRecognizer: boolean;\r\n private privAddedIntents: string[][];\r\n private privAddedLmIntents: { [id: string]: AddedLmIntent };\r\n private privUmbrellaIntent: AddedLmIntent;\r\n\r\n /**\r\n * Initializes an instance of the IntentRecognizer.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - The set of configuration properties.\r\n * @param {AudioConfig} audioConfig - An optional audio input config associated with the recognizer\r\n */\r\n public constructor(speechConfig: SpeechConfig, audioConfig?: AudioConfig) {\r\n Contracts.throwIfNullOrUndefined(speechConfig, \"speechConfig\");\r\n const configImpl: SpeechConfigImpl = speechConfig as SpeechConfigImpl;\r\n Contracts.throwIfNullOrUndefined(configImpl, \"speechConfig\");\r\n\r\n super(audioConfig, configImpl.properties, new IntentConnectionFactory());\r\n this.privAddedIntents = [];\r\n this.privAddedLmIntents = {};\r\n\r\n this.privDisposedIntentRecognizer = false;\r\n this.privProperties = configImpl.properties;\r\n\r\n Contracts.throwIfNullOrWhitespace(this.properties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage), PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n }\r\n\r\n /**\r\n * The event recognizing signals that an intermediate recognition result is received.\r\n * @member IntentRecognizer.prototype.recognizing\r\n * @function\r\n * @public\r\n */\r\n public recognizing: (sender: IntentRecognizer, event: IntentRecognitionEventArgs) => void;\r\n\r\n /**\r\n * The event recognized signals that a final recognition result is received.\r\n * @member IntentRecognizer.prototype.recognized\r\n * @function\r\n * @public\r\n */\r\n public recognized: (sender: IntentRecognizer, event: IntentRecognitionEventArgs) => void;\r\n\r\n /**\r\n * The event canceled signals that an error occurred during recognition.\r\n * @member IntentRecognizer.prototype.canceled\r\n * @function\r\n * @public\r\n */\r\n public canceled: (sender: IntentRecognizer, event: IntentRecognitionCanceledEventArgs) => void;\r\n\r\n /**\r\n * Gets the spoken language of recognition.\r\n * @member IntentRecognizer.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @returns {string} the spoken language of recognition.\r\n */\r\n public get speechRecognitionLanguage(): string {\r\n Contracts.throwIfDisposed(this.privDisposedIntentRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage);\r\n }\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member IntentRecognizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token used to communicate with the service.\r\n * Note: Please use a token derived from your LanguageUnderstanding subscription key for the Intent recognizer.\r\n * @member IntentRecognizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} value - Authorization token.\r\n */\r\n public set authorizationToken(value: string) {\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, value);\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this IntentRecognizer.\r\n * @member IntentRecognizer.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their\r\n * values defined for this IntentRecognizer.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * Starts intent recognition, and stops after the first utterance is recognized.\r\n * The task returns the recognition text and intent as result.\r\n * Note: RecognizeOnceAsync() returns when the first utterance has been recognized,\r\n * so it is suitable only for single shot recognition like command or query.\r\n * For long-running recognition, use StartContinuousRecognitionAsync() instead.\r\n * @member IntentRecognizer.prototype.recognizeOnceAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback that received the recognition has finished with an IntentRecognitionResult.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public recognizeOnceAsync(cb?: (e: IntentRecognitionResult) => void, err?: (e: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposedIntentRecognizer);\r\n\r\n if (Object.keys(this.privAddedLmIntents).length !== 0 || undefined !== this.privUmbrellaIntent) {\r\n const context: IIntentContext = this.buildSpeechContext();\r\n\r\n this.privReco.speechContext.setSection(\"intent\", context.Intent);\r\n this.privReco.dynamicGrammar.addReferenceGrammar(context.ReferenceGrammars);\r\n\r\n const intentReco: IntentServiceRecognizer = this.privReco as IntentServiceRecognizer;\r\n intentReco.setIntents(this.privAddedLmIntents, this.privUmbrellaIntent);\r\n }\r\n\r\n marshalPromiseToCallbacks(this.recognizeOnceAsyncImpl(RecognitionMode.Interactive), cb, err);\r\n }\r\n\r\n /**\r\n * Starts speech recognition, until stopContinuousRecognitionAsync() is called.\r\n * User must subscribe to events to receive recognition results.\r\n * @member IntentRecognizer.prototype.startContinuousRecognitionAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the recognition has started.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public startContinuousRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n if (Object.keys(this.privAddedLmIntents).length !== 0 || undefined !== this.privUmbrellaIntent) {\r\n const context: IIntentContext = this.buildSpeechContext();\r\n\r\n this.privReco.speechContext.setSection(\"intent\", context.Intent);\r\n this.privReco.dynamicGrammar.addReferenceGrammar(context.ReferenceGrammars);\r\n\r\n const intentReco: IntentServiceRecognizer = this.privReco as IntentServiceRecognizer;\r\n intentReco.setIntents(this.privAddedLmIntents, this.privUmbrellaIntent);\r\n }\r\n\r\n marshalPromiseToCallbacks(this.startContinuousRecognitionAsyncImpl(RecognitionMode.Conversation), cb, err);\r\n }\r\n\r\n /**\r\n * Stops continuous intent recognition.\r\n * @member IntentRecognizer.prototype.stopContinuousRecognitionAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the recognition has stopped.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public stopContinuousRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.stopContinuousRecognitionAsyncImpl(), cb, err);\r\n }\r\n\r\n /**\r\n * Starts speech recognition with keyword spotting, until stopKeywordRecognitionAsync() is called.\r\n * User must subscribe to events to receive recognition results.\r\n * Note: Key word spotting functionality is only available on the Speech Devices SDK.\r\n * This functionality is currently not included in the SDK itself.\r\n * @member IntentRecognizer.prototype.startKeywordRecognitionAsync\r\n * @function\r\n * @public\r\n * @param {KeywordRecognitionModel} model - The keyword recognition model that specifies the keyword to be recognized.\r\n * @param cb - Callback invoked once the recognition has started.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public startKeywordRecognitionAsync(model: KeywordRecognitionModel, cb?: () => void, err?: (e: string) => void): void {\r\n Contracts.throwIfNull(model, \"model\");\r\n\r\n if (!!err) {\r\n err(\"Not yet implemented.\");\r\n }\r\n }\r\n\r\n /**\r\n * Stops continuous speech recognition.\r\n * Note: Key word spotting functionality is only available on the Speech Devices SDK.\r\n * This functionality is currently not included in the SDK itself.\r\n * @member IntentRecognizer.prototype.stopKeywordRecognitionAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the recognition has stopped.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public stopKeywordRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n if (!!cb) {\r\n try {\r\n cb();\r\n } catch (e) {\r\n if (!!err) {\r\n err(e as string);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Adds a phrase that should be recognized as intent.\r\n * @member IntentRecognizer.prototype.addIntent\r\n * @function\r\n * @public\r\n * @param {string} intentId - A String that represents the identifier of the intent to be recognized.\r\n * @param {string} phrase - A String that specifies the phrase representing the intent.\r\n */\r\n public addIntent(simplePhrase: string, intentId?: string): void {\r\n Contracts.throwIfDisposed(this.privDisposedIntentRecognizer);\r\n Contracts.throwIfNullOrWhitespace(intentId, \"intentId\");\r\n Contracts.throwIfNullOrWhitespace(simplePhrase, \"simplePhrase\");\r\n\r\n this.privAddedIntents.push([intentId, simplePhrase]);\r\n }\r\n\r\n /**\r\n * Adds an intent from Language Understanding service for recognition.\r\n * @member IntentRecognizer.prototype.addIntentWithLanguageModel\r\n * @function\r\n * @public\r\n * @param {string} intentId - A String that represents the identifier of the intent\r\n * to be recognized. Ignored if intentName is empty.\r\n * @param {string} model - The intent model from Language Understanding service.\r\n * @param {string} intentName - The intent name defined in the intent model. If it\r\n * is empty, all intent names defined in the model will be added.\r\n */\r\n public addIntentWithLanguageModel(intentId: string, model: LanguageUnderstandingModel, intentName?: string): void {\r\n Contracts.throwIfDisposed(this.privDisposedIntentRecognizer);\r\n Contracts.throwIfNullOrWhitespace(intentId, \"intentId\");\r\n Contracts.throwIfNull(model, \"model\");\r\n\r\n const modelImpl: LanguageUnderstandingModelImpl = model as LanguageUnderstandingModelImpl;\r\n Contracts.throwIfNullOrWhitespace(modelImpl.appId, \"model.appId\");\r\n\r\n this.privAddedLmIntents[intentId] = new AddedLmIntent(modelImpl, intentName);\r\n }\r\n\r\n /**\r\n * @summary Adds all intents from the specified Language Understanding Model.\r\n * @member IntentRecognizer.prototype.addAllIntents\r\n * @function\r\n * @public\r\n * @function\r\n * @public\r\n * @param {LanguageUnderstandingModel} model - The language understanding model containing the intents.\r\n * @param {string} intentId - A custom id String to be returned in the IntentRecognitionResult's getIntentId() method.\r\n */\r\n public addAllIntents(model: LanguageUnderstandingModel, intentId?: string): void {\r\n Contracts.throwIfNull(model, \"model\");\r\n\r\n const modelImpl: LanguageUnderstandingModelImpl = model as LanguageUnderstandingModelImpl;\r\n Contracts.throwIfNullOrWhitespace(modelImpl.appId, \"model.appId\");\r\n\r\n this.privUmbrellaIntent = new AddedLmIntent(modelImpl, intentId);\r\n }\r\n\r\n /**\r\n * closes all external resources held by an instance of this class.\r\n * @member IntentRecognizer.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, errorCb?: (error: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposedIntentRecognizer);\r\n\r\n marshalPromiseToCallbacks(this.dispose(true), cb, errorCb);\r\n }\r\n\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(speechConfig, this.privProperties);\r\n }\r\n\r\n protected createServiceRecognizer(authentication: IAuthentication, connectionFactory: IConnectionFactory, audioConfig: AudioConfig, recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n const audioImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n return new IntentServiceRecognizer(authentication, connectionFactory, audioImpl, recognizerConfig, this);\r\n }\r\n\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposedIntentRecognizer) {\r\n return;\r\n }\r\n\r\n if (disposing) {\r\n this.privDisposedIntentRecognizer = true;\r\n await super.dispose(disposing);\r\n }\r\n }\r\n\r\n private buildSpeechContext(): IIntentContext {\r\n let appId: string;\r\n let region: string;\r\n let subscriptionKey: string;\r\n const refGrammers: string[] = [];\r\n\r\n if (undefined !== this.privUmbrellaIntent) {\r\n appId = this.privUmbrellaIntent.modelImpl.appId;\r\n region = this.privUmbrellaIntent.modelImpl.region;\r\n subscriptionKey = this.privUmbrellaIntent.modelImpl.subscriptionKey;\r\n }\r\n\r\n // Build the reference grammer array.\r\n for (const intentId of Object.keys(this.privAddedLmIntents)) {\r\n const addedLmIntent: AddedLmIntent = this.privAddedLmIntents[intentId];\r\n\r\n // validate all the same model, region, and key...\r\n if (appId === undefined) {\r\n appId = addedLmIntent.modelImpl.appId;\r\n } else {\r\n if (appId !== addedLmIntent.modelImpl.appId) {\r\n throw new Error(\"Intents must all be from the same LUIS model\");\r\n }\r\n }\r\n\r\n if (region === undefined) {\r\n region = addedLmIntent.modelImpl.region;\r\n } else {\r\n if (region !== addedLmIntent.modelImpl.region) {\r\n throw new Error(\"Intents must all be from the same LUIS model in a single region\");\r\n }\r\n }\r\n\r\n if (subscriptionKey === undefined) {\r\n subscriptionKey = addedLmIntent.modelImpl.subscriptionKey;\r\n } else {\r\n if (subscriptionKey !== addedLmIntent.modelImpl.subscriptionKey) {\r\n throw new Error(\"Intents must all use the same subscription key\");\r\n }\r\n }\r\n\r\n const grammer: string = \"luis/\" + appId + \"-PRODUCTION#\" + intentId;\r\n refGrammers.push(grammer);\r\n }\r\n\r\n return {\r\n Intent: {\r\n id: appId,\r\n key: (subscriptionKey === undefined) ? this.privProperties.getProperty(PropertyId[PropertyId.SpeechServiceConnection_Key]) : subscriptionKey,\r\n provider: \"LUIS\",\r\n },\r\n ReferenceGrammars: (undefined === this.privUmbrellaIntent) ? refGrammers : [\"luis/\" + appId + \"-PRODUCTION\"],\r\n };\r\n }\r\n}\r\n\r\ninterface IIntentContext {\r\n Intent: {\r\n id: string;\r\n key: string;\r\n provider: string;\r\n };\r\n ReferenceGrammars: string[];\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts.js\";\r\n\r\n/**\r\n * Represents a keyword recognition model for recognizing when\r\n * the user says a keyword to initiate further speech recognition.\r\n * @class KeywordRecognitionModel\r\n */\r\nexport class KeywordRecognitionModel {\r\n private privDisposed: boolean = false;\r\n\r\n /**\r\n * Create and initializes a new instance.\r\n * @constructor\r\n */\r\n private constructor() {\r\n return;\r\n }\r\n\r\n /**\r\n * Creates a keyword recognition model using the specified filename.\r\n * @member KeywordRecognitionModel.fromFile\r\n * @function\r\n * @public\r\n * @param {string} fileName - A string that represents file name for the keyword recognition model.\r\n * Note, the file can point to a zip file in which case the model\r\n * will be extracted from the zip.\r\n * @returns {KeywordRecognitionModel} The keyword recognition model being created.\r\n */\r\n public static fromFile(fileName: string): KeywordRecognitionModel {\r\n Contracts.throwIfFileDoesNotExist(fileName, \"fileName\");\r\n\r\n throw new Error(\"Not yet implemented.\");\r\n }\r\n\r\n /**\r\n * Creates a keyword recognition model using the specified filename.\r\n * @member KeywordRecognitionModel.fromStream\r\n * @function\r\n * @public\r\n * @param {string} file - A File that represents file for the keyword recognition model.\r\n * Note, the file can point to a zip file in which case the model will be extracted from the zip.\r\n * @returns {KeywordRecognitionModel} The keyword recognition model being created.\r\n */\r\n public static fromStream(file: File): KeywordRecognitionModel {\r\n Contracts.throwIfNull(file, \"file\");\r\n\r\n throw new Error(\"Not yet implemented.\");\r\n }\r\n\r\n /**\r\n * Dispose of associated resources.\r\n * @member KeywordRecognitionModel.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(): void {\r\n if (this.privDisposed) {\r\n return;\r\n }\r\n\r\n this.privDisposed = true;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Language Identification mode\r\n * @class LanguageIdMode\r\n */\r\nexport enum LanguageIdMode {\r\n\r\n /**\r\n * Detect language at audio start\r\n * @member LanguageIdMode.AtStart\r\n */\r\n AtStart,\r\n\r\n /**\r\n * Continuously detect language\r\n * @member LanguageIdMode.Continuous\r\n */\r\n Continuous,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nimport { Contracts } from \"./Contracts.js\";\r\n\r\n/**\r\n * Language understanding model\r\n * @class LanguageUnderstandingModel\r\n */\r\nexport class LanguageUnderstandingModel {\r\n /**\r\n * Creates and initializes a new instance\r\n * @constructor\r\n */\r\n protected constructor() {\r\n return;\r\n }\r\n\r\n /**\r\n * Creates an language understanding model using the specified endpoint.\r\n * @member LanguageUnderstandingModel.fromEndpoint\r\n * @function\r\n * @public\r\n * @param {URL} uri - A String that represents the endpoint of the language understanding model.\r\n * @returns {LanguageUnderstandingModel} The language understanding model being created.\r\n */\r\n public static fromEndpoint(uri: URL): LanguageUnderstandingModel {\r\n Contracts.throwIfNull(uri, \"uri\");\r\n Contracts.throwIfNullOrWhitespace(uri.hostname, \"uri\");\r\n\r\n const langModelImp: LanguageUnderstandingModelImpl = new LanguageUnderstandingModelImpl();\r\n // Need to extract the app ID from the URL.\r\n // URL is in the format: https://.api.cognitive.microsoft.com/luis/v2.0/apps/?subscription-key=&timezoneOffset=-360\r\n\r\n // Start tearing the string apart.\r\n\r\n // region can be extracted from the host name.\r\n const firstDot: number = uri.host.indexOf(\".\");\r\n if (-1 === firstDot) {\r\n throw new Error(\"Could not determine region from endpoint\");\r\n }\r\n langModelImp.region = uri.host.substr(0, firstDot);\r\n\r\n // Now the app ID.\r\n\r\n const lastSegment: number = uri.pathname.lastIndexOf(\"/\") + 1;\r\n if (-1 === lastSegment) {\r\n throw new Error(\"Could not determine appId from endpoint\");\r\n }\r\n\r\n langModelImp.appId = uri.pathname.substr(lastSegment);\r\n\r\n // And finally the key.\r\n langModelImp.subscriptionKey = uri.searchParams.get(\"subscription-key\");\r\n if (undefined === langModelImp.subscriptionKey) {\r\n throw new Error(\"Could not determine subscription key from endpoint\");\r\n }\r\n\r\n return langModelImp;\r\n }\r\n\r\n /**\r\n * Creates an language understanding model using the application id of Language Understanding service.\r\n * @member LanguageUnderstandingModel.fromAppId\r\n * @function\r\n * @public\r\n * @param {string} appId - A String that represents the application id of Language Understanding service.\r\n * @returns {LanguageUnderstandingModel} The language understanding model being created.\r\n */\r\n public static fromAppId(appId: string): LanguageUnderstandingModel {\r\n Contracts.throwIfNullOrWhitespace(appId, \"appId\");\r\n\r\n const langModelImp: LanguageUnderstandingModelImpl = new LanguageUnderstandingModelImpl();\r\n langModelImp.appId = appId;\r\n return langModelImp;\r\n }\r\n\r\n /**\r\n * Creates a language understanding model using hostname, subscription key and application\r\n * id of Language Understanding service.\r\n * @member LanguageUnderstandingModel.fromSubscription\r\n * @function\r\n * @public\r\n * @param {string} subscriptionKey - A String that represents the subscription key of\r\n * Language Understanding service.\r\n * @param {string} appId - A String that represents the application id of Language\r\n * Understanding service.\r\n * @param {LanguageUnderstandingModel} region - A String that represents the region\r\n * of the Language Understanding service (see the region page).\r\n * @returns {LanguageUnderstandingModel} The language understanding model being created.\r\n */\r\n public static fromSubscription(subscriptionKey: string, appId: string, region: string): LanguageUnderstandingModel {\r\n Contracts.throwIfNullOrWhitespace(subscriptionKey, \"subscriptionKey\");\r\n Contracts.throwIfNullOrWhitespace(appId, \"appId\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const langModelImp: LanguageUnderstandingModelImpl = new LanguageUnderstandingModelImpl();\r\n langModelImp.appId = appId;\r\n langModelImp.region = region;\r\n langModelImp.subscriptionKey = subscriptionKey;\r\n return langModelImp;\r\n }\r\n}\r\n\r\n/**\r\n * @private\r\n * @class LanguageUnderstandingModelImpl\r\n */\r\nexport class LanguageUnderstandingModelImpl extends LanguageUnderstandingModel {\r\n public appId: string;\r\n public region: string;\r\n public subscriptionKey: string;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { EventType } from \"../common/Exports.js\";\r\n\r\n/**\r\n * Define event severity types for setting logging output.\r\n * @class LogLevel\r\n */\r\n\r\nexport { EventType as LogLevel };\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n CancellationEventArgsBase,\r\n} from \"./CancellationEventArgsBase.js\";\r\n\r\n/**\r\n * Defines content of a MeetingTranscriptionCanceledEvent.\r\n * @class MeetingTranscriptionCanceledEventArgs\r\n */\r\nexport class MeetingTranscriptionCanceledEventArgs extends CancellationEventArgsBase {\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { RecognitionStatus, SimpleSpeechPhrase } from \"../../src/common.speech/Exports.js\";\r\nimport { IntentRecognitionResult, NoMatchReason, SpeechRecognitionResult, TranslationRecognitionResult } from \"./Exports.js\";\r\n\r\n/**\r\n * Contains detailed information for NoMatch recognition results.\r\n * @class NoMatchDetails\r\n */\r\nexport class NoMatchDetails {\r\n private privReason: NoMatchReason;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {NoMatchReason} reason - The no-match reason.\r\n */\r\n private constructor(reason: NoMatchReason) {\r\n this.privReason = reason;\r\n }\r\n\r\n /**\r\n * Creates an instance of NoMatchDetails object for the NoMatch SpeechRecognitionResults.\r\n * @member NoMatchDetails.fromResult\r\n * @function\r\n * @public\r\n * @param {SpeechRecognitionResult | IntentRecognitionResult | TranslationRecognitionResult}\r\n * result - The recognition result that was not recognized.\r\n * @returns {NoMatchDetails} The no match details object being created.\r\n */\r\n public static fromResult(result: SpeechRecognitionResult | IntentRecognitionResult | TranslationRecognitionResult): NoMatchDetails {\r\n const simpleSpeech: SimpleSpeechPhrase = SimpleSpeechPhrase.fromJSON(result.json);\r\n\r\n let reason: NoMatchReason = NoMatchReason.NotRecognized;\r\n\r\n switch (simpleSpeech.RecognitionStatus) {\r\n case RecognitionStatus.BabbleTimeout:\r\n reason = NoMatchReason.InitialBabbleTimeout;\r\n break;\r\n case RecognitionStatus.InitialSilenceTimeout:\r\n reason = NoMatchReason.InitialSilenceTimeout;\r\n break;\r\n default:\r\n reason = NoMatchReason.NotRecognized;\r\n break;\r\n }\r\n\r\n return new NoMatchDetails(reason);\r\n }\r\n\r\n /**\r\n * The reason the recognition was canceled.\r\n * @member NoMatchDetails.prototype.reason\r\n * @function\r\n * @public\r\n * @returns {NoMatchReason} Specifies the reason canceled.\r\n */\r\n public get reason(): NoMatchReason {\r\n return this.privReason;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines the possible reasons a recognition result might not be recognized.\r\n * @class NoMatchReason\r\n */\r\nexport enum NoMatchReason {\r\n\r\n /**\r\n * Indicates that speech was detected, but not recognized.\r\n * @member NoMatchReason.NotRecognized\r\n */\r\n NotRecognized,\r\n\r\n /**\r\n * Indicates that the start of the audio stream contained only silence,\r\n * and the service timed out waiting for speech.\r\n * @member NoMatchReason.InitialSilenceTimeout\r\n */\r\n InitialSilenceTimeout,\r\n\r\n /**\r\n * Indicates that the start of the audio stream contained only noise,\r\n * and the service timed out waiting for speech.\r\n * @member NoMatchReason.InitialBabbleTimeout\r\n */\r\n InitialBabbleTimeout,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Define Speech Recognizer output formats.\r\n * @class OutputFormat\r\n */\r\nexport enum OutputFormat {\r\n /**\r\n * @member OutputFormat.Simple\r\n */\r\n Simple = 0,\r\n\r\n /**\r\n * @member OutputFormat.Detailed\r\n */\r\n Detailed,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n DynamicGrammarBuilder,\r\n ServiceRecognizerBase,\r\n} from \"../common.speech/Exports.js\";\r\nimport {\r\n ConversationTranscriber,\r\n MeetingTranscriber,\r\n Recognizer\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Allows additions of new phrases to improve speech recognition.\r\n *\r\n * Phrases added to the recognizer are effective at the start of the next recognition, or the next time the SpeechSDK must reconnect\r\n * to the speech service.\r\n */\r\nexport class PhraseListGrammar {\r\n private privGrammerBuilder: DynamicGrammarBuilder;\r\n\r\n private constructor(recogBase: ServiceRecognizerBase) {\r\n this.privGrammerBuilder = recogBase.dynamicGrammar;\r\n }\r\n\r\n /**\r\n * Creates a PhraseListGrammar from a given speech recognizer. Will accept any recognizer that derives from @class Recognizer.\r\n * @param recognizer The recognizer to add phrase lists to.\r\n */\r\n public static fromRecognizer(recognizer: Recognizer | ConversationTranscriber | MeetingTranscriber): PhraseListGrammar {\r\n const recoBase = recognizer.internalData as ServiceRecognizerBase;\r\n return new PhraseListGrammar(recoBase);\r\n }\r\n\r\n /**\r\n * Adds a single phrase to the current recognizer.\r\n * @param phrase Phrase to add.\r\n */\r\n public addPhrase(phrase: string): void {\r\n this.privGrammerBuilder.addPhrase(phrase);\r\n }\r\n\r\n /**\r\n * Adds multiple phrases to the current recognizer.\r\n * @param phrases Array of phrases to add.\r\n */\r\n public addPhrases(phrases: string[]): void {\r\n this.privGrammerBuilder.addPhrase(phrases);\r\n }\r\n\r\n /**\r\n * Clears all phrases added to the current recognizer.\r\n */\r\n public clear(): void {\r\n this.privGrammerBuilder.clearPhrases();\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Profanity option.\r\n * Added in version 1.7.0.\r\n */\r\nexport enum ProfanityOption {\r\n Masked = 0,\r\n Removed = 1,\r\n Raw = 2\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ServiceRecognizerBase } from \"../common.speech/ServiceRecognizerBase.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport {\r\n PronunciationAssessmentGradingSystem,\r\n PronunciationAssessmentGranularity,\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer\r\n} from \"./Exports.js\";\r\n\r\ninterface PronunciationAssessmentJSON {\r\n referenceText: string;\r\n gradingSystem: string;\r\n granularity: string;\r\n phonemeAlphabet: string;\r\n nbestPhonemeCount: number;\r\n dimension: string;\r\n enableMiscue: boolean;\r\n enableProsodyAssessment: boolean;\r\n}\r\n\r\n/**\r\n * Pronunciation assessment configuration.\r\n * @class PronunciationAssessmentConfig\r\n * Added in version 1.15.0.\r\n */\r\nexport class PronunciationAssessmentConfig {\r\n private privProperties: PropertyCollection;\r\n private privPhonemeAlphabet: string;\r\n private privNBestPhonemeCount: number;\r\n private privEnableProsodyAssessment: boolean;\r\n private privContentAssessmentTopic: string;\r\n\r\n /**\r\n * PronunciationAssessmentConfig constructor.\r\n * @constructor\r\n * @param {string} referenceText\r\n * @param gradingSystem\r\n * @param granularity\r\n * @param enableMiscue\r\n */\r\n public constructor(referenceText: string,\r\n gradingSystem: PronunciationAssessmentGradingSystem = PronunciationAssessmentGradingSystem.FivePoint,\r\n granularity: PronunciationAssessmentGranularity = PronunciationAssessmentGranularity.Phoneme,\r\n enableMiscue: boolean = false) {\r\n Contracts.throwIfNullOrUndefined(referenceText, \"referenceText\");\r\n this.privProperties = new PropertyCollection();\r\n this.privProperties.setProperty(PropertyId.PronunciationAssessment_ReferenceText, referenceText);\r\n this.privProperties.setProperty(PropertyId.PronunciationAssessment_GradingSystem, PronunciationAssessmentGradingSystem[gradingSystem]);\r\n this.privProperties.setProperty(PropertyId.PronunciationAssessment_Granularity, PronunciationAssessmentGranularity[granularity]);\r\n this.privProperties.setProperty(PropertyId.PronunciationAssessment_EnableMiscue, String(enableMiscue));\r\n }\r\n\r\n /**\r\n * @member PronunciationAssessmentConfig.fromJSON\r\n * @function\r\n * @public\r\n * @param {string} json The json string containing the pronunciation assessment parameters.\r\n * @return {PronunciationAssessmentConfig} Instance of PronunciationAssessmentConfig\r\n * @summary Creates an instance of the PronunciationAssessmentConfig from json.\r\n * This method is designed to support the pronunciation assessment parameters still in preview.\r\n * Under normal circumstances, use the constructor instead.\r\n */\r\n public static fromJSON(json: string): PronunciationAssessmentConfig {\r\n Contracts.throwIfNullOrUndefined(json, \"json\");\r\n const config = new PronunciationAssessmentConfig(\"\");\r\n config.privProperties = new PropertyCollection();\r\n config.properties.setProperty(PropertyId.PronunciationAssessment_Json, json);\r\n return config;\r\n }\r\n\r\n public toJSON(): string {\r\n this.updateJson();\r\n return this.privProperties.getProperty(PropertyId.PronunciationAssessment_Params);\r\n }\r\n\r\n public applyTo(recognizer: Recognizer): void {\r\n this.updateJson();\r\n const recoBase = recognizer.internalData as ServiceRecognizerBase;\r\n recoBase.expectContentAssessmentResponse = !!this.privContentAssessmentTopic;\r\n recoBase.speechContext.setPronunciationAssessmentParams(\r\n this.properties.getProperty(PropertyId.PronunciationAssessment_Params),\r\n this.privContentAssessmentTopic,\r\n recoBase.isSpeakerDiarizationEnabled);\r\n }\r\n\r\n /**\r\n * Gets the reference text.\r\n * @member PronunciationAssessmentConfig.prototype.referenceText\r\n * @function\r\n * @public\r\n * @returns {string} Reference text.\r\n */\r\n public get referenceText(): string {\r\n return this.properties.getProperty(PropertyId.PronunciationAssessment_ReferenceText);\r\n }\r\n\r\n /**\r\n * Gets/Sets the reference text.\r\n * @member PronunciationAssessmentConfig.prototype.referenceText\r\n * @function\r\n * @public\r\n * @param {string} referenceText - Reference text.\r\n */\r\n public set referenceText(referenceText: string) {\r\n Contracts.throwIfNullOrWhitespace(referenceText, \"referenceText\");\r\n this.properties.setProperty(PropertyId.PronunciationAssessment_ReferenceText, referenceText);\r\n }\r\n\r\n /**\r\n * Sets the phoneme alphabet.\r\n * The valid values are \"SAPI\" (default) and \"IPA\".\r\n * Added in version 1.20.0\r\n * @member PronunciationAssessmentConfig.prototype.phonemeAlphabet\r\n * @function\r\n * @public\r\n * @param {string} phonemeAlphabet - Phoneme alphabet.\r\n */\r\n public set phonemeAlphabet(phonemeAlphabet: string) {\r\n Contracts.throwIfNullOrWhitespace(phonemeAlphabet, \"phonemeAlphabet\");\r\n this.privPhonemeAlphabet = phonemeAlphabet;\r\n }\r\n\r\n /**\r\n * Sets the boolean enableMiscue property.\r\n * Added in version 1.26.0\r\n * @member PronunciationAssessmentConfig.prototype.enableMiscue\r\n * @function\r\n * @public\r\n * @param {boolean} enableMiscue - enable miscue.\r\n */\r\n public set enableMiscue(enableMiscue: boolean) {\r\n const enableMiscueString = enableMiscue ? \"true\" : \"false\";\r\n this.properties.setProperty(PropertyId.PronunciationAssessment_EnableMiscue, enableMiscueString);\r\n }\r\n\r\n /**\r\n * Gets the boolean enableMiscue property.\r\n * Added in version 1.26.0\r\n * @member PronunciationAssessmentConfig.prototype.enableMiscue\r\n * @function\r\n * @public\r\n * @return {boolean} enableMiscue - enable miscue.\r\n */\r\n public get enableMiscue(): boolean {\r\n const enableMiscueString = this.properties.getProperty(PropertyId.PronunciationAssessment_EnableMiscue, \"false\");\r\n return (enableMiscueString.toLowerCase() === \"true\");\r\n }\r\n\r\n /**\r\n * Sets the nbest phoneme count\r\n * Added in version 1.20.0\r\n * @member PronunciationAssessmentConfig.prototype.nbestPhonemeCount\r\n * @function\r\n * @public\r\n * @param {number} nbestPhonemeCount - NBest phoneme count.\r\n */\r\n public set nbestPhonemeCount(nbestPhonemeCount: number) {\r\n this.privNBestPhonemeCount = nbestPhonemeCount;\r\n }\r\n\r\n /**\r\n * Enables the prosody assessment.\r\n * Added in version 1.34.0\r\n * @member PronunciationAssessmentConfig.prototype.enableProsodyAssessment\r\n * @function\r\n * @public\r\n * @param {boolean} enableProsodyAssessment - enable prosody assessment.\r\n */\r\n public set enableProsodyAssessment(enableProsodyAssessment: boolean) {\r\n this.privEnableProsodyAssessment = enableProsodyAssessment;\r\n }\r\n\r\n /**\r\n * Enables content assessment and sets the topic.\r\n * Added in version 1.34.0\r\n * @member PronunciationAssessmentConfig.prototype.enableContentAssessmentWithTopic\r\n * @function\r\n * @public\r\n * @param {string} topic - Topic for content assessment.\r\n */\r\n public enableContentAssessmentWithTopic(topic: string): void {\r\n this.privContentAssessmentTopic = topic;\r\n }\r\n\r\n /**\r\n * @member PronunciationAssessmentConfig.prototype.properties\r\n * @function\r\n * @public\r\n * @return {PropertyCollection} Properties of the config.\r\n * @summary Gets a pronunciation assessment config properties\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n private updateJson(): void {\r\n const jsonString = this.privProperties.getProperty(PropertyId.PronunciationAssessment_Json, \"{}\");\r\n const paramsJson: PronunciationAssessmentJSON = JSON.parse(jsonString) as PronunciationAssessmentJSON;\r\n\r\n const referenceText = this.privProperties.getProperty(PropertyId.PronunciationAssessment_ReferenceText);\r\n if (referenceText) {\r\n paramsJson.referenceText = referenceText;\r\n }\r\n\r\n const gradingSystem = this.privProperties.getProperty(PropertyId.PronunciationAssessment_GradingSystem);\r\n if (gradingSystem) {\r\n paramsJson.gradingSystem = gradingSystem;\r\n }\r\n\r\n const granularity = this.privProperties.getProperty(PropertyId.PronunciationAssessment_Granularity);\r\n if (granularity) {\r\n paramsJson.granularity = granularity;\r\n }\r\n\r\n if (this.privPhonemeAlphabet) {\r\n paramsJson.phonemeAlphabet = this.privPhonemeAlphabet;\r\n }\r\n\r\n if (this.privNBestPhonemeCount) {\r\n paramsJson.nbestPhonemeCount = this.privNBestPhonemeCount;\r\n }\r\n\r\n paramsJson.enableProsodyAssessment = this.privEnableProsodyAssessment;\r\n\r\n // always set dimension to Comprehensive\r\n paramsJson.dimension = \"Comprehensive\";\r\n\r\n const enableMiscueString = this.privProperties.getProperty(PropertyId.PronunciationAssessment_EnableMiscue);\r\n if (enableMiscueString) {\r\n paramsJson.enableMiscue = this.enableMiscue;\r\n }\r\n\r\n this.privProperties.setProperty(PropertyId.PronunciationAssessment_Params, JSON.stringify(paramsJson));\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines the point system for pronunciation score calibration; default value is FivePoint.\r\n * Added in version 1.15.0\r\n * @class PronunciationAssessmentGradingSystem\r\n */\r\nexport enum PronunciationAssessmentGradingSystem {\r\n /**\r\n * Five point calibration\r\n * @member PronunciationAssessmentGradingSystem.FivePoint\r\n */\r\n FivePoint = 1,\r\n\r\n /**\r\n * Hundred mark\r\n * @member PronunciationAssessmentGradingSystem.HundredMark\r\n */\r\n HundredMark,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines the pronunciation evaluation granularity; default value is Phoneme.\r\n * Added in version 1.15.0\r\n * @class PronunciationAssessmentGranularity\r\n */\r\nexport enum PronunciationAssessmentGranularity {\r\n /**\r\n * Shows the score on the full text, word and phoneme level\r\n * @member PronunciationAssessmentGranularity.Phoneme\r\n */\r\n Phoneme = 1,\r\n\r\n /**\r\n * Shows the score on the full text and word level\r\n * @member PronunciationAssessmentGranularity.Word\r\n */\r\n Word,\r\n\r\n /**\r\n * Shows the score on the full text level only\r\n * @member PronunciationAssessmentGranularity.FullText\r\n */\r\n FullText,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {Contracts} from \"./Contracts.js\";\r\nimport {\r\n PropertyId,\r\n RecognitionResult\r\n} from \"./Exports.js\";\r\n\r\ninterface AssessmentResult {\r\n NBest: DetailResult[];\r\n}\r\n\r\ninterface DetailResult {\r\n Words: WordResult[];\r\n PronunciationAssessment: {\r\n AccuracyScore: number;\r\n CompletenessScore: number;\r\n FluencyScore: number;\r\n PronScore: number;\r\n ProsodyScore: number;\r\n };\r\n ContentAssessment: {\r\n GrammarScore: number;\r\n VocabularyScore: number;\r\n TopicScore: number;\r\n };\r\n}\r\n\r\ninterface WordResult {\r\n Word: string;\r\n Phonemes: {\r\n Phoneme?: string;\r\n PronunciationAssessment?: {\r\n NBestPhonemes: { Phoneme: string }[];\r\n };\r\n }[];\r\n PronunciationAssessment?: {\r\n AccuracyScore: number;\r\n ErrorType: string;\r\n };\r\n Syllables: { Syllable: string }[];\r\n}\r\n\r\nexport class ContentAssessmentResult {\r\n private privPronJson: DetailResult;\r\n\r\n /**\r\n * @Internal\r\n * Do not use externally.\r\n */\r\n public constructor(detailResult: DetailResult) {\r\n this.privPronJson = detailResult;\r\n }\r\n\r\n /**\r\n * Correctness in using grammar and variety of sentence patterns.\r\n * Grammatical errors are jointly evaluated by lexical accuracy,\r\n * grammatical accuracy and diversity of sentence structures.\r\n * @member ContentAssessmentResult.prototype.grammarScore\r\n * @function\r\n * @public\r\n * @returns {number} Grammar score.\r\n */\r\n public get grammarScore(): number {\r\n return this.privPronJson.ContentAssessment.GrammarScore;\r\n }\r\n\r\n /**\r\n * Proficiency in lexical usage. It evaluates the speaker's effective usage\r\n * of words and their appropriateness within the given context to express\r\n * ideas accurately, as well as level of lexical complexity.\r\n * @member ContentAssessmentResult.prototype.vocabularyScore\r\n * @function\r\n * @public\r\n * @returns {number} Vocabulary score.\r\n */\r\n public get vocabularyScore(): number {\r\n return this.privPronJson.ContentAssessment.VocabularyScore;\r\n }\r\n\r\n /**\r\n * Level of understanding and engagement with the topic, which provides\r\n * insights into the speaker’s ability to express their thoughts and ideas\r\n * effectively and the ability to engage with the topic.\r\n * @member ContentAssessmentResult.prototype.topicScore\r\n * @function\r\n * @public\r\n * @returns {number} Topic score.\r\n */\r\n public get topicScore(): number {\r\n return this.privPronJson.ContentAssessment.TopicScore;\r\n }\r\n}\r\n\r\n/**\r\n * Pronunciation assessment results.\r\n * @class PronunciationAssessmentResult\r\n * Added in version 1.15.0.\r\n */\r\nexport class PronunciationAssessmentResult {\r\n private privPronJson: DetailResult;\r\n\r\n private constructor(jsonString: string) {\r\n const j = JSON.parse(jsonString) as AssessmentResult;\r\n Contracts.throwIfNullOrUndefined(j.NBest[0], \"NBest\");\r\n this.privPronJson = j.NBest[0];\r\n }\r\n\r\n /**\r\n * @member PronunciationAssessmentResult.fromResult\r\n * @function\r\n * @public\r\n * @param {RecognitionResult} result The recognition result.\r\n * @return {PronunciationAssessmentConfig} Instance of PronunciationAssessmentConfig\r\n * @summary Creates an instance of the PronunciationAssessmentResult from recognition result.\r\n */\r\n public static fromResult(result: RecognitionResult): PronunciationAssessmentResult {\r\n Contracts.throwIfNullOrUndefined(result, \"result\");\r\n const json: string = result.properties.getProperty(PropertyId.SpeechServiceResponse_JsonResult);\r\n Contracts.throwIfNullOrUndefined(json, \"json\");\r\n return new PronunciationAssessmentResult(json);\r\n }\r\n\r\n /**\r\n * Gets the detail result of pronunciation assessment.\r\n * @member PronunciationAssessmentConfig.prototype.detailResult\r\n * @function\r\n * @public\r\n * @returns {DetailResult} detail result.\r\n */\r\n public get detailResult(): DetailResult {\r\n return this.privPronJson;\r\n }\r\n\r\n /**\r\n * The score indicating the pronunciation accuracy of the given speech, which indicates\r\n * how closely the phonemes match a native speaker's pronunciation.\r\n * @member PronunciationAssessmentResult.prototype.accuracyScore\r\n * @function\r\n * @public\r\n * @returns {number} Accuracy score.\r\n */\r\n public get accuracyScore(): number {\r\n return this.detailResult.PronunciationAssessment?.AccuracyScore;\r\n }\r\n\r\n /**\r\n * The overall score indicating the pronunciation quality of the given speech.\r\n * This is calculated from AccuracyScore, FluencyScore and CompletenessScore with weight.\r\n * @member PronunciationAssessmentResult.prototype.pronunciationScore\r\n * @function\r\n * @public\r\n * @returns {number} Pronunciation score.\r\n */\r\n public get pronunciationScore(): number {\r\n return this.detailResult.PronunciationAssessment?.PronScore;\r\n }\r\n\r\n /**\r\n * The score indicating the completeness of the given speech by calculating the ratio of pronounced words towards entire input.\r\n * @member PronunciationAssessmentResult.prototype.completenessScore\r\n * @function\r\n * @public\r\n * @returns {number} Completeness score.\r\n */\r\n public get completenessScore(): number {\r\n return this.detailResult.PronunciationAssessment?.CompletenessScore;\r\n }\r\n\r\n /**\r\n * The score indicating the fluency of the given speech.\r\n * @member PronunciationAssessmentResult.prototype.fluencyScore\r\n * @function\r\n * @public\r\n * @returns {number} Fluency score.\r\n */\r\n public get fluencyScore(): number {\r\n return this.detailResult.PronunciationAssessment?.FluencyScore;\r\n }\r\n\r\n /**\r\n * The prosody score, which indicates how nature of the given speech, including stress, intonation, speaking speed and rhythm.\r\n * @member PronunciationAssessmentResult.prototype.prosodyScore\r\n * @function\r\n * @public\r\n * @returns {number} Prosody score.\r\n */\r\n public get prosodyScore(): number {\r\n return this.detailResult.PronunciationAssessment?.ProsodyScore;\r\n }\r\n\r\n /**\r\n * The concent assessment result.\r\n * Only available when content assessment is enabled.\r\n * @member PronunciationAssessmentResult.prototype.contentAssessmentResult\r\n * @function\r\n * @public\r\n * @returns {ContentAssessmentResult} Content assessment result.\r\n */\r\n public get contentAssessmentResult(): ContentAssessmentResult {\r\n if (this.detailResult.ContentAssessment === undefined) {\r\n return undefined;\r\n }\r\n return new ContentAssessmentResult(this.detailResult);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyId } from \"./Exports.js\";\r\n\r\n/**\r\n * Represents collection of properties and their values.\r\n * @class PropertyCollection\r\n */\r\nexport class PropertyCollection {\r\n private privKeys: string[] = [] as string[];\r\n private privValues: string[] = [] as string[];\r\n\r\n /**\r\n * Returns the property value in type String.\r\n * Currently only String, int and bool are allowed.\r\n * If the name is not available, the specified defaultValue is returned.\r\n * @member PropertyCollection.prototype.getProperty\r\n * @function\r\n * @public\r\n * @param {string} key - The parameter name.\r\n * @param {string | number | boolean} def - The default value which is returned if the parameter\r\n * is not available in the collection.\r\n * @returns {string} value of the parameter.\r\n */\r\n public getProperty(key: PropertyId | string, def?: string | number | boolean): string {\r\n let keyToUse: string;\r\n\r\n if (typeof key === \"string\") {\r\n keyToUse = key;\r\n } else {\r\n keyToUse = PropertyId[key];\r\n }\r\n\r\n for (let n = 0; n < this.privKeys.length; n++) {\r\n if (this.privKeys[n] === keyToUse) {\r\n return this.privValues[n];\r\n }\r\n }\r\n\r\n if (def === undefined) {\r\n return undefined;\r\n }\r\n\r\n return String(def);\r\n }\r\n\r\n /**\r\n * Sets the String value of the parameter specified by name.\r\n * @member PropertyCollection.prototype.setProperty\r\n * @function\r\n * @public\r\n * @param {string} key - The parameter name.\r\n * @param {string} value - The value of the parameter.\r\n */\r\n public setProperty(key: string | PropertyId, value: string): void {\r\n let keyToUse: string;\r\n\r\n if (typeof key === \"string\") {\r\n keyToUse = key;\r\n } else {\r\n keyToUse = PropertyId[key];\r\n }\r\n\r\n for (let n = 0; n < this.privKeys.length; n++) {\r\n if (this.privKeys[n] === keyToUse) {\r\n this.privValues[n] = value;\r\n return;\r\n }\r\n }\r\n\r\n this.privKeys.push(keyToUse);\r\n this.privValues.push(value);\r\n }\r\n\r\n /**\r\n * Clones the collection.\r\n * @member PropertyCollection.prototype.clone\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} A copy of the collection.\r\n */\r\n public clone(): PropertyCollection {\r\n const clonedMap = new PropertyCollection();\r\n\r\n for (let n = 0; n < this.privKeys.length; n++) {\r\n clonedMap.privKeys.push(this.privKeys[n]);\r\n clonedMap.privValues.push(this.privValues[n]);\r\n }\r\n\r\n return clonedMap;\r\n }\r\n\r\n /**\r\n * Merges this set of properties into another, no overwrites.\r\n * @member PropertyCollection.prototype.mergeTo\r\n * @function\r\n * @public\r\n * @param {PropertyCollection} destinationCollection - The collection to merge into.\r\n */\r\n public mergeTo(destinationCollection: PropertyCollection): void {\r\n this.privKeys.forEach((key: string | PropertyId): void => {\r\n if (destinationCollection.getProperty(key, undefined) === undefined) {\r\n const value = this.getProperty(key);\r\n destinationCollection.setProperty(key, value);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Get the keys in Property Collection.\r\n * @member PropertyCollection.prototype.keys\r\n * @function\r\n * @public\r\n * @returns {string []} Keys in the collection.\r\n */\r\n public get keys(): string[] {\r\n return this.privKeys;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines speech property ids.\r\n * @class PropertyId\r\n */\r\nexport enum PropertyId {\r\n\r\n /**\r\n * The Cognitive Services Speech Service subscription Key. If you are using an intent recognizer, you need to\r\n * specify the LUIS endpoint key for your particular LUIS app. Under normal circumstances, you shouldn't\r\n * have to use this property directly.\r\n * Instead, use [[SpeechConfig.fromSubscription]].\r\n * @member PropertyId.SpeechServiceConnection_Key\r\n */\r\n SpeechServiceConnection_Key = 0,\r\n\r\n /**\r\n * The Cognitive Services Speech Service endpoint (url). Under normal circumstances, you shouldn't\r\n * have to use this property directly.\r\n * Instead, use [[SpeechConfig.fromEndpoint]].\r\n * NOTE: This endpoint is not the same as the endpoint used to obtain an access token.\r\n * @member PropertyId.SpeechServiceConnection_Endpoint\r\n */\r\n SpeechServiceConnection_Endpoint,\r\n\r\n /**\r\n * The Cognitive Services Speech Service region. Under normal circumstances, you shouldn't have to\r\n * use this property directly.\r\n * Instead, use [[SpeechConfig.fromSubscription]], [[SpeechConfig.fromEndpoint]], [[SpeechConfig.fromAuthorizationToken]].\r\n * @member PropertyId.SpeechServiceConnection_Region\r\n */\r\n SpeechServiceConnection_Region,\r\n\r\n /**\r\n * The Cognitive Services Speech Service authorization token (aka access token). Under normal circumstances,\r\n * you shouldn't have to use this property directly.\r\n * Instead, use [[SpeechConfig.fromAuthorizationToken]], [[SpeechRecognizer.authorizationToken]],\r\n * [[IntentRecognizer.authorizationToken]], [[TranslationRecognizer.authorizationToken]], [[SpeakerRecognizer.authorizationToken]].\r\n * @member PropertyId.SpeechServiceAuthorization_Token\r\n */\r\n SpeechServiceAuthorization_Token,\r\n\r\n /**\r\n * The Cognitive Services Speech Service authorization type. Currently unused.\r\n * @member PropertyId.SpeechServiceAuthorization_Type\r\n */\r\n SpeechServiceAuthorization_Type,\r\n\r\n /**\r\n * The Cognitive Services Speech Service endpoint id. Under normal circumstances, you shouldn't\r\n * have to use this property directly.\r\n * Instead, use [[SpeechConfig.endpointId]].\r\n * NOTE: The endpoint id is available in the Speech Portal, listed under Endpoint Details.\r\n * @member PropertyId.SpeechServiceConnection_EndpointId\r\n */\r\n SpeechServiceConnection_EndpointId,\r\n\r\n /**\r\n * The list of comma separated languages (BCP-47 format) used as target translation languages. Under normal circumstances,\r\n * you shouldn't have to use this property directly.\r\n * Instead use [[SpeechTranslationConfig.addTargetLanguage]],\r\n * [[SpeechTranslationConfig.targetLanguages]], [[TranslationRecognizer.targetLanguages]].\r\n * @member PropertyId.SpeechServiceConnection_TranslationToLanguages\r\n */\r\n SpeechServiceConnection_TranslationToLanguages,\r\n\r\n /**\r\n * The name of the Cognitive Service Text to Speech Service Voice. Under normal circumstances, you shouldn't have to use this\r\n * property directly.\r\n * Instead, use [[SpeechTranslationConfig.voiceName]].\r\n * NOTE: Valid voice names can be found here.\r\n * @member PropertyId.SpeechServiceConnection_TranslationVoice\r\n */\r\n SpeechServiceConnection_TranslationVoice,\r\n\r\n /**\r\n * Translation features.\r\n * @member PropertyId.SpeechServiceConnection_TranslationFeatures\r\n */\r\n SpeechServiceConnection_TranslationFeatures,\r\n\r\n /**\r\n * The Language Understanding Service Region. Under normal circumstances, you shouldn't have to use this property directly.\r\n * Instead, use [[LanguageUnderstandingModel]].\r\n * @member PropertyId.SpeechServiceConnection_IntentRegion\r\n */\r\n SpeechServiceConnection_IntentRegion,\r\n\r\n /**\r\n * The host name of the proxy server used to connect to the Cognitive Services Speech Service. Only relevant in Node.js environments.\r\n * You shouldn't have to use this property directly.\r\n * Instead use .\r\n * Added in version 1.4.0.\r\n */\r\n SpeechServiceConnection_ProxyHostName,\r\n\r\n /**\r\n * The port of the proxy server used to connect to the Cognitive Services Speech Service. Only relevant in Node.js environments.\r\n * You shouldn't have to use this property directly.\r\n * Instead use .\r\n * Added in version 1.4.0.\r\n */\r\n SpeechServiceConnection_ProxyPort,\r\n\r\n /**\r\n * The user name of the proxy server used to connect to the Cognitive Services Speech Service. Only relevant in Node.js environments.\r\n * You shouldn't have to use this property directly.\r\n * Instead use .\r\n * Added in version 1.4.0.\r\n */\r\n SpeechServiceConnection_ProxyUserName,\r\n\r\n /**\r\n * The password of the proxy server used to connect to the Cognitive Services Speech Service. Only relevant in Node.js environments.\r\n * You shouldn't have to use this property directly.\r\n * Instead use .\r\n * Added in version 1.4.0.\r\n */\r\n SpeechServiceConnection_ProxyPassword,\r\n\r\n /**\r\n * The Cognitive Services Speech Service recognition Mode. Can be \"INTERACTIVE\", \"CONVERSATION\", \"DICTATION\".\r\n * This property is intended to be read-only. The SDK is using it internally.\r\n * @member PropertyId.SpeechServiceConnection_RecoMode\r\n */\r\n SpeechServiceConnection_RecoMode,\r\n\r\n /**\r\n * The spoken language to be recognized (in BCP-47 format). Under normal circumstances, you shouldn't have to use this property\r\n * directly.\r\n * Instead, use [[SpeechConfig.speechRecognitionLanguage]].\r\n * @member PropertyId.SpeechServiceConnection_RecoLanguage\r\n */\r\n SpeechServiceConnection_RecoLanguage,\r\n\r\n /**\r\n * The session id. This id is a universally unique identifier (aka UUID) representing a specific binding of an audio input stream\r\n * and the underlying speech recognition instance to which it is bound. Under normal circumstances, you shouldn't have to use this\r\n * property directly.\r\n * Instead use [[SessionEventArgs.sessionId]].\r\n * @member PropertyId.Speech_SessionId\r\n */\r\n Speech_SessionId,\r\n\r\n /**\r\n * The spoken language to be synthesized (e.g. en-US)\r\n * @member PropertyId.SpeechServiceConnection_SynthLanguage\r\n */\r\n SpeechServiceConnection_SynthLanguage,\r\n\r\n /**\r\n * The name of the TTS voice to be used for speech synthesis\r\n * @member PropertyId.SpeechServiceConnection_SynthVoice\r\n */\r\n SpeechServiceConnection_SynthVoice,\r\n\r\n /**\r\n * The string to specify TTS output audio format\r\n * @member PropertyId.SpeechServiceConnection_SynthOutputFormat\r\n */\r\n SpeechServiceConnection_SynthOutputFormat,\r\n\r\n /**\r\n * The list of comma separated languages used as possible source languages\r\n * Added in version 1.13.0\r\n * @member PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages\r\n */\r\n SpeechServiceConnection_AutoDetectSourceLanguages,\r\n\r\n /**\r\n * The requested Cognitive Services Speech Service response output format (simple or detailed). Under normal circumstances, you shouldn't have\r\n * to use this property directly.\r\n * Instead use [[SpeechConfig.outputFormat]].\r\n * @member PropertyId.SpeechServiceResponse_RequestDetailedResultTrueFalse\r\n */\r\n SpeechServiceResponse_RequestDetailedResultTrueFalse,\r\n\r\n /**\r\n * The requested Cognitive Services Speech Service response output profanity level. Currently unused.\r\n * @member PropertyId.SpeechServiceResponse_RequestProfanityFilterTrueFalse\r\n */\r\n SpeechServiceResponse_RequestProfanityFilterTrueFalse,\r\n\r\n /**\r\n * The Cognitive Services Speech Service response output (in JSON format). This property is available on recognition result objects only.\r\n * @member PropertyId.SpeechServiceResponse_JsonResult\r\n */\r\n SpeechServiceResponse_JsonResult,\r\n\r\n /**\r\n * The Cognitive Services Speech Service error details (in JSON format). Under normal circumstances, you shouldn't have to\r\n * use this property directly. Instead use [[CancellationDetails.errorDetails]].\r\n * @member PropertyId.SpeechServiceResponse_JsonErrorDetails\r\n */\r\n SpeechServiceResponse_JsonErrorDetails,\r\n\r\n /**\r\n * The cancellation reason. Currently unused.\r\n * @member PropertyId.CancellationDetails_Reason\r\n */\r\n CancellationDetails_Reason,\r\n\r\n /**\r\n * The cancellation text. Currently unused.\r\n * @member PropertyId.CancellationDetails_ReasonText\r\n */\r\n CancellationDetails_ReasonText,\r\n\r\n /**\r\n * The Cancellation detailed text. Currently unused.\r\n * @member PropertyId.CancellationDetails_ReasonDetailedText\r\n */\r\n CancellationDetails_ReasonDetailedText,\r\n\r\n /**\r\n * The Language Understanding Service response output (in JSON format). Available via [[IntentRecognitionResult]]\r\n * @member PropertyId.LanguageUnderstandingServiceResponse_JsonResult\r\n */\r\n LanguageUnderstandingServiceResponse_JsonResult,\r\n\r\n /**\r\n * The URL string built from speech configuration.\r\n * This property is intended to be read-only. The SDK is using it internally.\r\n * NOTE: Added in version 1.7.0.\r\n */\r\n SpeechServiceConnection_Url,\r\n\r\n /**\r\n * The initial silence timeout value (in milliseconds) used by the service.\r\n * Added in version 1.7.0\r\n */\r\n SpeechServiceConnection_InitialSilenceTimeoutMs,\r\n\r\n /**\r\n * The end silence timeout value (in milliseconds) used by the service.\r\n * Added in version 1.7.0\r\n */\r\n SpeechServiceConnection_EndSilenceTimeoutMs,\r\n\r\n /**\r\n * A duration of detected silence, measured in milliseconds, after which speech-to-text will determine a spoken\r\n * phrase has ended and generate a final Recognized result. Configuring this timeout may be helpful in situations\r\n * where spoken input is significantly faster or slower than usual and default segmentation behavior consistently\r\n * yields results that are too long or too short. Segmentation timeout values that are inappropriately high or low\r\n * can negatively affect speech-to-text accuracy; this property should be carefully configured and the resulting\r\n * behavior should be thoroughly validated as intended.\r\n *\r\n * For more information about timeout configuration that includes discussion of default behaviors, please visit\r\n * https://aka.ms/csspeech/timeouts.\r\n *\r\n * Added in version 1.21.0.\r\n */\r\n Speech_SegmentationSilenceTimeoutMs,\r\n\r\n /**\r\n * A boolean value specifying whether audio logging is enabled in the service or not.\r\n * Audio and content logs are stored either in Microsoft-owned storage, or in your own storage account linked\r\n * to your Cognitive Services subscription (Bring Your Own Storage (BYOS) enabled Speech resource).\r\n * The logs will be removed after 30 days.\r\n * Added in version 1.7.0\r\n */\r\n SpeechServiceConnection_EnableAudioLogging,\r\n\r\n /**\r\n * The speech service connection language identifier mode.\r\n * Can be \"AtStart\" (the default), or \"Continuous\". See Language\r\n * Identification document https://aka.ms/speech/lid?pivots=programming-language-javascript\r\n * for more details.\r\n * Added in 1.25.0\r\n **/\r\n SpeechServiceConnection_LanguageIdMode,\r\n\r\n /**\r\n * A string value representing the desired endpoint version to target for Speech Recognition.\r\n * Added in version 1.21.0\r\n */\r\n SpeechServiceConnection_RecognitionEndpointVersion,\r\n\r\n /**\r\n /**\r\n * A string value the current speaker recognition scenario/mode (TextIndependentIdentification, etc.).\r\n * Added in version 1.23.0\r\n */\r\n SpeechServiceConnection_SpeakerIdMode,\r\n\r\n /**\r\n * The requested Cognitive Services Speech Service response output profanity setting.\r\n * Allowed values are \"masked\", \"removed\", and \"raw\".\r\n * Added in version 1.7.0.\r\n */\r\n SpeechServiceResponse_ProfanityOption,\r\n\r\n /**\r\n * A string value specifying which post processing option should be used by service.\r\n * Allowed values are \"TrueText\".\r\n * Added in version 1.7.0\r\n */\r\n SpeechServiceResponse_PostProcessingOption,\r\n\r\n /**\r\n * A boolean value specifying whether to include word-level timestamps in the response result.\r\n * Added in version 1.7.0\r\n */\r\n SpeechServiceResponse_RequestWordLevelTimestamps,\r\n\r\n /**\r\n * The number of times a word has to be in partial results to be returned.\r\n * Added in version 1.7.0\r\n */\r\n SpeechServiceResponse_StablePartialResultThreshold,\r\n\r\n /**\r\n * A string value specifying the output format option in the response result. Internal use only.\r\n * Added in version 1.7.0.\r\n */\r\n SpeechServiceResponse_OutputFormatOption,\r\n\r\n /**\r\n * A boolean value to request for stabilizing translation partial results by omitting words in the end.\r\n * Added in version 1.7.0.\r\n */\r\n SpeechServiceResponse_TranslationRequestStablePartialResult,\r\n\r\n /**\r\n * A boolean value specifying whether to request WordBoundary events.\r\n * @member PropertyId.SpeechServiceResponse_RequestWordBoundary\r\n * Added in version 1.21.0.\r\n */\r\n SpeechServiceResponse_RequestWordBoundary,\r\n\r\n /**\r\n * A boolean value specifying whether to request punctuation boundary in WordBoundary Events. Default is true.\r\n * @member PropertyId.SpeechServiceResponse_RequestPunctuationBoundary\r\n * Added in version 1.21.0.\r\n */\r\n SpeechServiceResponse_RequestPunctuationBoundary,\r\n\r\n /**\r\n * A boolean value specifying whether to request sentence boundary in WordBoundary Events. Default is false.\r\n * @member PropertyId.SpeechServiceResponse_RequestSentenceBoundary\r\n * Added in version 1.21.0.\r\n */\r\n SpeechServiceResponse_RequestSentenceBoundary,\r\n\r\n /**\r\n * Determines if intermediate results contain speaker identification.\r\n * Allowed values are \"true\" or \"false\". If set to \"true\", the intermediate results will contain speaker identification.\r\n * The default value if unset or set to an invalid value is \"false\".\r\n * This is currently only supported for scenarios using the ConversationTranscriber\".\r\n * @member PropertyId.SpeechServiceResponse_DiarizeIntermediateResults\r\n * Adding in version 1.41.\r\n */\r\n SpeechServiceResponse_DiarizeIntermediateResults,\r\n\r\n /**\r\n * Identifier used to connect to the backend service.\r\n * @member PropertyId.Conversation_ApplicationId\r\n */\r\n Conversation_ApplicationId,\r\n\r\n /**\r\n * Type of dialog backend to connect to.\r\n * @member PropertyId.Conversation_DialogType\r\n */\r\n Conversation_DialogType,\r\n\r\n /**\r\n * Silence timeout for listening\r\n * @member PropertyId.Conversation_Initial_Silence_Timeout\r\n */\r\n Conversation_Initial_Silence_Timeout,\r\n\r\n /**\r\n * From Id to add to speech recognition activities.\r\n * @member PropertyId.Conversation_From_Id\r\n */\r\n Conversation_From_Id,\r\n\r\n /**\r\n * ConversationId for the session.\r\n * @member PropertyId.Conversation_Conversation_Id\r\n */\r\n Conversation_Conversation_Id,\r\n\r\n /**\r\n * Comma separated list of custom voice deployment ids.\r\n * @member PropertyId.Conversation_Custom_Voice_Deployment_Ids\r\n */\r\n Conversation_Custom_Voice_Deployment_Ids,\r\n\r\n /**\r\n * Speech activity template, stamp properties from the template on the activity generated by the service for speech.\r\n * @member PropertyId.Conversation_Speech_Activity_Template\r\n * Added in version 1.10.0.\r\n */\r\n Conversation_Speech_Activity_Template,\r\n\r\n /**\r\n * Enables or disables the receipt of turn status messages as obtained on the turnStatusReceived event.\r\n * @member PropertyId.Conversation_Request_Bot_Status_Messages\r\n * Added in version 1.15.0.\r\n */\r\n Conversation_Request_Bot_Status_Messages,\r\n\r\n /**\r\n * Specifies the connection ID to be provided in the Agent configuration message, e.g. a Direct Line token for\r\n * channel authentication.\r\n * Added in version 1.15.1.\r\n */\r\n Conversation_Agent_Connection_Id,\r\n\r\n /**\r\n * The Cognitive Services Speech Service host (url). Under normal circumstances, you shouldn't have to use this property directly.\r\n * Instead, use [[SpeechConfig.fromHost]].\r\n */\r\n SpeechServiceConnection_Host,\r\n\r\n /**\r\n * Set the host for service calls to the Conversation Translator REST management and websocket calls.\r\n */\r\n ConversationTranslator_Host,\r\n\r\n /**\r\n * Optionally set the the host's display name.\r\n * Used when joining a conversation.\r\n */\r\n ConversationTranslator_Name,\r\n\r\n /**\r\n * Optionally set a value for the X-CorrelationId request header.\r\n * Used for troubleshooting errors in the server logs. It should be a valid guid.\r\n */\r\n ConversationTranslator_CorrelationId,\r\n\r\n /**\r\n * Set the conversation token to be sent to the speech service. This enables the\r\n * service to service call from the speech service to the Conversation Translator service for relaying\r\n * recognitions. For internal use.\r\n */\r\n ConversationTranslator_Token,\r\n\r\n /**\r\n * The reference text of the audio for pronunciation evaluation.\r\n * For this and the following pronunciation assessment parameters, see\r\n * https://docs.microsoft.com/azure/cognitive-services/speech-service/rest-speech-to-text#pronunciation-assessment-parameters for details.\r\n * Under normal circumstances, you shouldn't have to use this property directly.\r\n * Added in version 1.15.0\r\n */\r\n PronunciationAssessment_ReferenceText,\r\n\r\n /**\r\n * The point system for pronunciation score calibration (FivePoint or HundredMark).\r\n * Under normal circumstances, you shouldn't have to use this property directly.\r\n * Added in version 1.15.0\r\n */\r\n PronunciationAssessment_GradingSystem,\r\n\r\n /**\r\n * The pronunciation evaluation granularity (Phoneme, Word, or FullText).\r\n * Under normal circumstances, you shouldn't have to use this property directly.\r\n * Added in version 1.15.0\r\n */\r\n PronunciationAssessment_Granularity,\r\n\r\n /**\r\n * Defines if enable miscue calculation.\r\n * With this enabled, the pronounced words will be compared to the reference text,\r\n * and will be marked with omission/insertion based on the comparison. The default setting is False.\r\n * Under normal circumstances, you shouldn't have to use this property directly.\r\n * Added in version 1.15.0\r\n */\r\n PronunciationAssessment_EnableMiscue,\r\n\r\n /**\r\n * The json string of pronunciation assessment parameters\r\n * Under normal circumstances, you shouldn't have to use this property directly.\r\n * Added in version 1.15.0\r\n */\r\n PronunciationAssessment_Json,\r\n\r\n /**\r\n * Pronunciation assessment parameters.\r\n * This property is intended to be read-only. The SDK is using it internally.\r\n * Added in version 1.15.0\r\n */\r\n PronunciationAssessment_Params,\r\n\r\n /**\r\n * Version of Speaker Recognition API to use.\r\n * Added in version 1.18.0\r\n */\r\n SpeakerRecognition_Api_Version,\r\n\r\n /**\r\n * Specifies whether to allow load of data URL for web worker\r\n * Allowed values are \"off\" and \"on\". Default is \"on\".\r\n * Added in version 1.32.0\r\n */\r\n WebWorkerLoadType,\r\n\r\n /**\r\n * Talking avatar service WebRTC session description protocol.\r\n * This property is intended to be read-only. The SDK is using it internally.\r\n * Added in version 1.33.0\r\n */\r\n TalkingAvatarService_WebRTC_SDP,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { SessionEventArgs } from \"./Exports.js\";\r\n\r\n/**\r\n * Defines payload for session events like Speech Start/End Detected\r\n * @class\r\n */\r\nexport class RecognitionEventArgs extends SessionEventArgs {\r\n private privOffset: number;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {number} offset - The offset.\r\n * @param {string} sessionId - The session id.\r\n */\r\n public constructor(offset: number, sessionId?: string) {\r\n super(sessionId);\r\n\r\n this.privOffset = offset;\r\n }\r\n\r\n /**\r\n * Represents the message offset\r\n * @member RecognitionEventArgs.prototype.offset\r\n * @function\r\n * @public\r\n */\r\n public get offset(): number {\r\n return this.privOffset;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection, ResultReason } from \"./Exports.js\";\r\n\r\n/**\r\n * Defines result of speech recognition.\r\n * @class RecognitionResult\r\n */\r\nexport class RecognitionResult {\r\n private privResultId: string;\r\n private privReason: ResultReason;\r\n private privText: string;\r\n private privDuration: number;\r\n private privOffset: number;\r\n private privLanguage: string;\r\n private privLanguageDetectionConfidence: string;\r\n private privErrorDetails: string;\r\n private privJson: string;\r\n private privProperties: PropertyCollection;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} resultId - The result id.\r\n * @param {ResultReason} reason - The reason.\r\n * @param {string} text - The recognized text.\r\n * @param {number} duration - The duration.\r\n * @param {number} offset - The offset into the stream.\r\n * @param {string} language - Primary Language detected, if provided.\r\n * @param {string} languageDetectionConfidence - Primary Language confidence (\"Unknown,\" \"Low,\" \"Medium,\" \"High\"...), if provided.\r\n * @param {string} errorDetails - Error details, if provided.\r\n * @param {string} json - Additional Json, if provided.\r\n * @param {PropertyCollection} properties - Additional properties, if provided.\r\n */\r\n public constructor(resultId?: string, reason?: ResultReason, text?: string, duration?: number,\r\n offset?: number, language?: string, languageDetectionConfidence?: string, errorDetails?: string, json?: string, properties?: PropertyCollection) {\r\n this.privResultId = resultId;\r\n this.privReason = reason;\r\n this.privText = text;\r\n this.privDuration = duration;\r\n this.privOffset = offset;\r\n this.privLanguage = language;\r\n this.privLanguageDetectionConfidence = languageDetectionConfidence;\r\n this.privErrorDetails = errorDetails;\r\n this.privJson = json;\r\n this.privProperties = properties;\r\n }\r\n\r\n /**\r\n * Specifies the result identifier.\r\n * @member RecognitionResult.prototype.resultId\r\n * @function\r\n * @public\r\n * @returns {string} Specifies the result identifier.\r\n */\r\n public get resultId(): string {\r\n return this.privResultId;\r\n }\r\n\r\n /**\r\n * Specifies status of the result.\r\n * @member RecognitionResult.prototype.reason\r\n * @function\r\n * @public\r\n * @returns {ResultReason} Specifies status of the result.\r\n */\r\n public get reason(): ResultReason {\r\n return this.privReason;\r\n }\r\n\r\n /**\r\n * Presents the recognized text in the result.\r\n * @member RecognitionResult.prototype.text\r\n * @function\r\n * @public\r\n * @returns {string} Presents the recognized text in the result.\r\n */\r\n public get text(): string {\r\n return this.privText;\r\n }\r\n\r\n /**\r\n * Duration of recognized speech in 100 nano second increments.\r\n * @member RecognitionResult.prototype.duration\r\n * @function\r\n * @public\r\n * @returns {number} Duration of recognized speech in 100 nano second increments.\r\n */\r\n public get duration(): number {\r\n return this.privDuration;\r\n }\r\n\r\n /**\r\n * Offset of recognized speech in 100 nano second increments.\r\n * @member RecognitionResult.prototype.offset\r\n * @function\r\n * @public\r\n * @returns {number} Offset of recognized speech in 100 nano second increments.\r\n */\r\n public get offset(): number {\r\n return this.privOffset;\r\n }\r\n\r\n /**\r\n * Primary Language detected.\r\n * @member RecognitionResult.prototype.language\r\n * @function\r\n * @public\r\n * @returns {string} language detected.\r\n */\r\n public get language(): string {\r\n return this.privLanguage;\r\n }\r\n\r\n /**\r\n * Primary Language detection confidence (Unknown, Low, Medium, High).\r\n * @member RecognitionResult.prototype.languageDetectionConfidence\r\n * @function\r\n * @public\r\n * @returns {string} detection confidence strength.\r\n */\r\n public get languageDetectionConfidence(): string {\r\n return this.privLanguageDetectionConfidence;\r\n }\r\n\r\n /**\r\n * In case of an unsuccessful recognition, provides details of the occurred error.\r\n * @member RecognitionResult.prototype.errorDetails\r\n * @function\r\n * @public\r\n * @returns {string} a brief description of an error.\r\n */\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n\r\n /**\r\n * A string containing Json serialized recognition result as it was received from the service.\r\n * @member RecognitionResult.prototype.json\r\n * @function\r\n * @private\r\n * @returns {string} Json serialized representation of the result.\r\n */\r\n public get json(): string {\r\n return this.privJson;\r\n }\r\n\r\n /**\r\n * The set of properties exposed in the result.\r\n * @member RecognitionResult.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The set of properties exposed in the result.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n CognitiveSubscriptionKeyAuthentication,\r\n CognitiveTokenAuthentication,\r\n Context,\r\n IAuthentication,\r\n IConnectionFactory,\r\n OS,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeechServiceConfig,\r\n} from \"../common.speech/Exports.js\";\r\nimport {\r\n Deferred,\r\n marshalPromiseToCallbacks\r\n} from \"../common/Exports.js\";\r\nimport {\r\n Contracts\r\n} from \"./Contracts.js\";\r\nimport {\r\n AudioConfig,\r\n PropertyCollection,\r\n PropertyId,\r\n RecognitionEventArgs,\r\n SessionEventArgs,\r\n SpeechRecognitionResult,\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Defines the base class Recognizer which mainly contains common event handlers.\r\n * @class Recognizer\r\n */\r\nexport abstract class Recognizer {\r\n private privDisposed: boolean;\r\n protected audioConfig: AudioConfig;\r\n protected privReco: ServiceRecognizerBase;\r\n protected privProperties: PropertyCollection;\r\n private privConnectionFactory: IConnectionFactory;\r\n\r\n /**\r\n * Creates and initializes an instance of a Recognizer\r\n * @constructor\r\n * @param {AudioConfig} audioInput - An optional audio input stream associated with the recognizer\r\n * @param {PropertyCollection} properties - A set of properties to set on the recognizer\r\n * @param {IConnectionFactory} connectionFactory - The factory class used to create a custom IConnection for the recognizer\r\n */\r\n protected constructor(audioConfig: AudioConfig, properties: PropertyCollection, connectionFactory: IConnectionFactory) {\r\n this.audioConfig = (audioConfig !== undefined) ? audioConfig : AudioConfig.fromDefaultMicrophoneInput();\r\n this.privDisposed = false;\r\n this.privProperties = properties.clone();\r\n this.privConnectionFactory = connectionFactory;\r\n this.implCommonRecognizerSetup();\r\n }\r\n\r\n /**\r\n * Defines event handler for session started events.\r\n * @member Recognizer.prototype.sessionStarted\r\n * @function\r\n * @public\r\n */\r\n public sessionStarted: (sender: Recognizer, event: SessionEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for session stopped events.\r\n * @member Recognizer.prototype.sessionStopped\r\n * @function\r\n * @public\r\n */\r\n public sessionStopped: (sender: Recognizer, event: SessionEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for speech started events.\r\n * @member Recognizer.prototype.speechStartDetected\r\n * @function\r\n * @public\r\n */\r\n public speechStartDetected: (sender: Recognizer, event: RecognitionEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for speech stopped events.\r\n * @member Recognizer.prototype.speechEndDetected\r\n * @function\r\n * @public\r\n */\r\n public speechEndDetected: (sender: Recognizer, event: RecognitionEventArgs) => void;\r\n\r\n /**\r\n * Dispose of associated resources.\r\n * @member Recognizer.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, errorCb?: (error: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposed);\r\n marshalPromiseToCallbacks(this.dispose(true), cb, errorCb);\r\n }\r\n\r\n /**\r\n * @Internal\r\n * Internal data member to support fromRecognizer* pattern methods on other classes.\r\n * Do not use externally, object returned will change without warning or notice.\r\n */\r\n public get internalData(): object {\r\n return this.privReco;\r\n }\r\n\r\n /**\r\n * This method performs cleanup of resources.\r\n * The Boolean parameter disposing indicates whether the method is called\r\n * from Dispose (if disposing is true) or from the finalizer (if disposing is false).\r\n * Derived classes should override this method to dispose resource if needed.\r\n * @member Recognizer.prototype.dispose\r\n * @function\r\n * @public\r\n * @param {boolean} disposing - Flag to request disposal.\r\n */\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposed) {\r\n return;\r\n }\r\n\r\n this.privDisposed = true;\r\n\r\n if (disposing) {\r\n if (this.privReco) {\r\n await this.privReco.audioSource.turnOff();\r\n await this.privReco.dispose();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * This method returns the current state of the telemetry setting.\r\n * @member Recognizer.prototype.telemetryEnabled\r\n * @function\r\n * @public\r\n * @returns true if the telemetry is enabled, false otherwise.\r\n */\r\n public static get telemetryEnabled(): boolean {\r\n return ServiceRecognizerBase.telemetryDataEnabled;\r\n }\r\n\r\n /**\r\n * This method globally enables or disables telemetry.\r\n * @member Recognizer.prototype.enableTelemetry\r\n * @function\r\n * @public\r\n * @param enabled - Global setting for telemetry collection.\r\n * If set to true, telemetry information like microphone errors,\r\n * recognition errors are collected and sent to Microsoft.\r\n * If set to false, no telemetry is sent to Microsoft.\r\n */\r\n public static enableTelemetry(enabled: boolean): void {\r\n ServiceRecognizerBase.telemetryDataEnabled = enabled;\r\n }\r\n\r\n //\r\n // ################################################################################################################\r\n // IMPLEMENTATION.\r\n // Move to independent class\r\n // ################################################################################################################\r\n //\r\n protected abstract createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig;\r\n\r\n // Creates the correct service recognizer for the type\r\n protected abstract createServiceRecognizer(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioConfig: AudioConfig,\r\n recognizerConfig: RecognizerConfig): ServiceRecognizerBase;\r\n\r\n // Does the generic recognizer setup that is common across all recognizer types.\r\n protected implCommonRecognizerSetup(): void {\r\n\r\n let osPlatform = (typeof window !== \"undefined\") ? \"Browser\" : \"Node\";\r\n let osName = \"unknown\";\r\n let osVersion = \"unknown\";\r\n\r\n if (typeof navigator !== \"undefined\") {\r\n osPlatform = osPlatform + \"/\" + navigator.platform;\r\n osName = navigator.userAgent;\r\n osVersion = navigator.appVersion;\r\n }\r\n\r\n const recognizerConfig = this.createRecognizerConfig(\r\n new SpeechServiceConfig(\r\n new Context(new OS(osPlatform, osName, osVersion))));\r\n\r\n this.privReco = this.createServiceRecognizer(\r\n Recognizer.getAuthFromProperties(this.privProperties),\r\n this.privConnectionFactory,\r\n this.audioConfig,\r\n recognizerConfig);\r\n }\r\n\r\n protected async recognizeOnceAsyncImpl(recognitionMode: RecognitionMode): Promise {\r\n Contracts.throwIfDisposed(this.privDisposed);\r\n const ret: Deferred = new Deferred();\r\n\r\n await this.implRecognizerStop();\r\n await this.privReco.recognize(recognitionMode, ret.resolve, ret.reject);\r\n const result: SpeechRecognitionResult = await ret.promise;\r\n await this.implRecognizerStop();\r\n\r\n return result;\r\n\r\n }\r\n\r\n protected async startContinuousRecognitionAsyncImpl(recognitionMode: RecognitionMode): Promise {\r\n Contracts.throwIfDisposed(this.privDisposed);\r\n\r\n await this.implRecognizerStop();\r\n await this.privReco.recognize(recognitionMode, undefined, undefined);\r\n }\r\n\r\n protected async stopContinuousRecognitionAsyncImpl(): Promise {\r\n Contracts.throwIfDisposed(this.privDisposed);\r\n await this.implRecognizerStop();\r\n }\r\n\r\n protected async implRecognizerStop(): Promise {\r\n if (this.privReco) {\r\n await this.privReco.stopRecognizing();\r\n }\r\n return;\r\n }\r\n\r\n protected static getAuthFromProperties(properties: PropertyCollection): IAuthentication {\r\n const subscriptionKey = properties.getProperty(PropertyId.SpeechServiceConnection_Key, undefined);\r\n const authentication = (subscriptionKey && subscriptionKey !== \"\") ?\r\n new CognitiveSubscriptionKeyAuthentication(subscriptionKey) :\r\n new CognitiveTokenAuthentication(\r\n (): Promise => {\r\n const authorizationToken = properties.getProperty(PropertyId.SpeechServiceAuthorization_Token, undefined);\r\n return Promise.resolve(authorizationToken);\r\n },\r\n (): Promise => {\r\n const authorizationToken = properties.getProperty(PropertyId.SpeechServiceAuthorization_Token, undefined);\r\n return Promise.resolve(authorizationToken);\r\n });\r\n\r\n return authentication;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines the possible reasons a recognition result might be generated.\r\n * @class ResultReason\r\n */\r\nexport enum ResultReason {\r\n /**\r\n * Indicates speech could not be recognized. More details\r\n * can be found in the NoMatchDetails object.\r\n * @member ResultReason.NoMatch\r\n */\r\n NoMatch,\r\n\r\n /**\r\n * Indicates that the recognition was canceled. More details\r\n * can be found using the CancellationDetails object.\r\n * @member ResultReason.Canceled\r\n */\r\n Canceled,\r\n\r\n /**\r\n * Indicates the speech result contains hypothesis text.\r\n * @member ResultReason.RecognizedSpeech\r\n */\r\n RecognizingSpeech,\r\n\r\n /**\r\n * Indicates the speech result contains final text that has been recognized.\r\n * Speech Recognition is now complete for this phrase.\r\n * @member ResultReason.RecognizedSpeech\r\n */\r\n RecognizedSpeech,\r\n\r\n /**\r\n * Indicates the speech result contains a finalized acceptance of a provided keyword.\r\n * Speech recognition will continue unless otherwise configured.\r\n * @member ResultReason.RecognizedKeyword\r\n */\r\n RecognizedKeyword,\r\n\r\n /**\r\n * Indicates the intent result contains hypothesis text and intent.\r\n * @member ResultReason.RecognizingIntent\r\n */\r\n RecognizingIntent,\r\n\r\n /**\r\n * Indicates the intent result contains final text and intent.\r\n * Speech Recognition and Intent determination are now complete for this phrase.\r\n * @member ResultReason.RecognizedIntent\r\n */\r\n RecognizedIntent,\r\n\r\n /**\r\n * Indicates the translation result contains hypothesis text and its translation(s).\r\n * @member ResultReason.TranslatingSpeech\r\n */\r\n TranslatingSpeech,\r\n\r\n /**\r\n * Indicates the translation result contains final text and corresponding translation(s).\r\n * Speech Recognition and Translation are now complete for this phrase.\r\n * @member ResultReason.TranslatedSpeech\r\n */\r\n TranslatedSpeech,\r\n\r\n /**\r\n * Indicates the synthesized audio result contains a non-zero amount of audio data\r\n * @member ResultReason.SynthesizingAudio\r\n */\r\n SynthesizingAudio,\r\n\r\n /**\r\n * Indicates the synthesized audio is now complete for this phrase.\r\n * @member ResultReason.SynthesizingAudioCompleted\r\n */\r\n SynthesizingAudioCompleted,\r\n\r\n /**\r\n * Indicates the speech synthesis is now started\r\n * @member ResultReason.SynthesizingAudioStarted\r\n */\r\n SynthesizingAudioStarted,\r\n\r\n /**\r\n * Indicates the voice profile is being enrolled and customers need to send more audio to create a voice profile.\r\n * @member ResultReason.EnrollingVoiceProfile\r\n */\r\n EnrollingVoiceProfile,\r\n\r\n /**\r\n * Indicates the voice profile has been enrolled.\r\n * @member ResultReason.EnrolledVoiceProfile\r\n */\r\n EnrolledVoiceProfile,\r\n\r\n /**\r\n * Indicates successful identification of some speakers.\r\n * @member ResultReason.RecognizedSpeakers\r\n */\r\n RecognizedSpeakers,\r\n\r\n /**\r\n * Indicates successfully verified one speaker.\r\n * @member ResultReason.RecognizedSpeaker\r\n */\r\n RecognizedSpeaker,\r\n\r\n /**\r\n * Indicates a voice profile has been reset successfully.\r\n * @member ResultReason.ResetVoiceProfile\r\n */\r\n ResetVoiceProfile,\r\n\r\n /**\r\n * Indicates a voice profile has been deleted successfully.\r\n * @member ResultReason.DeletedVoiceProfile\r\n */\r\n DeletedVoiceProfile,\r\n\r\n /**\r\n * Indicates synthesis voices list has been successfully retrieved.\r\n * @member ResultReason.VoicesListRetrieved\r\n */\r\n VoicesListRetrieved,\r\n\r\n /**\r\n * Indicates the transcription result contains hypothesis text and its translation(s) for\r\n * other participants in the conversation.\r\n * @member ResultReason.TranslatingParticipantSpeech\r\n */\r\n TranslatingParticipantSpeech,\r\n\r\n /**\r\n * Indicates the transcription result contains final text and corresponding translation(s)\r\n * for other participants in the conversation. Speech Recognition and Translation are now\r\n * complete for this phrase.\r\n * @member ResultReason.TranslatedParticipantSpeech\r\n */\r\n TranslatedParticipantSpeech,\r\n\r\n /**\r\n * \r\n * Indicates the transcription result contains the instant message and corresponding\r\n * translation(s).\r\n * @member ResultReason.TranslatedInstantMessage\r\n */\r\n TranslatedInstantMessage,\r\n\r\n /**\r\n * Indicates the transcription result contains the instant message for other participants\r\n * in the conversation and corresponding translation(s).\r\n * @member ResultReason.TranslatedParticipantInstantMessage\r\n */\r\n TranslatedParticipantInstantMessage,\r\n}\r\n","//\r\n// Copyright (c) Microsoft. All rights reserved.\r\n// Licensed under the MIT license. See LICENSE.md file in the project root for full license information.\r\n//\r\n\r\nimport { SessionEventArgs } from \"./Exports.js\";\r\n\r\n/**\r\n * Defines payload for any Service message event\r\n * Added in version 1.9.0\r\n */\r\n\r\nexport class ServiceEventArgs extends SessionEventArgs {\r\n private privJsonResult: string;\r\n private privEventName: string;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} json - json payload of the USP message.\r\n */\r\n public constructor(json: string, name: string, sessionId?: string) {\r\n super(sessionId);\r\n this.privJsonResult = json;\r\n this.privEventName = name;\r\n }\r\n\r\n public get jsonString(): string {\r\n return this.privJsonResult;\r\n }\r\n\r\n public get eventName(): string {\r\n return this.privEventName;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines channels used to pass property settings to service.\r\n * Added in version 1.7.0.\r\n */\r\nexport enum ServicePropertyChannel {\r\n /**\r\n * Uses URI query parameter to pass property settings to service.\r\n */\r\n UriQueryParameter = 0.\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines content for session events like SessionStarted/Stopped, SoundStarted/Stopped.\r\n * @class SessionEventArgs\r\n */\r\nexport class SessionEventArgs {\r\n private privSessionId: string;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} sessionId - The session id.\r\n */\r\n public constructor(sessionId: string) {\r\n this.privSessionId = sessionId;\r\n }\r\n\r\n /**\r\n * Represents the session identifier.\r\n * @member SessionEventArgs.prototype.sessionId\r\n * @function\r\n * @public\r\n * @returns {string} Represents the session identifier.\r\n */\r\n public get sessionId(): string {\r\n return this.privSessionId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts.js\";\r\n\r\n/**\r\n * Source Language configuration.\r\n * @class SourceLanguageConfig\r\n */\r\nexport class SourceLanguageConfig {\r\n private privLanguage: string;\r\n private privEndpointId: string;\r\n\r\n private constructor(language: string, endpointId?: string) {\r\n Contracts.throwIfNullOrUndefined(language, \"language\");\r\n this.privLanguage = language;\r\n this.privEndpointId = endpointId;\r\n }\r\n\r\n /**\r\n * @member SourceLanguageConfig.fromLanguage\r\n * @function\r\n * @public\r\n * @param {string} language language (eg. \"en-US\") value of config.\r\n * @param {string?} endpointId endpointId of model bound to given language of config.\r\n * @return {SourceLanguageConfig} Instance of SourceLanguageConfig\r\n * @summary Creates an instance of the SourceLanguageConfig with the given language and optional endpointId.\r\n * Added in version 1.13.0.\r\n */\r\n public static fromLanguage(language: string, endpointId?: string): SourceLanguageConfig {\r\n return new SourceLanguageConfig(language, endpointId);\r\n }\r\n\r\n public get language(): string {\r\n return this.privLanguage;\r\n }\r\n\r\n public get endpointId(): string {\r\n return this.privEndpointId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport { SpeakerRecognitionModel } from \"./SpeakerRecognitionModel.js\";\r\nimport {\r\n VoiceProfile,\r\n VoiceProfileType,\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Defines SpeakerIdentificationModel class for Speaker Recognition\r\n * Model contains a set of profiles against which to identify speaker(s)\r\n * @class SpeakerIdentificationModel\r\n */\r\nexport class SpeakerIdentificationModel implements SpeakerRecognitionModel {\r\n private privVoiceProfiles: VoiceProfile[] = [];\r\n private privProfileIds: string[] = [];\r\n\r\n private constructor(profiles: VoiceProfile[]) {\r\n Contracts.throwIfNullOrUndefined(profiles, \"VoiceProfiles\");\r\n if (profiles.length === 0) {\r\n throw new Error(\"Empty Voice Profiles array\");\r\n }\r\n for (const profile of profiles) {\r\n if (profile.profileType !== VoiceProfileType.TextIndependentIdentification) {\r\n throw new Error(\"Identification model can only be created from Identification profile: \" + profile.profileId);\r\n }\r\n this.privVoiceProfiles.push(profile);\r\n this.privProfileIds.push(profile.profileId);\r\n }\r\n }\r\n public static fromProfiles(profiles: VoiceProfile[]): SpeakerIdentificationModel {\r\n return new SpeakerIdentificationModel(profiles);\r\n }\r\n\r\n public get voiceProfileIds(): string {\r\n return this.privProfileIds.join(\",\");\r\n }\r\n\r\n public get profileIds(): string[] {\r\n return this.privProfileIds;\r\n }\r\n\r\n public get scenario(): string {\r\n return \"TextIndependentIdentification\";\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport { CancellationErrorCodePropertyName, SpeakerResponse } from \"../common.speech/Exports.js\";\r\nimport {\r\n CancellationDetailsBase,\r\n CancellationErrorCode,\r\n CancellationReason,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n} from \"./Exports.js\";\r\n\r\nexport enum SpeakerRecognitionResultType {\r\n Verify,\r\n Identify\r\n}\r\n\r\n/**\r\n * Output format\r\n * @class SpeakerRecognitionResult\r\n */\r\nexport class SpeakerRecognitionResult {\r\n private privReason: ResultReason;\r\n private privProperties: PropertyCollection;\r\n private privProfileId: string;\r\n private privScore: number;\r\n private privErrorDetails: string;\r\n\r\n public constructor(response: SpeakerResponse, resultReason: ResultReason = ResultReason.RecognizedSpeaker, cancellationErrorCode: CancellationErrorCode = CancellationErrorCode.NoError, errorDetails: string = \"\") {\r\n this.privProperties = new PropertyCollection();\r\n const resultType = response.scenario === \"TextIndependentIdentification\" ? SpeakerRecognitionResultType.Identify : SpeakerRecognitionResultType.Verify;\r\n this.privReason = resultReason;\r\n if (this.privReason !== ResultReason.Canceled) {\r\n if (resultType === SpeakerRecognitionResultType.Identify) {\r\n this.privProfileId = response.identificationResult.identifiedProfile.profileId;\r\n this.privScore = response.identificationResult.identifiedProfile.score;\r\n this.privReason = ResultReason.RecognizedSpeakers;\r\n } else {\r\n this.privScore = response.verificationResult.score;\r\n if (response.verificationResult.recognitionResult.toLowerCase() !== \"accept\") {\r\n this.privReason = ResultReason.NoMatch;\r\n }\r\n if (response.verificationResult.profileId !== undefined && response.verificationResult.profileId !== \"\") {\r\n this.privProfileId = response.verificationResult.profileId;\r\n }\r\n }\r\n } else {\r\n this.privErrorDetails = errorDetails;\r\n this.privProperties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[cancellationErrorCode]);\r\n }\r\n this.privProperties.setProperty(PropertyId.SpeechServiceResponse_JsonResult, JSON.stringify(response));\r\n }\r\n\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n public get reason(): ResultReason {\r\n return this.privReason;\r\n }\r\n\r\n public get profileId(): string {\r\n return this.privProfileId;\r\n }\r\n\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n\r\n public get score(): number {\r\n return this.privScore;\r\n }\r\n}\r\n\r\n/**\r\n * @class SpeakerRecognitionCancellationDetails\r\n */\r\nexport class SpeakerRecognitionCancellationDetails extends CancellationDetailsBase {\r\n\r\n private constructor(reason: CancellationReason, errorDetails: string, errorCode: CancellationErrorCode) {\r\n super(reason, errorDetails, errorCode);\r\n }\r\n\r\n /**\r\n * Creates an instance of SpeakerRecognitionCancellationDetails object for the canceled SpeakerRecognitionResult\r\n * @member SpeakerRecognitionCancellationDetails.fromResult\r\n * @function\r\n * @public\r\n * @param {SpeakerRecognitionResult} result - The result that was canceled.\r\n * @returns {SpeakerRecognitionCancellationDetails} The cancellation details object being created.\r\n */\r\n public static fromResult(result: SpeakerRecognitionResult): SpeakerRecognitionCancellationDetails {\r\n const reason = CancellationReason.Error;\r\n let errorCode: CancellationErrorCode = CancellationErrorCode.NoError;\r\n\r\n if (!!result.properties) {\r\n errorCode = CancellationErrorCode[result.properties.getProperty(CancellationErrorCodePropertyName, CancellationErrorCode[CancellationErrorCode.NoError]) as keyof typeof CancellationErrorCode];\r\n }\r\n\r\n return new SpeakerRecognitionCancellationDetails(reason, result.errorDetails, errorCode);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n IAuthentication,\r\n IConnectionFactory,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeakerRecognitionConnectionFactory,\r\n SpeakerServiceRecognizer,\r\n SpeechServiceConfig\r\n} from \"../common.speech/Exports.js\";\r\nimport { SpeakerRecognitionModel } from \"./SpeakerRecognitionModel.js\";\r\nimport { AudioConfig, AudioConfigImpl } from \"./Audio/AudioConfig.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport {\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer,\r\n SpeakerIdentificationModel,\r\n SpeakerRecognitionResult,\r\n SpeakerVerificationModel,\r\n} from \"./Exports.js\";\r\nimport { SpeechConfig, SpeechConfigImpl } from \"./SpeechConfig.js\";\r\n\r\n/**\r\n * Defines SpeakerRecognizer class for Speaker Recognition\r\n * Handles operations from user for Voice Profile operations (e.g. createProfile, deleteProfile)\r\n * @class SpeakerRecognizer\r\n */\r\nexport class SpeakerRecognizer extends Recognizer {\r\n protected privProperties: PropertyCollection;\r\n private privDisposedSpeakerRecognizer: boolean;\r\n private privAudioConfigImpl: AudioConfigImpl;\r\n /**\r\n * Initializes an instance of the SpeakerRecognizer.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - The set of configuration properties.\r\n * @param {AudioConfig} audioConfig - An optional audio input config associated with the recognizer\r\n */\r\n public constructor(speechConfig: SpeechConfig, audioConfig: AudioConfig) {\r\n Contracts.throwIfNullOrUndefined(speechConfig, \"speechConfig\");\r\n const configImpl: SpeechConfigImpl = speechConfig as SpeechConfigImpl;\r\n Contracts.throwIfNullOrUndefined(configImpl, \"speechConfig\");\r\n\r\n super(audioConfig, configImpl.properties, new SpeakerRecognitionConnectionFactory());\r\n this.privAudioConfigImpl = audioConfig as AudioConfigImpl;\r\n Contracts.throwIfNull(this.privAudioConfigImpl, \"audioConfig\");\r\n\r\n this.privDisposedSpeakerRecognizer = false;\r\n this.privProperties = configImpl.properties;\r\n }\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member SpeakerRecognizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token used to communicate with the service.\r\n * @member SpeakerRecognizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} token - Authorization token.\r\n */\r\n public set authorizationToken(token: string) {\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, token);\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this SpeakerRecognizer.\r\n * @member SpeakerRecognizer.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their values defined for this SpeakerRecognizer.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * Get recognition result for model using given audio\r\n * @member SpeakerRecognizer.prototype.recognizeOnceAsync\r\n * @function\r\n * @public\r\n * @async\r\n * @param {SpeakerIdentificationModel | SpeakerVerificationModel} model Model containing Voice Profiles to be identified\r\n * @param cb - Callback invoked once result is returned.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public async recognizeOnceAsync(model: SpeakerIdentificationModel | SpeakerVerificationModel): Promise {\r\n Contracts.throwIfDisposed(this.privDisposedSpeakerRecognizer);\r\n\r\n return this.recognizeSpeakerOnceAsyncImpl(model);\r\n }\r\n\r\n /**\r\n * Included for compatibility\r\n * @member SpeakerRecognizer.prototype.close\r\n * @function\r\n * @public\r\n * @async\r\n */\r\n public async close(): Promise {\r\n Contracts.throwIfDisposed(this.privDisposedSpeakerRecognizer);\r\n await this.dispose(true);\r\n }\r\n\r\n protected async recognizeSpeakerOnceAsyncImpl(model: SpeakerRecognitionModel): Promise {\r\n Contracts.throwIfDisposed(this.privDisposedSpeakerRecognizer);\r\n\r\n await this.implRecognizerStop();\r\n const result: SpeakerRecognitionResult = await this.privReco.recognizeSpeaker(model);\r\n await this.implRecognizerStop();\r\n\r\n return result;\r\n }\r\n\r\n protected async implRecognizerStop(): Promise {\r\n if (this.privReco) {\r\n await this.privReco.stopRecognizing();\r\n }\r\n return;\r\n }\r\n\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(speechConfig, this.privProperties);\r\n }\r\n\r\n protected createServiceRecognizer(authentication: IAuthentication, connectionFactory: IConnectionFactory, audioConfig: AudioConfig, recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n const audioImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n return new SpeakerServiceRecognizer(authentication, connectionFactory, audioImpl, recognizerConfig, this);\r\n }\r\n\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposedSpeakerRecognizer) {\r\n return;\r\n }\r\n\r\n if (disposing) {\r\n this.privDisposedSpeakerRecognizer = true;\r\n await super.dispose(disposing);\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport { SpeakerRecognitionModel } from \"./SpeakerRecognitionModel.js\";\r\nimport {\r\n VoiceProfile,\r\n VoiceProfileType,\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Defines SpeakerVerificationModel class for Speaker Recognition\r\n * Model contains a profile against which to verify a speaker\r\n * @class SpeakerVerificationModel\r\n */\r\nexport class SpeakerVerificationModel implements SpeakerRecognitionModel {\r\n private privVoiceProfile: VoiceProfile;\r\n\r\n private constructor(profile: VoiceProfile) {\r\n Contracts.throwIfNullOrUndefined(profile, \"VoiceProfile\");\r\n if (profile.profileType === VoiceProfileType.TextIndependentIdentification) {\r\n throw new Error(\"Verification model cannot be created from Identification profile\");\r\n }\r\n this.privVoiceProfile = profile;\r\n }\r\n\r\n public static fromProfile(profile: VoiceProfile): SpeakerVerificationModel {\r\n return new SpeakerVerificationModel(profile);\r\n }\r\n\r\n public get voiceProfile(): VoiceProfile {\r\n return this.privVoiceProfile;\r\n }\r\n\r\n public get profileIds(): string[] {\r\n return [ this.voiceProfile.profileId ];\r\n }\r\n\r\n public get scenario(): string {\r\n if (this.voiceProfile.profileType === VoiceProfileType.TextDependentVerification) {\r\n return \"TextDependentVerification\";\r\n } else {\r\n return \"TextIndependentVerification\";\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {\r\n ForceDictationPropertyName,\r\n OutputFormatPropertyName,\r\n ServicePropertiesPropertyName\r\n} from \"../common.speech/Exports.js\";\r\nimport {IStringDictionary} from \"../common/Exports.js\";\r\nimport {Contracts} from \"./Contracts.js\";\r\nimport {\r\n OutputFormat,\r\n ProfanityOption,\r\n PropertyCollection,\r\n PropertyId,\r\n ServicePropertyChannel,\r\n SpeechSynthesisOutputFormat,\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Speech configuration.\r\n * @class SpeechConfig\r\n */\r\nexport abstract class SpeechConfig {\r\n /**\r\n * Creates and initializes an instance.\r\n * @constructor\r\n */\r\n protected constructor() {\r\n return;\r\n }\r\n\r\n /**\r\n * Static instance of SpeechConfig returned by passing subscriptionKey and service region.\r\n * Note: Please use your LanguageUnderstanding subscription key in case you want to use the Intent recognizer.\r\n * @member SpeechConfig.fromSubscription\r\n * @function\r\n * @public\r\n * @param {string} subscriptionKey - The subscription key.\r\n * @param {string} region - The region name (see the region page).\r\n * @returns {SpeechConfig} The speech factory\r\n */\r\n public static fromSubscription(subscriptionKey: string, region: string): SpeechConfig {\r\n Contracts.throwIfNullOrWhitespace(subscriptionKey, \"subscriptionKey\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const speechImpl: SpeechConfigImpl = new SpeechConfigImpl();\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Region, region);\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_IntentRegion, region);\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Key, subscriptionKey);\r\n\r\n return speechImpl;\r\n }\r\n\r\n /**\r\n * Creates an instance of the speech config with specified endpoint and subscription key.\r\n * This method is intended only for users who use a non-standard service endpoint or parameters.\r\n * Note: Please use your LanguageUnderstanding subscription key in case you want to use the Intent recognizer.\r\n * Note: The query parameters specified in the endpoint URL are not changed, even if they are set by any other APIs.\r\n * For example, if language is defined in the uri as query parameter \"language=de-DE\", and also set by\r\n * SpeechConfig.speechRecognitionLanguage = \"en-US\", the language setting in uri takes precedence,\r\n * and the effective language is \"de-DE\". Only the parameters that are not specified in the\r\n * endpoint URL can be set by other APIs.\r\n * Note: To use authorization token with fromEndpoint, pass an empty string to the subscriptionKey in the\r\n * fromEndpoint method, and then set authorizationToken=\"token\" on the created SpeechConfig instance to\r\n * use the authorization token.\r\n * @member SpeechConfig.fromEndpoint\r\n * @function\r\n * @public\r\n * @param {URL} endpoint - The service endpoint to connect to.\r\n * @param {string} subscriptionKey - The subscription key. If a subscription key is not specified, an authorization token must be set.\r\n * @returns {SpeechConfig} A speech factory instance.\r\n */\r\n public static fromEndpoint(endpoint: URL, subscriptionKey?: string): SpeechConfig {\r\n Contracts.throwIfNull(endpoint, \"endpoint\");\r\n\r\n const speechImpl: SpeechConfigImpl = new SpeechConfigImpl();\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Endpoint, endpoint.href);\r\n\r\n if (undefined !== subscriptionKey) {\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Key, subscriptionKey);\r\n }\r\n return speechImpl;\r\n }\r\n\r\n /**\r\n * Creates an instance of the speech config with specified host and subscription key.\r\n * This method is intended only for users who use a non-default service host. Standard resource path will be assumed.\r\n * For services with a non-standard resource path or no path at all, use fromEndpoint instead.\r\n * Note: Query parameters are not allowed in the host URI and must be set by other APIs.\r\n * Note: To use an authorization token with fromHost, use fromHost(URL),\r\n * and then set the AuthorizationToken property on the created SpeechConfig instance.\r\n * Note: Added in version 1.9.0.\r\n * @member SpeechConfig.fromHost\r\n * @function\r\n * @public\r\n * @param {URL} host - The service endpoint to connect to. Format is \"protocol://host:port\" where \":port\" is optional.\r\n * @param {string} subscriptionKey - The subscription key. If a subscription key is not specified, an authorization token must be set.\r\n * @returns {SpeechConfig} A speech factory instance.\r\n */\r\n public static fromHost(hostName: URL, subscriptionKey?: string): SpeechConfig {\r\n Contracts.throwIfNull(hostName, \"hostName\");\r\n\r\n const speechImpl: SpeechConfigImpl = new SpeechConfigImpl();\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Host, hostName.protocol + \"//\" + hostName.hostname + (hostName.port === \"\" ? \"\" : \":\" + hostName.port));\r\n\r\n if (undefined !== subscriptionKey) {\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Key, subscriptionKey);\r\n }\r\n return speechImpl;\r\n }\r\n\r\n /**\r\n * Creates an instance of the speech factory with specified initial authorization token and region.\r\n * Note: The caller needs to ensure that the authorization token is valid. Before the authorization token\r\n * expires, the caller needs to refresh it by calling this setter with a new valid token.\r\n * Note: Please use a token derived from your LanguageUnderstanding subscription key in case you want\r\n * to use the Intent recognizer. As configuration values are copied when creating a new recognizer,\r\n * the new token value will not apply to recognizers that have already been created. For recognizers\r\n * that have been created before, you need to set authorization token of the corresponding recognizer\r\n * to refresh the token. Otherwise, the recognizers will encounter errors during recognition.\r\n * @member SpeechConfig.fromAuthorizationToken\r\n * @function\r\n * @public\r\n * @param {string} authorizationToken - The initial authorization token.\r\n * @param {string} region - The region name (see the region page).\r\n * @returns {SpeechConfig} A speech factory instance.\r\n */\r\n public static fromAuthorizationToken(authorizationToken: string, region: string): SpeechConfig {\r\n Contracts.throwIfNull(authorizationToken, \"authorizationToken\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const speechImpl: SpeechConfigImpl = new SpeechConfigImpl();\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Region, region);\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_IntentRegion, region);\r\n speechImpl.authorizationToken = authorizationToken;\r\n return speechImpl;\r\n }\r\n\r\n /**\r\n * Sets the proxy configuration.\r\n * Only relevant in Node.js environments.\r\n * Added in version 1.4.0.\r\n * @param proxyHostName The host name of the proxy server.\r\n * @param proxyPort The port number of the proxy server.\r\n */\r\n public abstract setProxy(proxyHostName: string, proxyPort: number): void;\r\n\r\n /**\r\n * Sets the proxy configuration.\r\n * Only relevant in Node.js environments.\r\n * Added in version 1.4.0.\r\n * @param proxyHostName The host name of the proxy server, without the protocol scheme (http://)\r\n * @param proxyPort The port number of the proxy server.\r\n * @param proxyUserName The username of the proxy server.\r\n * @param proxyPassword The password of the proxy server.\r\n */\r\n public abstract setProxy(proxyHostName: string, proxyPort: number, proxyUserName: string, proxyPassword: string): void;\r\n\r\n /**\r\n * Gets the authorization token.\r\n * @member SpeechConfig.prototype.authorizationToken\r\n * @function\r\n * @public\r\n */\r\n public abstract get authorizationToken(): string;\r\n\r\n /**\r\n * Gets/Sets the authorization token.\r\n * Note: The caller needs to ensure that the authorization token is valid. Before the authorization token\r\n * expires, the caller needs to refresh it by calling this setter with a new valid token.\r\n * @member SpeechConfig.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} value - The authorization token.\r\n */\r\n public abstract set authorizationToken(value: string);\r\n\r\n /**\r\n * Returns the configured language.\r\n * @member SpeechConfig.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n */\r\n public abstract get speechRecognitionLanguage(): string;\r\n\r\n /**\r\n * Gets/Sets the input language.\r\n * @member SpeechConfig.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @param {string} value - The authorization token.\r\n */\r\n public abstract set speechRecognitionLanguage(value: string);\r\n\r\n /**\r\n * Sets an arbitrary property.\r\n * @member SpeechConfig.prototype.setProperty\r\n * @function\r\n * @public\r\n * @param {string | PropertyId} name - The name of the property to set.\r\n * @param {string} value - The new value of the property.\r\n */\r\n public abstract setProperty(name: string | PropertyId, value: string): void;\r\n\r\n /**\r\n * Returns the current value of an arbitrary property.\r\n * @member SpeechConfig.prototype.getProperty\r\n * @function\r\n * @public\r\n * @param {string} name - The name of the property to query.\r\n * @param {string} def - The value to return in case the property is not known.\r\n * @returns {string} The current value, or provided default, of the given property.\r\n */\r\n public abstract getProperty(name: string, def?: string): string;\r\n\r\n /**\r\n * Gets speech recognition output format (simple or detailed).\r\n * Note: This output format is for speech recognition result, use [SpeechConfig.speechSynthesisOutputFormat] to\r\n * get synthesized audio output format.\r\n * @member SpeechConfig.prototype.outputFormat\r\n * @function\r\n * @public\r\n * @returns {OutputFormat} Returns the output format.\r\n */\r\n public abstract get outputFormat(): OutputFormat;\r\n\r\n /**\r\n * Gets/Sets speech recognition output format (simple or detailed).\r\n * Note: This output format is for speech recognition result, use [SpeechConfig.speechSynthesisOutputFormat] to\r\n * set synthesized audio output format.\r\n * @member SpeechConfig.prototype.outputFormat\r\n * @function\r\n * @public\r\n */\r\n public abstract set outputFormat(format: OutputFormat);\r\n\r\n /**\r\n * Gets the endpoint ID of a customized speech model that is used for speech recognition.\r\n * @member SpeechConfig.prototype.endpointId\r\n * @function\r\n * @public\r\n * @return {string} The endpoint ID\r\n */\r\n public abstract get endpointId(): string;\r\n\r\n /**\r\n * Gets/Sets the endpoint ID of a customized speech model that is used for speech recognition.\r\n * @member SpeechConfig.prototype.endpointId\r\n * @function\r\n * @public\r\n * @param {string} value - The endpoint ID\r\n */\r\n public abstract set endpointId(value: string);\r\n\r\n /**\r\n * Closes the configuration.\r\n * @member SpeechConfig.prototype.close\r\n * @function\r\n * @public\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n public close(): void { }\r\n\r\n /**\r\n * @member SpeechConfig.prototype.subscriptionKey\r\n * @function\r\n * @public\r\n * @return {string} The subscription key set on the config.\r\n */\r\n public abstract get subscriptionKey(): string;\r\n\r\n /**\r\n * @member SpeechConfig.prototype.region\r\n * @function\r\n * @public\r\n * @return {region} The region set on the config.\r\n */\r\n public abstract get region(): string;\r\n\r\n /**\r\n * Sets a property value that will be passed to service using the specified channel.\r\n * Added in version 1.7.0.\r\n * @member SpeechConfig.prototype.setServiceProperty\r\n * @function\r\n * @public\r\n * @param {name} The name of the property.\r\n * @param {value} Value to set.\r\n * @param {channel} The channel used to pass the specified property to service.\r\n */\r\n public abstract setServiceProperty(name: string, value: string, channel: ServicePropertyChannel): void;\r\n\r\n /**\r\n * Sets profanity option.\r\n * Added in version 1.7.0.\r\n * @member SpeechConfig.prototype.setProfanity\r\n * @function\r\n * @public\r\n * @param {profanity} Profanity option to set.\r\n */\r\n public abstract setProfanity(profanity: ProfanityOption): void;\r\n\r\n /**\r\n * Enable audio logging in service.\r\n * Audio and content logs are stored either in Microsoft-owned storage, or in your own storage account linked\r\n * to your Cognitive Services subscription (Bring Your Own Storage (BYOS) enabled Speech resource).\r\n * The logs will be removed after 30 days.\r\n * Added in version 1.7.0.\r\n * @member SpeechConfig.prototype.enableAudioLogging\r\n * @function\r\n * @public\r\n */\r\n public abstract enableAudioLogging(): void;\r\n\r\n /**\r\n * Includes word-level timestamps.\r\n * Added in version 1.7.0.\r\n * @member SpeechConfig.prototype.requestWordLevelTimestamps\r\n * @function\r\n * @public\r\n */\r\n public abstract requestWordLevelTimestamps(): void;\r\n\r\n /**\r\n * Enable dictation. Only supported in speech continuous recognition.\r\n * Added in version 1.7.0.\r\n * @member SpeechConfig.prototype.enableDictation\r\n * @function\r\n * @public\r\n */\r\n public abstract enableDictation(): void;\r\n\r\n /**\r\n * Gets the language of the speech synthesizer.\r\n * Added in version 1.11.0.\r\n * @member SpeechConfig.prototype.speechSynthesisLanguage\r\n * @function\r\n * @public\r\n * @returns {string} Returns the speech synthesis language.\r\n */\r\n public abstract get speechSynthesisLanguage(): string;\r\n\r\n /**\r\n * Sets the language of the speech synthesizer.\r\n * Added in version 1.11.0.\r\n * @member SpeechConfig.prototype.speechSynthesisLanguage\r\n * @function\r\n * @public\r\n */\r\n public abstract set speechSynthesisLanguage(language: string);\r\n\r\n /**\r\n * Gets the voice of the speech synthesizer.\r\n * Added in version 1.11.0.\r\n * @member SpeechConfig.prototype.speechSynthesisVoiceName\r\n * @function\r\n * @public\r\n * @returns {string} Returns the speech synthesis voice.\r\n */\r\n public abstract get speechSynthesisVoiceName(): string;\r\n\r\n /**\r\n * Sets the voice of the speech synthesizer. (see available voices).\r\n * Added in version 1.11.0.\r\n * @member SpeechConfig.prototype.speechSynthesisVoiceName\r\n * @function\r\n * @public\r\n */\r\n public abstract set speechSynthesisVoiceName(voice: string);\r\n\r\n /**\r\n * Gets the speech synthesis output format.\r\n * Added in version 1.11.0.\r\n * @member SpeechConfig.prototype.speechSynthesisOutputFormat\r\n * @function\r\n * @public\r\n * @returns {SpeechSynthesisOutputFormat} Returns the speech synthesis output format\r\n */\r\n public abstract get speechSynthesisOutputFormat(): SpeechSynthesisOutputFormat;\r\n\r\n /**\r\n * Sets the speech synthesis output format (e.g. Riff16Khz16BitMonoPcm).\r\n * The default format is Audio16Khz64KBitRateMonoMp3 for browser and Riff16Khz16BitMonoPcm for Node.JS.\r\n * Added in version 1.11.0.\r\n * @member SpeechConfig.prototype.speechSynthesisOutputFormat\r\n * @function\r\n * @public\r\n */\r\n public abstract set speechSynthesisOutputFormat(format: SpeechSynthesisOutputFormat);\r\n}\r\n\r\n/**\r\n * @public\r\n * @class SpeechConfigImpl\r\n */\r\nexport class SpeechConfigImpl extends SpeechConfig {\r\n\r\n private privProperties: PropertyCollection;\r\n\r\n public constructor() {\r\n super();\r\n this.privProperties = new PropertyCollection();\r\n this.speechRecognitionLanguage = \"en-US\"; // Should we have a default?\r\n this.outputFormat = OutputFormat.Simple;\r\n }\r\n\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n public get endPoint(): URL {\r\n return new URL(this.privProperties.getProperty(PropertyId.SpeechServiceConnection_Endpoint));\r\n }\r\n\r\n public get subscriptionKey(): string {\r\n return this.privProperties.getProperty(PropertyId.SpeechServiceConnection_Key);\r\n }\r\n\r\n public get region(): string {\r\n return this.privProperties.getProperty(PropertyId.SpeechServiceConnection_Region);\r\n }\r\n\r\n public get authorizationToken(): string {\r\n return this.privProperties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n public set authorizationToken(value: string) {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceAuthorization_Token, value);\r\n }\r\n\r\n public get speechRecognitionLanguage(): string {\r\n return this.privProperties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage);\r\n }\r\n\r\n public set speechRecognitionLanguage(value: string) {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_RecoLanguage, value);\r\n }\r\n\r\n public get autoDetectSourceLanguages(): string {\r\n return this.privProperties.getProperty(PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages);\r\n }\r\n\r\n public set autoDetectSourceLanguages(value: string) {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages, value);\r\n }\r\n\r\n public get outputFormat(): OutputFormat {\r\n return OutputFormat[this.privProperties.getProperty(OutputFormatPropertyName, undefined) as keyof typeof OutputFormat];\r\n }\r\n\r\n public set outputFormat(value: OutputFormat) {\r\n this.privProperties.setProperty(OutputFormatPropertyName, OutputFormat[value]);\r\n }\r\n\r\n public get endpointId(): string {\r\n return this.privProperties.getProperty(PropertyId.SpeechServiceConnection_EndpointId);\r\n }\r\n\r\n public set endpointId(value: string) {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_EndpointId, value);\r\n }\r\n\r\n public setProperty(name: string | PropertyId, value: string): void {\r\n Contracts.throwIfNull(value, \"value\");\r\n\r\n this.privProperties.setProperty(name, value);\r\n }\r\n\r\n public getProperty(name: string | PropertyId, def?: string): string {\r\n\r\n return this.privProperties.getProperty(name, def);\r\n }\r\n\r\n public setProxy(proxyHostName: string, proxyPort: number): void;\r\n public setProxy(proxyHostName: string, proxyPort: number, proxyUserName: string, proxyPassword: string): void;\r\n public setProxy(proxyHostName: any, proxyPort: any, proxyUserName?: any, proxyPassword?: any): void {\r\n this.setProperty(PropertyId[PropertyId.SpeechServiceConnection_ProxyHostName], proxyHostName as string);\r\n this.setProperty(PropertyId[PropertyId.SpeechServiceConnection_ProxyPort], proxyPort as string);\r\n this.setProperty(PropertyId[PropertyId.SpeechServiceConnection_ProxyUserName], proxyUserName as string);\r\n this.setProperty(PropertyId[PropertyId.SpeechServiceConnection_ProxyPassword], proxyPassword as string);\r\n }\r\n\r\n public setServiceProperty(name: string, value: string): void {\r\n const currentProperties: IStringDictionary = JSON.parse(this.privProperties.getProperty(ServicePropertiesPropertyName, \"{}\")) as IStringDictionary;\r\n\r\n currentProperties[name] = value;\r\n\r\n this.privProperties.setProperty(ServicePropertiesPropertyName, JSON.stringify(currentProperties));\r\n }\r\n\r\n public setProfanity(profanity: ProfanityOption): void {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceResponse_ProfanityOption, ProfanityOption[profanity]);\r\n }\r\n\r\n public enableAudioLogging(): void {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_EnableAudioLogging, \"true\");\r\n }\r\n public requestWordLevelTimestamps(): void {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceResponse_RequestWordLevelTimestamps, \"true\");\r\n }\r\n public enableDictation(): void {\r\n this.privProperties.setProperty(ForceDictationPropertyName, \"true\");\r\n }\r\n\r\n public clone(): SpeechConfigImpl {\r\n const ret: SpeechConfigImpl = new SpeechConfigImpl();\r\n ret.privProperties = this.privProperties.clone();\r\n return ret;\r\n }\r\n\r\n public get speechSynthesisLanguage(): string {\r\n return this.privProperties.getProperty(PropertyId.SpeechServiceConnection_SynthLanguage);\r\n }\r\n\r\n public set speechSynthesisLanguage(language: string) {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_SynthLanguage, language);\r\n }\r\n\r\n public get speechSynthesisVoiceName(): string {\r\n return this.privProperties.getProperty(PropertyId.SpeechServiceConnection_SynthVoice);\r\n }\r\n\r\n public set speechSynthesisVoiceName(voice: string) {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_SynthVoice, voice);\r\n }\r\n\r\n public get speechSynthesisOutputFormat(): SpeechSynthesisOutputFormat {\r\n return SpeechSynthesisOutputFormat[this.privProperties.getProperty(PropertyId.SpeechServiceConnection_SynthOutputFormat, undefined) as keyof typeof SpeechSynthesisOutputFormat];\r\n }\r\n\r\n public set speechSynthesisOutputFormat(format: SpeechSynthesisOutputFormat) {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_SynthOutputFormat, SpeechSynthesisOutputFormat[format]);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n CancellationEventArgsBase,\r\n} from \"./CancellationEventArgsBase.js\";\r\n\r\nexport class SpeechRecognitionCanceledEventArgs extends CancellationEventArgsBase {\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport { RecognitionEventArgs, SpeechRecognitionResult, ConversationTranscriptionResult } from \"./Exports.js\";\r\n\r\n/**\r\n * Defines contents of speech recognizing/recognized event.\r\n * @class SpeechRecognitionEventArgs\r\n */\r\nexport class SpeechRecognitionEventArgs extends RecognitionEventArgs {\r\n private privResult: SpeechRecognitionResult;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {SpeechRecognitionResult} result - The speech recognition result.\r\n * @param {number} offset - The offset.\r\n * @param {string} sessionId - The session id.\r\n */\r\n public constructor(result: SpeechRecognitionResult, offset?: number, sessionId?: string) {\r\n super(offset, sessionId);\r\n\r\n this.privResult = result;\r\n }\r\n\r\n /**\r\n * Specifies the recognition result.\r\n * @member SpeechRecognitionEventArgs.prototype.result\r\n * @function\r\n * @public\r\n * @returns {SpeechRecognitionResult} the recognition result.\r\n */\r\n public get result(): SpeechRecognitionResult {\r\n return this.privResult;\r\n }\r\n}\r\n\r\n/**\r\n * Defines contents of conversation transcribed/transcribing event.\r\n * @class ConversationTranscriptionEventArgs\r\n */\r\nexport class ConversationTranscriptionEventArgs extends RecognitionEventArgs {\r\n private privResult: ConversationTranscriptionResult;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {ConversationTranscriptionResult} result - The conversation transcription result.\r\n * @param {number} offset - The offset.\r\n * @param {string} sessionId - The session id.\r\n */\r\n public constructor(result: ConversationTranscriptionResult, offset?: number, sessionId?: string) {\r\n super(offset, sessionId);\r\n\r\n this.privResult = result;\r\n }\r\n\r\n /**\r\n * Specifies the transcription result.\r\n * @member ConversationTranscription1EventArgs.prototype.result\r\n * @function\r\n * @public\r\n * @returns {ConversationTranscriptionResult} the recognition result.\r\n */\r\n public get result(): ConversationTranscriptionResult {\r\n return this.privResult;\r\n }\r\n}\r\n\r\n/**\r\n * Defines contents of meeting transcribed/transcribing event.\r\n * @class MeetingTranscriptionEventArgs\r\n */\r\nexport class MeetingTranscriptionEventArgs extends SpeechRecognitionEventArgs {\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection, RecognitionResult, ResultReason } from \"./Exports.js\";\r\n\r\n/**\r\n * Defines result of speech recognition.\r\n * @class SpeechRecognitionResult\r\n */\r\nexport class SpeechRecognitionResult extends RecognitionResult {\r\n private readonly privSpeakerId: string;\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @public\r\n * @param {string} resultId - The result id.\r\n * @param {ResultReason} reason - The reason.\r\n * @param {string} text - The recognized text.\r\n * @param {number} duration - The duration.\r\n * @param {number} offset - The offset into the stream.\r\n * @param {string} language - Primary Language detected, if provided.\r\n * @param {string} languageDetectionConfidence - Primary Language confidence (\"Unknown,\" \"Low,\" \"Medium,\" \"High\"...), if provided.\r\n * @param {string} speakerId - speaker id for conversation transcription, if provided.\r\n * @param {string} errorDetails - Error details, if provided.\r\n * @param {string} json - Additional Json, if provided.\r\n * @param {PropertyCollection} properties - Additional properties, if provided.\r\n */\r\n public constructor(resultId?: string, reason?: ResultReason, text?: string,\r\n duration?: number, offset?: number, language?: string,\r\n languageDetectionConfidence?: string, speakerId?: string, errorDetails?: string,\r\n json?: string, properties?: PropertyCollection) {\r\n super(resultId, reason, text, duration, offset, language, languageDetectionConfidence, errorDetails, json, properties);\r\n this.privSpeakerId = speakerId;\r\n }\r\n\r\n /**\r\n * speaker id from conversation transcription/id scenarios\r\n * @member SpeechRecognitionResult.prototype.speakerId\r\n * @function\r\n * @public\r\n * @returns {string} id of speaker in given result\r\n */\r\n public get speakerId(): string {\r\n return this.privSpeakerId;\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n IAuthentication,\r\n IConnectionFactory,\r\n OutputFormatPropertyName,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeechConnectionFactory,\r\n SpeechServiceConfig,\r\n SpeechServiceRecognizer,\r\n} from \"../common.speech/Exports.js\";\r\nimport { marshalPromiseToCallbacks } from \"../common/Exports.js\";\r\nimport { AudioConfigImpl } from \"./Audio/AudioConfig.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport {\r\n AudioConfig,\r\n AutoDetectSourceLanguageConfig,\r\n KeywordRecognitionModel,\r\n OutputFormat,\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer,\r\n SpeechRecognitionCanceledEventArgs,\r\n SpeechRecognitionEventArgs,\r\n SpeechRecognitionResult,\r\n} from \"./Exports.js\";\r\nimport { SpeechConfig, SpeechConfigImpl } from \"./SpeechConfig.js\";\r\n\r\n/**\r\n * Performs speech recognition from microphone, file, or other audio input streams, and gets transcribed text as result.\r\n * @class SpeechRecognizer\r\n */\r\nexport class SpeechRecognizer extends Recognizer {\r\n private privDisposedRecognizer: boolean;\r\n\r\n /**\r\n * SpeechRecognizer constructor.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - an set of initial properties for this recognizer\r\n * @param {AudioConfig} audioConfig - An optional audio configuration associated with the recognizer\r\n */\r\n public constructor(speechConfig: SpeechConfig, audioConfig?: AudioConfig) {\r\n const speechConfigImpl: SpeechConfigImpl = speechConfig as SpeechConfigImpl;\r\n Contracts.throwIfNull(speechConfigImpl, \"speechConfig\");\r\n\r\n Contracts.throwIfNullOrWhitespace(\r\n speechConfigImpl.properties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage),\r\n PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n\r\n super(audioConfig, speechConfigImpl.properties, new SpeechConnectionFactory());\r\n this.privDisposedRecognizer = false;\r\n }\r\n\r\n /**\r\n * SpeechRecognizer constructor.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - an set of initial properties for this recognizer\r\n * @param {AutoDetectSourceLanguageConfig} autoDetectSourceLanguageConfig - An source language detection configuration associated with the recognizer\r\n * @param {AudioConfig} audioConfig - An optional audio configuration associated with the recognizer\r\n */\r\n public static FromConfig(speechConfig: SpeechConfig, autoDetectSourceLanguageConfig: AutoDetectSourceLanguageConfig, audioConfig?: AudioConfig): SpeechRecognizer {\r\n const speechConfigImpl: SpeechConfigImpl = speechConfig as SpeechConfigImpl;\r\n autoDetectSourceLanguageConfig.properties.mergeTo(speechConfigImpl.properties);\r\n const recognizer = new SpeechRecognizer(speechConfig, audioConfig);\r\n return recognizer;\r\n }\r\n\r\n /**\r\n * The event recognizing signals that an intermediate recognition result is received.\r\n * @member SpeechRecognizer.prototype.recognizing\r\n * @function\r\n * @public\r\n */\r\n public recognizing: (sender: Recognizer, event: SpeechRecognitionEventArgs) => void;\r\n\r\n /**\r\n * The event recognized signals that a final recognition result is received.\r\n * @member SpeechRecognizer.prototype.recognized\r\n * @function\r\n * @public\r\n */\r\n public recognized: (sender: Recognizer, event: SpeechRecognitionEventArgs) => void;\r\n\r\n /**\r\n * The event canceled signals that an error occurred during recognition.\r\n * @member SpeechRecognizer.prototype.canceled\r\n * @function\r\n * @public\r\n */\r\n public canceled: (sender: Recognizer, event: SpeechRecognitionCanceledEventArgs) => void;\r\n\r\n /**\r\n * Gets the endpoint id of a customized speech model that is used for speech recognition.\r\n * @member SpeechRecognizer.prototype.endpointId\r\n * @function\r\n * @public\r\n * @returns {string} the endpoint id of a customized speech model that is used for speech recognition.\r\n */\r\n public get endpointId(): string {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_EndpointId, \"00000000-0000-0000-0000-000000000000\");\r\n }\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member SpeechRecognizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token used to communicate with the service.\r\n * @member SpeechRecognizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} token - Authorization token.\r\n */\r\n public set authorizationToken(token: string) {\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, token);\r\n }\r\n\r\n /**\r\n * Gets the spoken language of recognition.\r\n * @member SpeechRecognizer.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @returns {string} The spoken language of recognition.\r\n */\r\n public get speechRecognitionLanguage(): string {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage);\r\n }\r\n\r\n /**\r\n * Gets the output format of recognition.\r\n * @member SpeechRecognizer.prototype.outputFormat\r\n * @function\r\n * @public\r\n * @returns {OutputFormat} The output format of recognition.\r\n */\r\n public get outputFormat(): OutputFormat {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n\r\n if (this.properties.getProperty(OutputFormatPropertyName, OutputFormat[OutputFormat.Simple]) === OutputFormat[OutputFormat.Simple]) {\r\n return OutputFormat.Simple;\r\n } else {\r\n return OutputFormat.Detailed;\r\n }\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this SpeechRecognizer.\r\n * @member SpeechRecognizer.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their values defined for this SpeechRecognizer.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * Starts speech recognition, and stops after the first utterance is recognized.\r\n * The task returns the recognition text as result.\r\n * Note: RecognizeOnceAsync() returns when the first utterance has been recognized,\r\n * so it is suitable only for single shot recognition\r\n * like command or query. For long-running recognition, use StartContinuousRecognitionAsync() instead.\r\n * @member SpeechRecognizer.prototype.recognizeOnceAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback that received the SpeechRecognitionResult.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public recognizeOnceAsync(cb?: (e: SpeechRecognitionResult) => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.recognizeOnceAsyncImpl(RecognitionMode.Interactive), cb, err);\r\n }\r\n\r\n /**\r\n * Starts speech recognition, until stopContinuousRecognitionAsync() is called.\r\n * User must subscribe to events to receive recognition results.\r\n * @member SpeechRecognizer.prototype.startContinuousRecognitionAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the recognition has started.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public startContinuousRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.startContinuousRecognitionAsyncImpl(RecognitionMode.Conversation), cb, err);\r\n }\r\n\r\n /**\r\n * Stops continuous speech recognition.\r\n * @member SpeechRecognizer.prototype.stopContinuousRecognitionAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the recognition has stopped.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public stopContinuousRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.stopContinuousRecognitionAsyncImpl(), cb, err);\r\n }\r\n\r\n /**\r\n * Starts speech recognition with keyword spotting, until\r\n * stopKeywordRecognitionAsync() is called.\r\n * User must subscribe to events to receive recognition results.\r\n * Note: Key word spotting functionality is only available on the\r\n * Speech Devices SDK. This functionality is currently not included in the SDK itself.\r\n * @member SpeechRecognizer.prototype.startKeywordRecognitionAsync\r\n * @function\r\n * @public\r\n * @param {KeywordRecognitionModel} model The keyword recognition model that\r\n * specifies the keyword to be recognized.\r\n * @param cb - Callback invoked once the recognition has started.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public startKeywordRecognitionAsync(model: KeywordRecognitionModel, cb?: () => void, err?: (e: string) => void): void {\r\n Contracts.throwIfNull(model, \"model\");\r\n\r\n if (!!err) {\r\n err(\"Not yet implemented.\");\r\n }\r\n }\r\n\r\n /**\r\n * Stops continuous speech recognition.\r\n * Note: Key word spotting functionality is only available on the\r\n * Speech Devices SDK. This functionality is currently not included in the SDK itself.\r\n * @member SpeechRecognizer.prototype.stopKeywordRecognitionAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the recognition has stopped.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public stopKeywordRecognitionAsync(cb?: () => void): void {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }\r\n\r\n /**\r\n * closes all external resources held by an instance of this class.\r\n * @member SpeechRecognizer.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, errorCb?: (error: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n marshalPromiseToCallbacks(this.dispose(true), cb, errorCb);\r\n }\r\n\r\n /**\r\n * Disposes any resources held by the object.\r\n * @member SpeechRecognizer.prototype.dispose\r\n * @function\r\n * @public\r\n * @param {boolean} disposing - true if disposing the object.\r\n */\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposedRecognizer) {\r\n return;\r\n }\r\n\r\n if (disposing) {\r\n this.privDisposedRecognizer = true;\r\n await this.implRecognizerStop();\r\n }\r\n\r\n await super.dispose(disposing);\r\n }\r\n\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(speechConfig, this.privProperties);\r\n }\r\n\r\n protected createServiceRecognizer(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioConfig: AudioConfig,\r\n recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n const configImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n return new SpeechServiceRecognizer(authentication, connectionFactory, configImpl, recognizerConfig, this);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines contents of speech synthesis bookmark event.\r\n * @class SpeechSynthesisBookmarkEventArgs\r\n * Added in version 1.16.0\r\n */\r\nexport class SpeechSynthesisBookmarkEventArgs {\r\n private privAudioOffset: number;\r\n private privText: string;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {number} audioOffset - The audio offset.\r\n * @param {string} text - The bookmark text.\r\n */\r\n public constructor(audioOffset: number, text: string) {\r\n this.privAudioOffset = audioOffset;\r\n this.privText = text;\r\n }\r\n\r\n /**\r\n * Specifies the audio offset.\r\n * @member SpeechSynthesisBookmarkEventArgs.prototype.audioOffset\r\n * @function\r\n * @public\r\n * @returns {number} the audio offset.\r\n */\r\n public get audioOffset(): number {\r\n return this.privAudioOffset;\r\n }\r\n\r\n /**\r\n * Specifies the bookmark.\r\n * @member SpeechSynthesisBookmarkEventArgs.prototype.text\r\n * @function\r\n * @public\r\n * @returns {string} the bookmark text.\r\n */\r\n public get text(): string {\r\n return this.privText;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines the boundary type of speech synthesis boundary event.\r\n * @class SpeechSynthesisBoundaryType\r\n * Added in version 1.21.0\r\n */\r\nexport enum SpeechSynthesisBoundaryType {\r\n /**\r\n * Indicates the boundary text is a word.\r\n * @member SpeechSynthesisBoundaryType.Word\r\n */\r\n Word = \"WordBoundary\",\r\n\r\n /**\r\n * Indicates the boundary text is a punctuation.\r\n * @member SpeechSynthesisBoundaryType.Punctuation\r\n */\r\n Punctuation = \"PunctuationBoundary\",\r\n\r\n /**\r\n * Indicates the boundary text is a sentence.\r\n * @member SpeechSynthesisBoundaryType.Sentence\r\n */\r\n Sentence = \"SentenceBoundary\"\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { SpeechSynthesisResult } from \"./Exports.js\";\r\n\r\n/**\r\n * Defines contents of speech synthesis events.\r\n * @class SpeechSynthesisEventArgs\r\n * Added in version 1.11.0\r\n */\r\nexport class SpeechSynthesisEventArgs {\r\n private readonly privResult: SpeechSynthesisResult;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {SpeechSynthesisResult} result - The speech synthesis result.\r\n */\r\n public constructor(result: SpeechSynthesisResult) {\r\n this.privResult = result;\r\n }\r\n\r\n /**\r\n * Specifies the synthesis result.\r\n * @member SpeechSynthesisEventArgs.prototype.result\r\n * @function\r\n * @public\r\n * @returns {SpeechSynthesisResult} the synthesis result.\r\n */\r\n public get result(): SpeechSynthesisResult {\r\n return this.privResult;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Define speech synthesis audio output formats.\r\n * @enum SpeechSynthesisOutputFormat\r\n * Updated in version 1.17.0\r\n */\r\nexport enum SpeechSynthesisOutputFormat {\r\n /**\r\n * raw-8khz-8bit-mono-mulaw\r\n * @member SpeechSynthesisOutputFormat.Raw8Khz8BitMonoMULaw,\r\n */\r\n Raw8Khz8BitMonoMULaw,\r\n\r\n /**\r\n * riff-16khz-16kbps-mono-siren\r\n * @note Unsupported by the service. Do not use this value.\r\n * @member SpeechSynthesisOutputFormat.Riff16Khz16KbpsMonoSiren\r\n */\r\n Riff16Khz16KbpsMonoSiren,\r\n\r\n /**\r\n * audio-16khz-16kbps-mono-siren\r\n * @note Unsupported by the service. Do not use this value.\r\n * @member SpeechSynthesisOutputFormat.Audio16Khz16KbpsMonoSiren\r\n */\r\n Audio16Khz16KbpsMonoSiren,\r\n\r\n /**\r\n * audio-16khz-32kbitrate-mono-mp3\r\n * @member SpeechSynthesisOutputFormat.Audio16Khz32KBitRateMonoMp3\r\n */\r\n Audio16Khz32KBitRateMonoMp3,\r\n\r\n /**\r\n * audio-16khz-128kbitrate-mono-mp3\r\n * @member SpeechSynthesisOutputFormat.Audio16Khz128KBitRateMonoMp3\r\n */\r\n Audio16Khz128KBitRateMonoMp3,\r\n\r\n /**\r\n * audio-16khz-64kbitrate-mono-mp3\r\n * @member SpeechSynthesisOutputFormat.Audio16Khz64KBitRateMonoMp3\r\n */\r\n Audio16Khz64KBitRateMonoMp3,\r\n\r\n /**\r\n * audio-24khz-48kbitrate-mono-mp3\r\n * @member SpeechSynthesisOutputFormat.Audio24Khz48KBitRateMonoMp3\r\n */\r\n Audio24Khz48KBitRateMonoMp3,\r\n\r\n /**\r\n * audio-24khz-96kbitrate-mono-mp3\r\n * @member SpeechSynthesisOutputFormat.Audio24Khz96KBitRateMonoMp3\r\n */\r\n Audio24Khz96KBitRateMonoMp3,\r\n\r\n /**\r\n * audio-24khz-160kbitrate-mono-mp3\r\n * @member SpeechSynthesisOutputFormat.Audio24Khz160KBitRateMonoMp3\r\n */\r\n Audio24Khz160KBitRateMonoMp3,\r\n\r\n /**\r\n * raw-16khz-16bit-mono-truesilk\r\n * @member SpeechSynthesisOutputFormat.Raw16Khz16BitMonoTrueSilk\r\n */\r\n Raw16Khz16BitMonoTrueSilk,\r\n\r\n /**\r\n * riff-16khz-16bit-mono-pcm\r\n * @member SpeechSynthesisOutputFormat.Riff16Khz16BitMonoPcm\r\n */\r\n Riff16Khz16BitMonoPcm,\r\n\r\n /**\r\n * riff-8khz-16bit-mono-pcm\r\n * @member SpeechSynthesisOutputFormat.Riff8Khz16BitMonoPcm\r\n */\r\n Riff8Khz16BitMonoPcm,\r\n\r\n /**\r\n * riff-24khz-16bit-mono-pcm\r\n * @member SpeechSynthesisOutputFormat.Riff24Khz16BitMonoPcm\r\n */\r\n Riff24Khz16BitMonoPcm,\r\n\r\n /**\r\n * riff-8khz-8bit-mono-mulaw\r\n * @member SpeechSynthesisOutputFormat.Riff8Khz8BitMonoMULaw\r\n */\r\n Riff8Khz8BitMonoMULaw,\r\n\r\n /**\r\n * raw-16khz-16bit-mono-pcm\r\n * @member SpeechSynthesisOutputFormat.Raw16Khz16BitMonoPcm\r\n */\r\n Raw16Khz16BitMonoPcm,\r\n\r\n /**\r\n * raw-24khz-16bit-mono-pcm\r\n * @member SpeechSynthesisOutputFormat.Raw24Khz16BitMonoPcm\r\n */\r\n Raw24Khz16BitMonoPcm,\r\n\r\n /**\r\n * raw-8khz-16bit-mono-pcm\r\n * @member SpeechSynthesisOutputFormat.Raw8Khz16BitMonoPcm\r\n */\r\n Raw8Khz16BitMonoPcm,\r\n\r\n /**\r\n * ogg-16khz-16bit-mono-opus\r\n * @member SpeechSynthesisOutputFormat.Ogg16Khz16BitMonoOpus\r\n */\r\n Ogg16Khz16BitMonoOpus,\r\n\r\n /**\r\n * ogg-24khz-16bit-mono-opus\r\n * @member SpeechSynthesisOutputFormat.Ogg24Khz16BitMonoOpus\r\n */\r\n Ogg24Khz16BitMonoOpus,\r\n\r\n /**\r\n * raw-48khz-16bit-mono-pcm\r\n * @member SpeechSynthesisOutputFormat.Raw48Khz16BitMonoPcm\r\n */\r\n Raw48Khz16BitMonoPcm,\r\n\r\n /**\r\n * riff-48khz-16bit-mono-pcm\r\n * @member SpeechSynthesisOutputFormat.Riff48Khz16BitMonoPcm\r\n */\r\n\r\n Riff48Khz16BitMonoPcm,\r\n /**\r\n * audio-48khz-96kbitrate-mono-mp3\r\n * @member SpeechSynthesisOutputFormat.Audio48Khz96KBitRateMonoMp3\r\n */\r\n Audio48Khz96KBitRateMonoMp3,\r\n\r\n /**\r\n * audio-48khz-192kbitrate-mono-mp3\r\n * @member SpeechSynthesisOutputFormat.Audio48Khz192KBitRateMonoMp3\r\n */\r\n Audio48Khz192KBitRateMonoMp3,\r\n\r\n /**\r\n * ogg-48khz-16bit-mono-opus\r\n * Added in version 1.16.0\r\n * @member SpeechSynthesisOutputFormat.Ogg48Khz16BitMonoOpus\r\n */\r\n Ogg48Khz16BitMonoOpus,\r\n\r\n /**\r\n * webm-16khz-16bit-mono-opus\r\n * Added in version 1.16.0\r\n * @member SpeechSynthesisOutputFormat.Webm16Khz16BitMonoOpus\r\n */\r\n Webm16Khz16BitMonoOpus,\r\n\r\n /**\r\n * webm-24khz-16bit-mono-opus\r\n * Added in version 1.16.0\r\n * @member SpeechSynthesisOutputFormat.Webm24Khz16BitMonoOpus\r\n */\r\n Webm24Khz16BitMonoOpus,\r\n\r\n /**\r\n * raw-24khz-16bit-mono-truesilk\r\n * Added in version 1.17.0\r\n * @member SpeechSynthesisOutputFormat.Raw24Khz16BitMonoTrueSilk\r\n */\r\n Raw24Khz16BitMonoTrueSilk,\r\n\r\n /**\r\n * raw-8khz-8bit-mono-alaw\r\n * Added in version 1.17.0\r\n * @member SpeechSynthesisOutputFormat.Raw8Khz8BitMonoALaw\r\n */\r\n Raw8Khz8BitMonoALaw,\r\n\r\n /**\r\n * riff-8khz-8bit-mono-alaw\r\n * Added in version 1.17.0\r\n * @member SpeechSynthesisOutputFormat.Riff8Khz8BitMonoALaw\r\n */\r\n Riff8Khz8BitMonoALaw,\r\n\r\n /**\r\n * webm-24khz-16bit-24kbps-mono-opus\r\n * Audio compressed by OPUS codec in a webm container, with bitrate of 24kbps, optimized for IoT scenario.\r\n * Added in version 1.19.0\r\n * @member SpeechSynthesisOutputFormat.Webm24Khz16Bit24KbpsMonoOpus\r\n */\r\n Webm24Khz16Bit24KbpsMonoOpus,\r\n\r\n /**\r\n * audio-16khz-16bit-32kbps-mono-opus\r\n * Audio compressed by OPUS codec without container, with bitrate of 32kbps.\r\n * Added in version 1.20.0\r\n * @member SpeechSynthesisOutputFormat.Audio16Khz16Bit32KbpsMonoOpus\r\n */\r\n Audio16Khz16Bit32KbpsMonoOpus,\r\n\r\n /**\r\n * audio-24khz-16bit-48kbps-mono-opus\r\n * Audio compressed by OPUS codec without container, with bitrate of 48kbps.\r\n * Added in version 1.20.0\r\n * @member SpeechSynthesisOutputFormat.Audio24Khz16Bit48KbpsMonoOpus\r\n */\r\n Audio24Khz16Bit48KbpsMonoOpus,\r\n\r\n /**\r\n * audio-24khz-16bit-24kbps-mono-opus\r\n * Audio compressed by OPUS codec without container, with bitrate of 24kbps.\r\n * Added in version 1.20.0\r\n * @member SpeechSynthesisOutputFormat.Audio24Khz16Bit24KbpsMonoOpus\r\n */\r\n Audio24Khz16Bit24KbpsMonoOpus,\r\n\r\n /**\r\n * raw-22050hz-16bit-mono-pcm\r\n * Raw PCM audio at 22050Hz sampling rate and 16-bit depth.\r\n * Added in version 1.22.0\r\n * @member SpeechSynthesisOutputFormat.Raw22050Hz16BitMonoPcm\r\n */\r\n Raw22050Hz16BitMonoPcm,\r\n\r\n /**\r\n * riff-22050hz-16bit-mono-pcm\r\n * PCM audio at 22050Hz sampling rate and 16-bit depth, with RIFF header.\r\n * Added in version 1.22.0\r\n * @member SpeechSynthesisOutputFormat.Riff22050Hz16BitMonoPcm\r\n */\r\n Riff22050Hz16BitMonoPcm,\r\n\r\n /**\r\n * raw-44100hz-16bit-mono-pcm\r\n * Raw PCM audio at 44100Hz sampling rate and 16-bit depth.\r\n * Added in version 1.22.0\r\n * @member SpeechSynthesisOutputFormat.Raw44100Hz16BitMonoPcm\r\n */\r\n Raw44100Hz16BitMonoPcm,\r\n\r\n /**\r\n * riff-44100hz-16bit-mono-pcm\r\n * PCM audio at 44100Hz sampling rate and 16-bit depth, with RIFF header.\r\n * Added in version 1.22.0\r\n * @member SpeechSynthesisOutputFormat.Riff44100Hz16BitMonoPcm\r\n */\r\n Riff44100Hz16BitMonoPcm,\r\n\r\n /**\r\n * amr-wb-16000hz\r\n * AMR-WB audio at 16kHz sampling rate.\r\n * Added in version 1.38.0\r\n * @member SpeechSynthesisOutputFormat.AmrWb16000Hz\r\n */\r\n AmrWb16000Hz,\r\n\r\n /**\r\n * g722-16khz-64kbps\r\n * G.722 audio at 16kHz sampling rate and 64kbps bitrate.\r\n * Added in version 1.38.0\r\n */\r\n G72216Khz64Kbps\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n PropertyCollection,\r\n ResultReason,\r\n SynthesisResult\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Defines result of speech synthesis.\r\n * @class SpeechSynthesisResult\r\n * Added in version 1.11.0\r\n */\r\nexport class SpeechSynthesisResult extends SynthesisResult {\r\n private readonly privAudioData: ArrayBuffer;\r\n private readonly privAudioDuration: number;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} resultId - The result id.\r\n * @param {ResultReason} reason - The reason.\r\n * @param {ArrayBuffer} audioData - The synthesized audio binary.\r\n * @param {string} errorDetails - Error details, if provided.\r\n * @param {PropertyCollection} properties - Additional properties, if provided.\r\n * @param {number} audioDuration - The audio duration.\r\n */\r\n public constructor(resultId?: string, reason?: ResultReason, audioData?: ArrayBuffer,\r\n errorDetails?: string, properties?: PropertyCollection, audioDuration?: number) {\r\n super(resultId, reason, errorDetails, properties);\r\n this.privAudioData = audioData;\r\n this.privAudioDuration = audioDuration;\r\n }\r\n\r\n /**\r\n * The synthesized audio data\r\n * @member SpeechSynthesisResult.prototype.audioData\r\n * @function\r\n * @public\r\n * @returns {ArrayBuffer} The synthesized audio data.\r\n */\r\n public get audioData(): ArrayBuffer {\r\n return this.privAudioData;\r\n }\r\n\r\n /**\r\n * The time duration of synthesized audio, in ticks (100 nanoseconds).\r\n * @member SpeechSynthesisResult.prototype.audioDuration\r\n * @function\r\n * @public\r\n * @returns {number} The time duration of synthesized audio.\r\n */\r\n public get audioDuration(): number {\r\n return this.privAudioDuration;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines contents of speech synthesis viseme event.\r\n * @class SpeechSynthesisVisemeEventArgs\r\n * Added in version 1.16.0\r\n */\r\nexport class SpeechSynthesisVisemeEventArgs {\r\n private privAudioOffset: number;\r\n private privVisemeId: number;\r\n private privAnimation: string;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {number} audioOffset - The audio offset.\r\n * @param {number} visemeId - The viseme ID.\r\n * @param {string} animation - The animation, could be in svg or other format.\r\n */\r\n public constructor(audioOffset: number, visemeId: number, animation: string) {\r\n this.privAudioOffset = audioOffset;\r\n this.privVisemeId = visemeId;\r\n this.privAnimation = animation;\r\n }\r\n\r\n /**\r\n * Specifies the audio offset.\r\n * @member SpeechSynthesisVisemeEventArgs.prototype.audioOffset\r\n * @function\r\n * @public\r\n * @returns {number} the audio offset.\r\n */\r\n public get audioOffset(): number {\r\n return this.privAudioOffset;\r\n }\r\n\r\n /**\r\n * Specifies the viseme ID.\r\n * @member SpeechSynthesisVisemeEventArgs.prototype.visemeId\r\n * @function\r\n * @public\r\n * @returns {number} the viseme ID.\r\n */\r\n public get visemeId(): number {\r\n return this.privVisemeId;\r\n }\r\n\r\n /**\r\n * Specifies the animation.\r\n * @member SpeechSynthesisVisemeEventArgs.prototype.animation\r\n * @function\r\n * @public\r\n * @returns {string} the animation, could be in svg or other format.\r\n */\r\n public get animation(): string {\r\n return this.privAnimation;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { SpeechSynthesisBoundaryType } from \"./SpeechSynthesisBoundaryType.js\";\r\n\r\n/**\r\n * Defines contents of speech synthesis word boundary event.\r\n * @class SpeechSynthesisWordBoundaryEventArgs\r\n * Added in version 1.11.0\r\n */\r\nexport class SpeechSynthesisWordBoundaryEventArgs {\r\n private readonly privAudioOffset: number;\r\n private readonly privDuration: number;\r\n private readonly privText: string;\r\n private readonly privWordLength: number;\r\n private readonly privTextOffset: number;\r\n private readonly privBoundaryType: SpeechSynthesisBoundaryType;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {number} audioOffset - The audio offset.\r\n * @param {number} duration - The audio duration.\r\n * @param {string} text - The text.\r\n * @param {number} wordLength - The length of the word.\r\n * @param {number} textOffset - The text offset.\r\n * @param {SpeechSynthesisBoundaryType} boundaryType - The boundary type\r\n */\r\n public constructor(audioOffset: number, duration: number, text: string, wordLength: number,\r\n textOffset: number, boundaryType: SpeechSynthesisBoundaryType) {\r\n this.privAudioOffset = audioOffset;\r\n this.privDuration = duration;\r\n this.privText = text;\r\n this.privWordLength = wordLength;\r\n this.privTextOffset = textOffset;\r\n this.privBoundaryType = boundaryType;\r\n }\r\n\r\n /**\r\n * Specifies the audio offset.\r\n * @member SpeechSynthesisWordBoundaryEventArgs.prototype.audioOffset\r\n * @function\r\n * @public\r\n * @returns {number} the audio offset.\r\n */\r\n public get audioOffset(): number {\r\n return this.privAudioOffset;\r\n }\r\n\r\n /**\r\n * Specifies the duration, in ticks (100 nanoseconds).\r\n * @member SpeechSynthesisWordBoundaryEventArgs.prototype.duration\r\n * @function\r\n * @public\r\n * @returns {number} Duration in 100 nanosecond increments.\r\n */\r\n public get duration(): number {\r\n return this.privDuration;\r\n }\r\n\r\n /**\r\n * Specifies the text of the word boundary event.\r\n * @member SpeechSynthesisWordBoundaryEventArgs.prototype.text\r\n * @function\r\n * @public\r\n * @returns {string} the text.\r\n */\r\n public get text(): string {\r\n return this.privText;\r\n }\r\n\r\n /**\r\n * Specifies the word length\r\n * @member SpeechSynthesisWordBoundaryEventArgs.prototype.wordLength\r\n * @function\r\n * @public\r\n * @returns {number} the word length\r\n */\r\n public get wordLength(): number {\r\n return this.privWordLength;\r\n }\r\n\r\n /**\r\n * Specifies the text offset.\r\n * @member SpeechSynthesisWordBoundaryEventArgs.prototype.textOffset\r\n * @function\r\n * @public\r\n * @returns {number} the text offset.\r\n */\r\n public get textOffset(): number {\r\n return this.privTextOffset;\r\n }\r\n\r\n /**\r\n * Specifies the boundary type.\r\n * @member SpeechSynthesisWordBoundaryEventArgs.prototype.boundaryType\r\n * @function\r\n * @public\r\n * @returns {SpeechSynthesisBoundaryType} the boundary type.\r\n */\r\n public get boundaryType(): SpeechSynthesisBoundaryType {\r\n return this.privBoundaryType;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable @typescript-eslint/no-empty-function */\r\n\r\nimport { PathLike } from \"fs\";\r\nimport { IRestResponse } from \"../common.browser/RestMessageAdapter.js\";\r\nimport {\r\n IAuthentication,\r\n ISynthesisConnectionFactory,\r\n SpeechSynthesisConnectionFactory,\r\n SynthesisAdapterBase,\r\n SpeechSynthesisAdapter,\r\n SynthesisRestAdapter,\r\n SynthesizerConfig,\r\n} from \"../common.speech/Exports.js\";\r\nimport {\r\n createNoDashGuid,\r\n marshalPromiseToCallbacks,\r\n} from \"../common/Exports.js\";\r\nimport { AudioOutputConfigImpl } from \"./Audio/AudioConfig.js\";\r\nimport { AudioFileWriter } from \"./Audio/AudioFileWriter.js\";\r\nimport { AudioOutputFormatImpl } from \"./Audio/AudioOutputFormat.js\";\r\nimport {\r\n PullAudioOutputStreamImpl,\r\n PushAudioOutputStreamImpl\r\n} from \"./Audio/AudioOutputStream.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport {\r\n AudioConfig,\r\n AudioOutputStream,\r\n AutoDetectSourceLanguageConfig,\r\n PropertyId,\r\n PullAudioOutputStream,\r\n PushAudioOutputStreamCallback,\r\n SpeechConfig,\r\n SpeechSynthesisBookmarkEventArgs,\r\n SpeechSynthesisEventArgs,\r\n SpeechSynthesisOutputFormat,\r\n SpeechSynthesisResult,\r\n SpeechSynthesisVisemeEventArgs,\r\n SpeechSynthesisWordBoundaryEventArgs,\r\n SynthesisVoicesResult,\r\n Synthesizer\r\n} from \"./Exports.js\";\r\nimport { SpeechConfigImpl } from \"./SpeechConfig.js\";\r\nimport { SynthesisRequest } from \"./Synthesizer.js\";\r\n\r\n/**\r\n * Defines the class SpeechSynthesizer for text to speech.\r\n * Updated in version 1.16.0\r\n * @class SpeechSynthesizer\r\n */\r\nexport class SpeechSynthesizer extends Synthesizer {\r\n protected audioConfig: AudioConfig;\r\n\r\n /**\r\n * Defines event handler for synthesis start events.\r\n * @member SpeechSynthesizer.prototype.synthesisStarted\r\n * @function\r\n * @public\r\n */\r\n public synthesisStarted: (sender: SpeechSynthesizer, event: SpeechSynthesisEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for synthesizing events.\r\n * @member SpeechSynthesizer.prototype.synthesizing\r\n * @function\r\n * @public\r\n */\r\n public synthesizing: (sender: SpeechSynthesizer, event: SpeechSynthesisEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for synthesis completed events.\r\n * @member SpeechSynthesizer.prototype.synthesisCompleted\r\n * @function\r\n * @public\r\n */\r\n public synthesisCompleted: (sender: SpeechSynthesizer, event: SpeechSynthesisEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for synthesis cancelled events.\r\n * @member SpeechSynthesizer.prototype.SynthesisCanceled\r\n * @function\r\n * @public\r\n */\r\n public SynthesisCanceled: (sender: SpeechSynthesizer, event: SpeechSynthesisEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for word boundary events\r\n * @member SpeechSynthesizer.prototype.wordBoundary\r\n * @function\r\n * @public\r\n */\r\n public wordBoundary: (sender: SpeechSynthesizer, event: SpeechSynthesisWordBoundaryEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for bookmark reached events\r\n * Added in version 1.16.0\r\n * @member SpeechSynthesizer.prototype.bookmarkReached\r\n * @function\r\n * @public\r\n */\r\n public bookmarkReached: (sender: SpeechSynthesizer, event: SpeechSynthesisBookmarkEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for viseme received event\r\n * Added in version 1.16.0\r\n * @member SpeechSynthesizer.prototype.visemeReceived\r\n * @function\r\n * @public\r\n */\r\n public visemeReceived: (sender: SpeechSynthesizer, event: SpeechSynthesisVisemeEventArgs) => void;\r\n\r\n /**\r\n * SpeechSynthesizer constructor.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - An set of initial properties for this synthesizer.\r\n * @param {AudioConfig} audioConfig - An optional audio configuration associated with the synthesizer.\r\n */\r\n public constructor(speechConfig: SpeechConfig, audioConfig?: AudioConfig) {\r\n super(speechConfig);\r\n\r\n if (audioConfig !== null) {\r\n if (audioConfig === undefined) {\r\n this.audioConfig = (typeof window === \"undefined\") ? undefined : AudioConfig.fromDefaultSpeakerOutput();\r\n } else {\r\n this.audioConfig = audioConfig;\r\n }\r\n }\r\n\r\n this.privConnectionFactory = new SpeechSynthesisConnectionFactory();\r\n this.implCommonSynthesizeSetup();\r\n }\r\n\r\n /**\r\n * SpeechSynthesizer constructor.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - an set of initial properties for this synthesizer\r\n * @param {AutoDetectSourceLanguageConfig} autoDetectSourceLanguageConfig - An source language detection configuration associated with the synthesizer\r\n * @param {AudioConfig} audioConfig - An optional audio configuration associated with the synthesizer\r\n */\r\n public static FromConfig(speechConfig: SpeechConfig, autoDetectSourceLanguageConfig: AutoDetectSourceLanguageConfig, audioConfig?: AudioConfig): SpeechSynthesizer {\r\n const speechConfigImpl: SpeechConfigImpl = speechConfig as SpeechConfigImpl;\r\n autoDetectSourceLanguageConfig.properties.mergeTo(speechConfigImpl.properties);\r\n return new SpeechSynthesizer(speechConfig, audioConfig);\r\n }\r\n\r\n /**\r\n * Executes speech synthesis on plain text.\r\n * The task returns the synthesis result.\r\n * @member SpeechSynthesizer.prototype.speakTextAsync\r\n * @function\r\n * @public\r\n * @param text - Text to be synthesized.\r\n * @param cb - Callback that received the SpeechSynthesisResult.\r\n * @param err - Callback invoked in case of an error.\r\n * @param stream - AudioOutputStream to receive the synthesized audio.\r\n */\r\n public speakTextAsync(text: string, cb?: (e: SpeechSynthesisResult) => void, err?: (e: string) => void, stream?: AudioOutputStream | PushAudioOutputStreamCallback | PathLike): void {\r\n this.speakImpl(text, false, cb, err, stream);\r\n }\r\n\r\n /**\r\n * Executes speech synthesis on SSML.\r\n * The task returns the synthesis result.\r\n * @member SpeechSynthesizer.prototype.speakSsmlAsync\r\n * @function\r\n * @public\r\n * @param ssml - SSML to be synthesized.\r\n * @param cb - Callback that received the SpeechSynthesisResult.\r\n * @param err - Callback invoked in case of an error.\r\n * @param stream - AudioOutputStream to receive the synthesized audio.\r\n */\r\n public speakSsmlAsync(ssml: string, cb?: (e: SpeechSynthesisResult) => void, err?: (e: string) => void, stream?: AudioOutputStream | PushAudioOutputStreamCallback | PathLike): void {\r\n this.speakImpl(ssml, true, cb, err, stream);\r\n }\r\n\r\n /**\r\n * Get list of synthesis voices available.\r\n * The task returns the synthesis voice result.\r\n * @member SpeechSynthesizer.prototype.getVoicesAsync\r\n * @function\r\n * @async\r\n * @public\r\n * @param locale - Locale of voices in BCP-47 format; if left empty, get all available voices.\r\n * @return {Promise} - Promise of a SynthesisVoicesResult.\r\n */\r\n public async getVoicesAsync(locale: string = \"\"): Promise {\r\n return this.getVoices(locale);\r\n }\r\n\r\n /**\r\n * Dispose of associated resources.\r\n * @member SpeechSynthesizer.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, err?: (error: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposed);\r\n\r\n marshalPromiseToCallbacks(this.dispose(true), cb, err);\r\n }\r\n\r\n /**\r\n * @Internal\r\n * Do not use externally, object returned will change without warning or notice.\r\n */\r\n public get internalData(): object {\r\n return this.privAdapter;\r\n }\r\n\r\n //\r\n // ################################################################################################################\r\n // IMPLEMENTATION.\r\n // ################################################################################################################\r\n //\r\n\r\n // Creates the synthesis adapter\r\n protected createSynthesisAdapter(\r\n authentication: IAuthentication,\r\n connectionFactory: ISynthesisConnectionFactory,\r\n synthesizerConfig: SynthesizerConfig): SynthesisAdapterBase {\r\n return new SpeechSynthesisAdapter(authentication, connectionFactory,\r\n synthesizerConfig, this, this.audioConfig as AudioOutputConfigImpl);\r\n }\r\n\r\n protected createRestSynthesisAdapter(\r\n authentication: IAuthentication,\r\n synthesizerConfig: SynthesizerConfig): SynthesisRestAdapter {\r\n return new SynthesisRestAdapter(synthesizerConfig, authentication);\r\n }\r\n\r\n protected implCommonSynthesizeSetup(): void {\r\n super.implCommonSynthesizeSetup();\r\n\r\n this.privAdapter.audioOutputFormat = AudioOutputFormatImpl.fromSpeechSynthesisOutputFormat(\r\n SpeechSynthesisOutputFormat[this.properties.getProperty(PropertyId.SpeechServiceConnection_SynthOutputFormat, undefined) as keyof typeof SpeechSynthesisOutputFormat]\r\n );\r\n }\r\n\r\n protected speakImpl(text: string, IsSsml: boolean, cb?: (e: SpeechSynthesisResult) => void, err?: (e: string) => void, dataStream?: AudioOutputStream | PushAudioOutputStreamCallback | PathLike): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privDisposed);\r\n const requestId = createNoDashGuid();\r\n let audioDestination;\r\n if (dataStream instanceof PushAudioOutputStreamCallback) {\r\n audioDestination = new PushAudioOutputStreamImpl(dataStream);\r\n } else if (dataStream instanceof PullAudioOutputStream) {\r\n audioDestination = dataStream as PullAudioOutputStreamImpl;\r\n } else if (dataStream !== undefined) {\r\n audioDestination = new AudioFileWriter(dataStream as PathLike);\r\n } else {\r\n audioDestination = undefined;\r\n }\r\n this.synthesisRequestQueue.enqueue(new SynthesisRequest(requestId, text, IsSsml, (e: SpeechSynthesisResult): void => {\r\n this.privSynthesizing = false;\r\n if (!!cb) {\r\n try {\r\n cb(e);\r\n } catch (e) {\r\n if (!!err) {\r\n err(e as string);\r\n }\r\n }\r\n }\r\n cb = undefined;\r\n /* eslint-disable no-empty */\r\n this.adapterSpeak().catch((): void => { });\r\n\r\n }, (e: string): void => {\r\n if (!!err) {\r\n err(e);\r\n }\r\n }, audioDestination));\r\n\r\n /* eslint-disable no-empty-function */\r\n this.adapterSpeak().catch((): void => { });\r\n\r\n } catch (error) {\r\n if (!!err) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n } else {\r\n err(error as string);\r\n }\r\n }\r\n\r\n // Destroy the synthesizer.\r\n /* eslint-disable no-empty */\r\n this.dispose(true).catch((): void => { });\r\n }\r\n }\r\n\r\n protected async getVoices(locale: string): Promise {\r\n const requestId = createNoDashGuid();\r\n const response: IRestResponse = await this.privRestAdapter.getVoicesList(requestId);\r\n if (response.ok && Array.isArray(response.json)) {\r\n let json = response.json;\r\n if (!!locale && locale.length > 0) {\r\n json = json.filter((item: { Locale: string }): boolean => !!item.Locale && item.Locale.toLowerCase() === locale.toLowerCase() );\r\n }\r\n return new SynthesisVoicesResult(requestId, json, undefined);\r\n } else {\r\n return new SynthesisVoicesResult(requestId, undefined, `Error: ${response.status}: ${response.statusText}`);\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport {\r\n ForceDictationPropertyName,\r\n OutputFormatPropertyName,\r\n ServicePropertiesPropertyName\r\n} from \"../common.speech/Exports.js\";\r\nimport { IStringDictionary } from \"../common/Exports.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport {\r\n OutputFormat,\r\n ProfanityOption,\r\n PropertyCollection,\r\n PropertyId,\r\n SpeechConfig,\r\n SpeechSynthesisOutputFormat,\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Speech translation configuration.\r\n * @class SpeechTranslationConfig\r\n */\r\nexport abstract class SpeechTranslationConfig extends SpeechConfig {\r\n\r\n /**\r\n * Creates an instance of recognizer config.\r\n */\r\n protected constructor() {\r\n super();\r\n }\r\n\r\n /**\r\n * Static instance of SpeechTranslationConfig returned by passing a subscription key and service region.\r\n * @member SpeechTranslationConfig.fromSubscription\r\n * @function\r\n * @public\r\n * @param {string} subscriptionKey - The subscription key.\r\n * @param {string} region - The region name (see the region page).\r\n * @returns {SpeechTranslationConfig} The speech translation config.\r\n */\r\n public static fromSubscription(subscriptionKey: string, region: string): SpeechTranslationConfig {\r\n Contracts.throwIfNullOrWhitespace(subscriptionKey, \"subscriptionKey\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const ret: SpeechTranslationConfigImpl = new SpeechTranslationConfigImpl();\r\n ret.properties.setProperty(PropertyId.SpeechServiceConnection_Key, subscriptionKey);\r\n ret.properties.setProperty(PropertyId.SpeechServiceConnection_Region, region);\r\n return ret;\r\n }\r\n\r\n /**\r\n * Static instance of SpeechTranslationConfig returned by passing authorization token and service region.\r\n * Note: The caller needs to ensure that the authorization token is valid. Before the authorization token\r\n * expires, the caller needs to refresh it by setting the property authorizationToken with a new\r\n * valid token. Otherwise, all the recognizers created by this SpeechTranslationConfig instance\r\n * will encounter errors during recognition.\r\n * As configuration values are copied when creating a new recognizer, the new token value will not apply\r\n * to recognizers that have already been created.\r\n * For recognizers that have been created before, you need to set authorization token of the corresponding recognizer\r\n * to refresh the token. Otherwise, the recognizers will encounter errors during recognition.\r\n * @member SpeechTranslationConfig.fromAuthorizationToken\r\n * @function\r\n * @public\r\n * @param {string} authorizationToken - The authorization token.\r\n * @param {string} region - The region name (see the region page).\r\n * @returns {SpeechTranslationConfig} The speech translation config.\r\n */\r\n public static fromAuthorizationToken(authorizationToken: string, region: string): SpeechTranslationConfig {\r\n Contracts.throwIfNullOrWhitespace(authorizationToken, \"authorizationToken\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const ret: SpeechTranslationConfigImpl = new SpeechTranslationConfigImpl();\r\n ret.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, authorizationToken);\r\n ret.properties.setProperty(PropertyId.SpeechServiceConnection_Region, region);\r\n return ret;\r\n }\r\n\r\n /**\r\n * Creates an instance of the speech config with specified host and subscription key.\r\n * This method is intended only for users who use a non-default service host. Standard resource path will be assumed.\r\n * For services with a non-standard resource path or no path at all, use fromEndpoint instead.\r\n * Note: Query parameters are not allowed in the host URI and must be set by other APIs.\r\n * Note: To use an authorization token with fromHost, use fromHost(URL),\r\n * and then set the AuthorizationToken property on the created SpeechConfig instance.\r\n * Note: Added in version 1.9.0.\r\n * @member SpeechConfig.fromHost\r\n * @function\r\n * @public\r\n * @param {URL} host - The service endpoint to connect to. Format is \"protocol://host:port\" where \":port\" is optional.\r\n * @param {string} subscriptionKey - The subscription key. If a subscription key is not specified, an authorization token must be set.\r\n * @returns {SpeechConfig} A speech factory instance.\r\n */\r\n public static fromHost(hostName: URL, subscriptionKey?: string): SpeechConfig {\r\n Contracts.throwIfNull(hostName, \"hostName\");\r\n\r\n const speechImpl: SpeechTranslationConfigImpl = new SpeechTranslationConfigImpl();\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Host, hostName.protocol + \"//\" + hostName.hostname + (hostName.port === \"\" ? \"\" : \":\" + hostName.port));\r\n\r\n if (undefined !== subscriptionKey) {\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Key, subscriptionKey);\r\n }\r\n return speechImpl;\r\n }\r\n\r\n /**\r\n * Creates an instance of the speech translation config with specified endpoint and subscription key.\r\n * This method is intended only for users who use a non-standard service endpoint or paramters.\r\n * Note: The query properties specified in the endpoint URL are not changed, even if they are\r\n * set by any other APIs. For example, if language is defined in the uri as query parameter\r\n * \"language=de-DE\", and also set by the speechRecognitionLanguage property, the language\r\n * setting in uri takes precedence, and the effective language is \"de-DE\".\r\n * Only the properties that are not specified in the endpoint URL can be set by other APIs.\r\n * Note: To use authorization token with fromEndpoint, pass an empty string to the subscriptionKey in the\r\n * fromEndpoint method, and then set authorizationToken=\"token\" on the created SpeechConfig instance to\r\n * use the authorization token.\r\n * @member SpeechTranslationConfig.fromEndpoint\r\n * @function\r\n * @public\r\n * @param {URL} endpoint - The service endpoint to connect to.\r\n * @param {string} subscriptionKey - The subscription key.\r\n * @returns {SpeechTranslationConfig} A speech config instance.\r\n */\r\n public static fromEndpoint(endpoint: URL, subscriptionKey: string): SpeechTranslationConfig {\r\n Contracts.throwIfNull(endpoint, \"endpoint\");\r\n Contracts.throwIfNull(subscriptionKey, \"subscriptionKey\");\r\n\r\n const ret: SpeechTranslationConfigImpl = new SpeechTranslationConfigImpl();\r\n ret.properties.setProperty(PropertyId.SpeechServiceConnection_Endpoint, endpoint.href);\r\n ret.properties.setProperty(PropertyId.SpeechServiceConnection_Key, subscriptionKey);\r\n return ret;\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token.\r\n * Note: The caller needs to ensure that the authorization token is valid. Before the authorization token\r\n * expires, the caller needs to refresh it by calling this setter with a new valid token.\r\n * @member SpeechTranslationConfig.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} value - The authorization token.\r\n */\r\n public abstract set authorizationToken(value: string);\r\n\r\n /**\r\n * Gets/Sets the speech recognition language.\r\n * @member SpeechTranslationConfig.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @param {string} value - The authorization token.\r\n */\r\n public abstract set speechRecognitionLanguage(value: string);\r\n\r\n /**\r\n * Add a (text) target language to translate into.\r\n * @member SpeechTranslationConfig.prototype.addTargetLanguage\r\n * @function\r\n * @public\r\n * @param {string} value - The language such as de-DE\r\n */\r\n public abstract addTargetLanguage(value: string): void;\r\n\r\n /**\r\n * Gets the (text) target language to translate into.\r\n * @member SpeechTranslationConfig.prototype.targetLanguages\r\n * @function\r\n * @public\r\n * @param {string} value - The language such as de-DE\r\n */\r\n public abstract get targetLanguages(): string[];\r\n\r\n /**\r\n * Gets the selected voice name.\r\n * @member SpeechTranslationConfig.prototype.voiceName\r\n * @function\r\n * @public\r\n * @returns {string} The voice name.\r\n */\r\n public abstract get voiceName(): string;\r\n\r\n /**\r\n * Gets/Sets voice of the translated language, enable voice synthesis output.\r\n * @member SpeechTranslationConfig.prototype.voiceName\r\n * @function\r\n * @public\r\n * @param {string} value - The name of the voice.\r\n */\r\n public abstract set voiceName(value: string);\r\n\r\n /**\r\n * Sets a named property as value\r\n * @member SpeechTranslationConfig.prototype.setProperty\r\n * @function\r\n * @public\r\n * @param {string | PropertyId} name - The name of the property to set.\r\n * @param {string} value - The new value of the property.\r\n */\r\n public abstract setProperty(name: string | PropertyId, value: string): void;\r\n\r\n /**\r\n * Dispose of associated resources.\r\n * @member SpeechTranslationConfig.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n}\r\n\r\n/**\r\n * @private\r\n * @class SpeechTranslationConfigImpl\r\n */\r\nexport class SpeechTranslationConfigImpl extends SpeechTranslationConfig {\r\n\r\n private privSpeechProperties: PropertyCollection;\r\n\r\n public constructor() {\r\n super();\r\n this.privSpeechProperties = new PropertyCollection();\r\n this.outputFormat = OutputFormat.Simple;\r\n }\r\n /**\r\n * Gets/Sets the authorization token.\r\n * If this is set, subscription key is ignored.\r\n * User needs to make sure the provided authorization token is valid and not expired.\r\n * @member SpeechTranslationConfigImpl.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} value - The authorization token.\r\n */\r\n public set authorizationToken(value: string) {\r\n Contracts.throwIfNullOrWhitespace(value, \"value\");\r\n\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceAuthorization_Token, value);\r\n }\r\n\r\n /**\r\n * Sets the speech recognition language.\r\n * @member SpeechTranslationConfigImpl.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @param {string} value - The authorization token.\r\n */\r\n public set speechRecognitionLanguage(value: string) {\r\n Contracts.throwIfNullOrWhitespace(value, \"value\");\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceConnection_RecoLanguage, value);\r\n }\r\n\r\n /**\r\n * Gets the speech recognition language.\r\n * @member SpeechTranslationConfigImpl.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @return {string} The speechRecognitionLanguage.\r\n */\r\n public get speechRecognitionLanguage(): string {\r\n return this.privSpeechProperties.getProperty(PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n }\r\n\r\n /**\r\n * @member SpeechTranslationConfigImpl.prototype.subscriptionKey\r\n * @function\r\n * @public\r\n */\r\n public get subscriptionKey(): string {\r\n return this.privSpeechProperties.getProperty(PropertyId[PropertyId.SpeechServiceConnection_Key]);\r\n }\r\n\r\n /**\r\n * Gets the output format\r\n * @member SpeechTranslationConfigImpl.prototype.outputFormat\r\n * @function\r\n * @public\r\n */\r\n public get outputFormat(): OutputFormat {\r\n // eslint-disable-next-line\r\n return (OutputFormat as any)[this.privSpeechProperties.getProperty(OutputFormatPropertyName, undefined)];\r\n }\r\n\r\n /**\r\n * Gets/Sets the output format\r\n * @member SpeechTranslationConfigImpl.prototype.outputFormat\r\n * @function\r\n * @public\r\n */\r\n public set outputFormat(value: OutputFormat) {\r\n this.privSpeechProperties.setProperty(OutputFormatPropertyName, OutputFormat[value]);\r\n }\r\n\r\n /**\r\n * Gets the endpoint id.\r\n * @member SpeechTranslationConfigImpl.prototype.endpointId\r\n * @function\r\n * @public\r\n */\r\n public get endpointId(): string {\r\n return this.privSpeechProperties.getProperty(PropertyId.SpeechServiceConnection_EndpointId);\r\n }\r\n\r\n /**\r\n * Gets/Sets the endpoint id.\r\n * @member SpeechTranslationConfigImpl.prototype.endpointId\r\n * @function\r\n * @public\r\n */\r\n public set endpointId(value: string) {\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceConnection_EndpointId, value);\r\n }\r\n\r\n /**\r\n * Add a (text) target language to translate into.\r\n * @member SpeechTranslationConfigImpl.prototype.addTargetLanguage\r\n * @function\r\n * @public\r\n * @param {string} value - The language such as de-DE\r\n */\r\n public addTargetLanguage(value: string): void {\r\n Contracts.throwIfNullOrWhitespace(value, \"value\");\r\n\r\n const languages: string[] = this.targetLanguages;\r\n if (!languages.includes(value)) {\r\n languages.push(value);\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages, languages.join(\",\"));\r\n }\r\n }\r\n\r\n /**\r\n * Gets the (text) target language to translate into.\r\n * @member SpeechTranslationConfigImpl.prototype.targetLanguages\r\n * @function\r\n * @public\r\n * @param {string} value - The language such as de-DE\r\n */\r\n public get targetLanguages(): string[] {\r\n\r\n if (this.privSpeechProperties.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages, undefined) !== undefined) {\r\n return this.privSpeechProperties.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages).split(\",\");\r\n } else {\r\n return [];\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Gets the voice name.\r\n * @member SpeechTranslationConfigImpl.prototype.voiceName\r\n * @function\r\n * @public\r\n */\r\n public get voiceName(): string {\r\n return this.getProperty(PropertyId[PropertyId.SpeechServiceConnection_TranslationVoice]);\r\n }\r\n\r\n /**\r\n * Gets/Sets the voice of the translated language, enable voice synthesis output.\r\n * @member SpeechTranslationConfigImpl.prototype.voiceName\r\n * @function\r\n * @public\r\n * @param {string} value - The name of the voice.\r\n */\r\n public set voiceName(value: string) {\r\n Contracts.throwIfNullOrWhitespace(value, \"value\");\r\n\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceConnection_TranslationVoice, value);\r\n }\r\n\r\n /**\r\n * Provides the region.\r\n * @member SpeechTranslationConfigImpl.prototype.region\r\n * @function\r\n * @public\r\n * @returns {string} The region.\r\n */\r\n public get region(): string {\r\n return this.privSpeechProperties.getProperty(PropertyId.SpeechServiceConnection_Region);\r\n }\r\n\r\n public setProxy(proxyHostName: string, proxyPort: number): void;\r\n public setProxy(proxyHostName: string, proxyPort: number, proxyUserName: string, proxyPassword: string): void;\r\n public setProxy(proxyHostName: any, proxyPort: any, proxyUserName?: any, proxyPassword?: any): void {\r\n this.setProperty(PropertyId[PropertyId.SpeechServiceConnection_ProxyHostName], proxyHostName as string);\r\n this.setProperty(PropertyId[PropertyId.SpeechServiceConnection_ProxyPort], proxyPort as string);\r\n this.setProperty(PropertyId[PropertyId.SpeechServiceConnection_ProxyUserName], proxyUserName as string);\r\n this.setProperty(PropertyId[PropertyId.SpeechServiceConnection_ProxyPassword], proxyPassword as string);\r\n }\r\n\r\n /**\r\n * Gets an arbitrary property value.\r\n * @member SpeechTranslationConfigImpl.prototype.getProperty\r\n * @function\r\n * @public\r\n * @param {string} name - The name of the property.\r\n * @param {string} def - The default value of the property in case it is not set.\r\n * @returns {string} The value of the property.\r\n */\r\n public getProperty(name: string, def?: string): string {\r\n return this.privSpeechProperties.getProperty(name, def);\r\n }\r\n\r\n /**\r\n * Gets/Sets an arbitrary property value.\r\n * @member SpeechTranslationConfigImpl.prototype.setProperty\r\n * @function\r\n * @public\r\n * @param {string | PropertyId} name - The name of the property to set.\r\n * @param {string} value - The value of the property.\r\n */\r\n public setProperty(name: string | PropertyId, value: string): void {\r\n this.privSpeechProperties.setProperty(name, value);\r\n }\r\n\r\n /**\r\n * Provides access to custom properties.\r\n * @member SpeechTranslationConfigImpl.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The properties.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privSpeechProperties;\r\n }\r\n\r\n /**\r\n * Dispose of associated resources.\r\n * @member SpeechTranslationConfigImpl.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(): void {\r\n return;\r\n }\r\n\r\n public setServiceProperty(name: string, value: string): void {\r\n const currentProperties: IStringDictionary = JSON.parse(this.privSpeechProperties.getProperty(ServicePropertiesPropertyName, \"{}\")) as IStringDictionary;\r\n\r\n currentProperties[name] = value;\r\n\r\n this.privSpeechProperties.setProperty(ServicePropertiesPropertyName, JSON.stringify(currentProperties));\r\n }\r\n\r\n public setProfanity(profanity: ProfanityOption): void {\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceResponse_ProfanityOption, ProfanityOption[profanity]);\r\n }\r\n\r\n public enableAudioLogging(): void {\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceConnection_EnableAudioLogging, \"true\");\r\n }\r\n public requestWordLevelTimestamps(): void {\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceResponse_RequestWordLevelTimestamps, \"true\");\r\n }\r\n public enableDictation(): void {\r\n this.privSpeechProperties.setProperty(ForceDictationPropertyName, \"true\");\r\n }\r\n\r\n public get speechSynthesisLanguage(): string {\r\n return this.privSpeechProperties.getProperty(PropertyId.SpeechServiceConnection_SynthLanguage);\r\n }\r\n\r\n public set speechSynthesisLanguage(language: string) {\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceConnection_SynthLanguage, language);\r\n }\r\n\r\n public get speechSynthesisVoiceName(): string {\r\n return this.privSpeechProperties.getProperty(PropertyId.SpeechServiceConnection_SynthVoice);\r\n }\r\n\r\n public set speechSynthesisVoiceName(voice: string) {\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceConnection_SynthVoice, voice);\r\n }\r\n\r\n public get speechSynthesisOutputFormat(): SpeechSynthesisOutputFormat {\r\n // eslint-disable-next-line\r\n return (SpeechSynthesisOutputFormat as any)[this.privSpeechProperties.getProperty(PropertyId.SpeechServiceConnection_SynthOutputFormat, undefined)];\r\n }\r\n\r\n public set speechSynthesisOutputFormat(format: SpeechSynthesisOutputFormat) {\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceConnection_SynthOutputFormat, SpeechSynthesisOutputFormat[format]);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection, ResultReason } from \"./Exports.js\";\r\n\r\n/**\r\n * Base class for synthesis results\r\n * @class SynthesisResult\r\n * Added in version 1.20.0\r\n */\r\nexport class SynthesisResult {\r\n private privResultId: string;\r\n private privReason: ResultReason;\r\n private privErrorDetails: string;\r\n private privProperties: PropertyCollection;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} resultId - The result id.\r\n * @param {ResultReason} reason - The reason.\r\n * @param {string} errorDetails - Error details, if provided.\r\n * @param {PropertyCollection} properties - Additional properties, if provided.\r\n */\r\n public constructor(resultId?: string, reason?: ResultReason, errorDetails?: string, properties?: PropertyCollection) {\r\n this.privResultId = resultId;\r\n this.privReason = reason;\r\n this.privErrorDetails = errorDetails;\r\n this.privProperties = properties;\r\n }\r\n\r\n /**\r\n * Specifies the result identifier.\r\n * @member SynthesisResult.prototype.resultId\r\n * @function\r\n * @public\r\n * @returns {string} Specifies the result identifier.\r\n */\r\n public get resultId(): string {\r\n return this.privResultId;\r\n }\r\n\r\n /**\r\n * Specifies status of the result.\r\n * @member SynthesisResult.prototype.reason\r\n * @function\r\n * @public\r\n * @returns {ResultReason} Specifies status of the result.\r\n */\r\n public get reason(): ResultReason {\r\n return this.privReason;\r\n }\r\n\r\n /**\r\n * In case of an unsuccessful synthesis, provides details of the occurred error.\r\n * @member SynthesisResult.prototype.errorDetails\r\n * @function\r\n * @public\r\n * @returns {string} a brief description of an error.\r\n */\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n\r\n /**\r\n * The set of properties exposed in the result.\r\n * @member SynthesisResult.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The set of properties exposed in the result.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n IVoiceJson,\r\n PropertyCollection,\r\n ResultReason,\r\n SynthesisResult,\r\n VoiceInfo,\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Defines result of speech synthesis.\r\n * @class SynthesisVoicesResult\r\n * Added in version 1.20.0\r\n */\r\nexport class SynthesisVoicesResult extends SynthesisResult {\r\n private privVoices: VoiceInfo[];\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param requestId - result id for request.\r\n * @param json - json payload from endpoint.\r\n */\r\n public constructor(requestId: string, json: any, errorDetails: string ) {\r\n if (Array.isArray(json)) {\r\n super(requestId, ResultReason.VoicesListRetrieved, undefined, new PropertyCollection());\r\n this.privVoices = [];\r\n for (const item of json) {\r\n this.privVoices.push(new VoiceInfo(item as IVoiceJson));\r\n }\r\n } else {\r\n super(requestId, ResultReason.Canceled, errorDetails ? errorDetails : \"Error information unavailable\", new PropertyCollection());\r\n }\r\n }\r\n\r\n /**\r\n * The list of voices\r\n * @member SynthesisVoicesResult.prototype.voices\r\n * @function\r\n * @public\r\n * @returns {VoiceInfo[]} List of synthesized voices.\r\n */\r\n public get voices(): VoiceInfo[] {\r\n return this.privVoices;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {\r\n AutoDetectSourceLanguagesOpenRangeOptionName,\r\n CognitiveSubscriptionKeyAuthentication,\r\n CognitiveTokenAuthentication,\r\n Context,\r\n IAuthentication,\r\n ISynthesisConnectionFactory,\r\n OS,\r\n SpeechServiceConfig,\r\n SynthesisAdapterBase,\r\n SynthesisRestAdapter,\r\n SynthesizerConfig } from \"../common.speech/Exports.js\";\r\nimport { IAudioDestination, IStringDictionary, Queue } from \"../common/Exports.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport { PropertyCollection, PropertyId, SpeechConfig, SpeechConfigImpl, SpeechSynthesisResult } from \"./Exports.js\";\r\n\r\nexport abstract class Synthesizer {\r\n protected privAdapter: SynthesisAdapterBase;\r\n protected privRestAdapter: SynthesisRestAdapter;\r\n protected privProperties: PropertyCollection;\r\n protected privConnectionFactory: ISynthesisConnectionFactory;\r\n protected privDisposed: boolean;\r\n protected privSynthesizing: boolean;\r\n protected synthesisRequestQueue: Queue;\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member Synthesizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token used to communicate with the service.\r\n * @member Synthesizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} token - Authorization token.\r\n */\r\n public set authorizationToken(token: string) {\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, token);\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this Synthesizer.\r\n * @member Synthesizer.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their values defined for this SpeechSynthesizer.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * Indicates if auto detect source language is enabled\r\n * @member Synthesizer.prototype.autoDetectSourceLanguage\r\n * @function\r\n * @public\r\n * @returns {boolean} if auto detect source language is enabled\r\n */\r\n public get autoDetectSourceLanguage(): boolean {\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages) === AutoDetectSourceLanguagesOpenRangeOptionName;\r\n }\r\n\r\n /**\r\n * Creates and initializes an instance of a Recognizer\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - The speech config to initialize the synthesizer.\r\n */\r\n protected constructor(speechConfig: SpeechConfig) {\r\n const speechConfigImpl: SpeechConfigImpl = speechConfig as SpeechConfigImpl;\r\n Contracts.throwIfNull(speechConfigImpl, \"speechConfig\");\r\n\r\n this.privProperties = speechConfigImpl.properties.clone();\r\n this.privDisposed = false;\r\n this.privSynthesizing = false;\r\n this.synthesisRequestQueue = new Queue();\r\n }\r\n\r\n public buildSsml(text: string): string {\r\n const languageToDefaultVoice: IStringDictionary = {\r\n [\"af-ZA\"]: \"af-ZA-AdriNeural\",\r\n [\"am-ET\"]: \"am-ET-AmehaNeural\",\r\n [\"ar-AE\"]: \"ar-AE-FatimaNeural\",\r\n [\"ar-BH\"]: \"ar-BH-AliNeural\",\r\n [\"ar-DZ\"]: \"ar-DZ-AminaNeural\",\r\n [\"ar-EG\"]: \"ar-EG-SalmaNeural\",\r\n [\"ar-IQ\"]: \"ar-IQ-BasselNeural\",\r\n [\"ar-JO\"]: \"ar-JO-SanaNeural\",\r\n [\"ar-KW\"]: \"ar-KW-FahedNeural\",\r\n [\"ar-LY\"]: \"ar-LY-ImanNeural\",\r\n [\"ar-MA\"]: \"ar-MA-JamalNeural\",\r\n [\"ar-QA\"]: \"ar-QA-AmalNeural\",\r\n [\"ar-SA\"]: \"ar-SA-HamedNeural\",\r\n [\"ar-SY\"]: \"ar-SY-AmanyNeural\",\r\n [\"ar-TN\"]: \"ar-TN-HediNeural\",\r\n [\"ar-YE\"]: \"ar-YE-MaryamNeural\",\r\n [\"bg-BG\"]: \"bg-BG-BorislavNeural\",\r\n [\"bn-BD\"]: \"bn-BD-NabanitaNeural\",\r\n [\"bn-IN\"]: \"bn-IN-BashkarNeural\",\r\n [\"ca-ES\"]: \"ca-ES-JoanaNeural\",\r\n [\"cs-CZ\"]: \"cs-CZ-AntoninNeural\",\r\n [\"cy-GB\"]: \"cy-GB-AledNeural\",\r\n [\"da-DK\"]: \"da-DK-ChristelNeural\",\r\n [\"de-AT\"]: \"de-AT-IngridNeural\",\r\n [\"de-CH\"]: \"de-CH-JanNeural\",\r\n [\"de-DE\"]: \"de-DE-KatjaNeural\",\r\n [\"el-GR\"]: \"el-GR-AthinaNeural\",\r\n [\"en-AU\"]: \"en-AU-NatashaNeural\",\r\n [\"en-CA\"]: \"en-CA-ClaraNeural\",\r\n [\"en-GB\"]: \"en-GB-LibbyNeural\",\r\n [\"en-HK\"]: \"en-HK-SamNeural\",\r\n [\"en-IE\"]: \"en-IE-ConnorNeural\",\r\n [\"en-IN\"]: \"en-IN-NeerjaNeural\",\r\n [\"en-KE\"]: \"en-KE-AsiliaNeural\",\r\n [\"en-NG\"]: \"en-NG-AbeoNeural\",\r\n [\"en-NZ\"]: \"en-NZ-MitchellNeural\",\r\n [\"en-PH\"]: \"en-PH-JamesNeural\",\r\n [\"en-SG\"]: \"en-SG-LunaNeural\",\r\n [\"en-TZ\"]: \"en-TZ-ElimuNeural\",\r\n [\"en-US\"]: \"en-US-AvaMultilingualNeural\",\r\n [\"en-ZA\"]: \"en-ZA-LeahNeural\",\r\n [\"es-AR\"]: \"es-AR-ElenaNeural\",\r\n [\"es-BO\"]: \"es-BO-MarceloNeural\",\r\n [\"es-CL\"]: \"es-CL-CatalinaNeural\",\r\n [\"es-CO\"]: \"es-CO-GonzaloNeural\",\r\n [\"es-CR\"]: \"es-CR-JuanNeural\",\r\n [\"es-CU\"]: \"es-CU-BelkysNeural\",\r\n [\"es-DO\"]: \"es-DO-EmilioNeural\",\r\n [\"es-EC\"]: \"es-EC-AndreaNeural\",\r\n [\"es-ES\"]: \"es-ES-AlvaroNeural\",\r\n [\"es-GQ\"]: \"es-GQ-JavierNeural\",\r\n [\"es-GT\"]: \"es-GT-AndresNeural\",\r\n [\"es-HN\"]: \"es-HN-CarlosNeural\",\r\n [\"es-MX\"]: \"es-MX-DaliaNeural\",\r\n [\"es-NI\"]: \"es-NI-FedericoNeural\",\r\n [\"es-PA\"]: \"es-PA-MargaritaNeural\",\r\n [\"es-PE\"]: \"es-PE-AlexNeural\",\r\n [\"es-PR\"]: \"es-PR-KarinaNeural\",\r\n [\"es-PY\"]: \"es-PY-MarioNeural\",\r\n [\"es-SV\"]: \"es-SV-LorenaNeural\",\r\n [\"es-US\"]: \"es-US-AlonsoNeural\",\r\n [\"es-UY\"]: \"es-UY-MateoNeural\",\r\n [\"es-VE\"]: \"es-VE-PaolaNeural\",\r\n [\"et-EE\"]: \"et-EE-AnuNeural\",\r\n [\"fa-IR\"]: \"fa-IR-DilaraNeural\",\r\n [\"fi-FI\"]: \"fi-FI-SelmaNeural\",\r\n [\"fil-PH\"]: \"fil-PH-AngeloNeural\",\r\n [\"fr-BE\"]: \"fr-BE-CharlineNeural\",\r\n [\"fr-CA\"]: \"fr-CA-SylvieNeural\",\r\n [\"fr-CH\"]: \"fr-CH-ArianeNeural\",\r\n [\"fr-FR\"]: \"fr-FR-DeniseNeural\",\r\n [\"ga-IE\"]: \"ga-IE-ColmNeural\",\r\n [\"gl-ES\"]: \"gl-ES-RoiNeural\",\r\n [\"gu-IN\"]: \"gu-IN-DhwaniNeural\",\r\n [\"he-IL\"]: \"he-IL-AvriNeural\",\r\n [\"hi-IN\"]: \"hi-IN-MadhurNeural\",\r\n [\"hr-HR\"]: \"hr-HR-GabrijelaNeural\",\r\n [\"hu-HU\"]: \"hu-HU-NoemiNeural\",\r\n [\"id-ID\"]: \"id-ID-ArdiNeural\",\r\n [\"is-IS\"]: \"is-IS-GudrunNeural\",\r\n [\"it-IT\"]: \"it-IT-IsabellaNeural\",\r\n [\"ja-JP\"]: \"ja-JP-NanamiNeural\",\r\n [\"jv-ID\"]: \"jv-ID-DimasNeural\",\r\n [\"kk-KZ\"]: \"kk-KZ-AigulNeural\",\r\n [\"km-KH\"]: \"km-KH-PisethNeural\",\r\n [\"kn-IN\"]: \"kn-IN-GaganNeural\",\r\n [\"ko-KR\"]: \"ko-KR-SunHiNeural\",\r\n [\"lo-LA\"]: \"lo-LA-ChanthavongNeural\",\r\n [\"lt-LT\"]: \"lt-LT-LeonasNeural\",\r\n [\"lv-LV\"]: \"lv-LV-EveritaNeural\",\r\n [\"mk-MK\"]: \"mk-MK-AleksandarNeural\",\r\n [\"ml-IN\"]: \"ml-IN-MidhunNeural\",\r\n [\"mr-IN\"]: \"mr-IN-AarohiNeural\",\r\n [\"ms-MY\"]: \"ms-MY-OsmanNeural\",\r\n [\"mt-MT\"]: \"mt-MT-GraceNeural\",\r\n [\"my-MM\"]: \"my-MM-NilarNeural\",\r\n [\"nb-NO\"]: \"nb-NO-PernilleNeural\",\r\n [\"nl-BE\"]: \"nl-BE-ArnaudNeural\",\r\n [\"nl-NL\"]: \"nl-NL-ColetteNeural\",\r\n [\"pl-PL\"]: \"pl-PL-AgnieszkaNeural\",\r\n [\"ps-AF\"]: \"ps-AF-GulNawazNeural\",\r\n [\"pt-BR\"]: \"pt-BR-FranciscaNeural\",\r\n [\"pt-PT\"]: \"pt-PT-DuarteNeural\",\r\n [\"ro-RO\"]: \"ro-RO-AlinaNeural\",\r\n [\"ru-RU\"]: \"ru-RU-SvetlanaNeural\",\r\n [\"si-LK\"]: \"si-LK-SameeraNeural\",\r\n [\"sk-SK\"]: \"sk-SK-LukasNeural\",\r\n [\"sl-SI\"]: \"sl-SI-PetraNeural\",\r\n [\"so-SO\"]: \"so-SO-MuuseNeural\",\r\n [\"sr-RS\"]: \"sr-RS-NicholasNeural\",\r\n [\"su-ID\"]: \"su-ID-JajangNeural\",\r\n [\"sv-SE\"]: \"sv-SE-SofieNeural\",\r\n [\"sw-KE\"]: \"sw-KE-RafikiNeural\",\r\n [\"sw-TZ\"]: \"sw-TZ-DaudiNeural\",\r\n [\"ta-IN\"]: \"ta-IN-PallaviNeural\",\r\n [\"ta-LK\"]: \"ta-LK-KumarNeural\",\r\n [\"ta-SG\"]: \"ta-SG-AnbuNeural\",\r\n [\"te-IN\"]: \"te-IN-MohanNeural\",\r\n [\"th-TH\"]: \"th-TH-PremwadeeNeural\",\r\n [\"tr-TR\"]: \"tr-TR-AhmetNeural\",\r\n [\"uk-UA\"]: \"uk-UA-OstapNeural\",\r\n [\"ur-IN\"]: \"ur-IN-GulNeural\",\r\n [\"ur-PK\"]: \"ur-PK-AsadNeural\",\r\n [\"uz-UZ\"]: \"uz-UZ-MadinaNeural\",\r\n [\"vi-VN\"]: \"vi-VN-HoaiMyNeural\",\r\n [\"zh-CN\"]: \"zh-CN-XiaoxiaoNeural\",\r\n [\"zh-HK\"]: \"zh-HK-HiuMaanNeural\",\r\n [\"zh-TW\"]: \"zh-TW-HsiaoChenNeural\",\r\n [\"zu-ZA\"]: \"zu-ZA-ThandoNeural\",\r\n };\r\n\r\n let language = this.properties.getProperty(PropertyId.SpeechServiceConnection_SynthLanguage, \"en-US\");\r\n let voice = this.properties.getProperty(PropertyId.SpeechServiceConnection_SynthVoice, \"\");\r\n let ssml: string = Synthesizer.XMLEncode(text);\r\n if (this.autoDetectSourceLanguage) {\r\n language = \"en-US\";\r\n } else {\r\n voice = voice || languageToDefaultVoice[language];\r\n }\r\n if (voice) {\r\n ssml = `${ssml}`;\r\n }\r\n ssml = `${ssml}`;\r\n return ssml;\r\n }\r\n\r\n /**\r\n * This method performs cleanup of resources.\r\n * The Boolean parameter disposing indicates whether the method is called\r\n * from Dispose (if disposing is true) or from the finalizer (if disposing is false).\r\n * Derived classes should override this method to dispose resource if needed.\r\n * @member Synthesizer.prototype.dispose\r\n * @function\r\n * @public\r\n * @param {boolean} disposing - Flag to request disposal.\r\n */\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposed) {\r\n return;\r\n }\r\n\r\n if (disposing) {\r\n if (this.privAdapter) {\r\n await this.privAdapter.dispose();\r\n }\r\n }\r\n\r\n this.privDisposed = true;\r\n }\r\n\r\n protected async adapterSpeak(): Promise {\r\n if (!this.privDisposed && !this.privSynthesizing) {\r\n this.privSynthesizing = true;\r\n const request: SynthesisRequest = await this.synthesisRequestQueue.dequeue();\r\n return this.privAdapter.Speak(request.text, request.isSSML, request.requestId, request.cb, request.err, request.dataStream);\r\n }\r\n }\r\n\r\n //\r\n // ################################################################################################################\r\n // IMPLEMENTATION.\r\n // Move to independent class\r\n // ################################################################################################################\r\n //\r\n\r\n // Creates the synthesis adapter\r\n protected abstract createSynthesisAdapter(\r\n authentication: IAuthentication,\r\n connectionFactory: ISynthesisConnectionFactory,\r\n synthesizerConfig: SynthesizerConfig): SynthesisAdapterBase;\r\n\r\n // Creates the REST synthesis adapter\r\n protected abstract createRestSynthesisAdapter(\r\n authentication: IAuthentication,\r\n synthesizerConfig: SynthesizerConfig): SynthesisRestAdapter;\r\n\r\n protected createSynthesizerConfig(speechConfig: SpeechServiceConfig): SynthesizerConfig {\r\n return new SynthesizerConfig(\r\n speechConfig,\r\n this.privProperties);\r\n }\r\n\r\n // Does the generic synthesizer setup that is common across all synthesizer types.\r\n protected implCommonSynthesizeSetup(): void {\r\n\r\n let osPlatform = (typeof window !== \"undefined\") ? \"Browser\" : \"Node\";\r\n let osName = \"unknown\";\r\n let osVersion = \"unknown\";\r\n\r\n if (typeof navigator !== \"undefined\") {\r\n osPlatform = osPlatform + \"/\" + navigator.platform;\r\n osName = navigator.userAgent;\r\n osVersion = navigator.appVersion;\r\n }\r\n\r\n const synthesizerConfig: SynthesizerConfig = this.createSynthesizerConfig(\r\n new SpeechServiceConfig(\r\n new Context(new OS(osPlatform, osName, osVersion))));\r\n\r\n const subscriptionKey = this.privProperties.getProperty(PropertyId.SpeechServiceConnection_Key, undefined);\r\n const authentication = (subscriptionKey && subscriptionKey !== \"\") ?\r\n new CognitiveSubscriptionKeyAuthentication(subscriptionKey) :\r\n new CognitiveTokenAuthentication(\r\n (): Promise => {\r\n const authorizationToken = this.privProperties.getProperty(PropertyId.SpeechServiceAuthorization_Token, undefined);\r\n return Promise.resolve(authorizationToken);\r\n },\r\n (): Promise => {\r\n const authorizationToken = this.privProperties.getProperty(PropertyId.SpeechServiceAuthorization_Token, undefined);\r\n return Promise.resolve(authorizationToken);\r\n });\r\n\r\n this.privAdapter = this.createSynthesisAdapter(\r\n authentication,\r\n this.privConnectionFactory,\r\n synthesizerConfig);\r\n\r\n this.privRestAdapter = this.createRestSynthesisAdapter(\r\n authentication,\r\n synthesizerConfig);\r\n }\r\n\r\n protected static XMLEncode(text: string): string {\r\n return text.replace(/&/g, \"&\")\r\n .replace(//g, \">\")\r\n .replace(/\"/g, \""\")\r\n .replace(/'/g, \"'\");\r\n }\r\n}\r\n\r\nexport class SynthesisRequest {\r\n public requestId: string;\r\n public text: string;\r\n public isSSML: boolean;\r\n public cb: (e: SpeechSynthesisResult) => void;\r\n public err: (e: string) => void;\r\n public dataStream: IAudioDestination;\r\n\r\n public constructor(requestId: string, text: string, isSSML: boolean, cb?: (e: SpeechSynthesisResult) => void, err?: (e: string) => void, dataStream?: IAudioDestination) {\r\n this.requestId = requestId;\r\n this.text = text;\r\n this.isSSML = isSSML;\r\n this.cb = cb;\r\n this.err = err;\r\n this.dataStream = dataStream;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {\r\n ConversationConnectionConfig,\r\n ConversationManager,\r\n ConversationReceivedTranslationEventArgs,\r\n ConversationRecognizer,\r\n ConversationRecognizerFactory,\r\n ConversationTranslatorCommandTypes,\r\n ConversationTranslatorMessageTypes,\r\n IAuthentication,\r\n IInternalConversation,\r\n IInternalParticipant,\r\n InternalParticipants,\r\n MuteAllEventArgs,\r\n ParticipantAttributeEventArgs,\r\n ParticipantEventArgs,\r\n ParticipantsListEventArgs,\r\n TranscriberRecognizer\r\n} from \"../../common.speech/Exports.js\";\r\nimport {\r\n IDisposable,\r\n IErrorMessages,\r\n marshalPromiseToCallbacks\r\n} from \"../../common/Exports.js\";\r\nimport { Contracts } from \"../Contracts.js\";\r\nimport {\r\n ConnectionEventArgs,\r\n ConversationExpirationEventArgs,\r\n ConversationParticipantsChangedEventArgs,\r\n ConversationTranslationCanceledEventArgs,\r\n ConversationTranslationEventArgs,\r\n ConversationTranslator,\r\n Participant,\r\n ParticipantChangedReason,\r\n ProfanityOption,\r\n PropertyCollection,\r\n PropertyId,\r\n SpeechTranslationConfig,\r\n} from \"../Exports.js\";\r\nimport { SpeechTranslationConfigImpl } from \"../SpeechTranslationConfig.js\";\r\nimport { Callback, ConversationInfo, ConversationProperties, IConversation } from \"./IConversation.js\";\r\nimport { IParticipant, IUser, TranscriptionParticipant } from \"./IParticipant.js\";\r\n\r\nexport abstract class Conversation implements IConversation {\r\n\r\n protected constructor() {\r\n return;\r\n }\r\n\r\n public abstract get authorizationToken(): string;\r\n\r\n public abstract get config(): SpeechTranslationConfig;\r\n\r\n public abstract get conversationId(): string;\r\n public abstract get conversationInfo(): ConversationInfo;\r\n public abstract get properties(): PropertyCollection;\r\n public abstract get speechRecognitionLanguage(): string;\r\n public abstract get participants(): Participant[];\r\n public abstract set authorizationToken(value: string);\r\n public abstract get isConnected(): boolean;\r\n\r\n /**\r\n * Create a conversation\r\n * @param speechConfig\r\n * @param cb\r\n * @param err\r\n */\r\n public static createConversationAsync(speechConfig: SpeechTranslationConfig, arg2?: string | Callback, arg3?: Callback, arg4?: Callback): Conversation {\r\n Contracts.throwIfNullOrUndefined(speechConfig, ConversationConnectionConfig.restErrors.invalidArgs.replace(\"{arg}\", \"config\"));\r\n Contracts.throwIfNullOrUndefined(speechConfig.region, ConversationConnectionConfig.restErrors.invalidArgs.replace(\"{arg}\", \"SpeechServiceConnection_Region\"));\r\n if (!speechConfig.subscriptionKey && !speechConfig.getProperty(PropertyId[PropertyId.SpeechServiceAuthorization_Token])) {\r\n Contracts.throwIfNullOrUndefined(speechConfig.subscriptionKey, ConversationConnectionConfig.restErrors.invalidArgs.replace(\"{arg}\", \"SpeechServiceConnection_Key\"));\r\n }\r\n let conversationImpl: ConversationImpl;\r\n let cb: Callback;\r\n let err: Callback;\r\n if (typeof arg2 === \"string\") {\r\n conversationImpl = new ConversationImpl(speechConfig, arg2);\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n marshalPromiseToCallbacks((async (): Promise => {})(), arg3, arg4);\r\n } else {\r\n conversationImpl = new ConversationImpl(speechConfig);\r\n cb = arg2;\r\n err = arg3;\r\n conversationImpl.createConversationAsync(\r\n ((): void => {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }),\r\n (error: any): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n }\r\n return conversationImpl;\r\n\r\n }\r\n\r\n /** Start a conversation. */\r\n public abstract startConversationAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /** Delete a conversation. After this no one will be able to join the conversation. */\r\n public abstract deleteConversationAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /** End a conversation. */\r\n public abstract endConversationAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /** Lock a conversation. This will prevent new participants from joining. */\r\n public abstract lockConversationAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /** Add Participant to Conversation. */\r\n public abstract addParticipantAsync(participant: IParticipant, cb?: Callback, err?: Callback): void;\r\n\r\n /**\r\n * Mute all other participants in the conversation. After this no other participants will\r\n * have their speech recognitions broadcast, nor be able to send text messages.\r\n */\r\n public abstract muteAllParticipantsAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /**\r\n * Mute a participant.\r\n * @param userId A user identifier\r\n */\r\n public abstract muteParticipantAsync(userId: string, cb?: Callback, err?: Callback): void;\r\n\r\n /**\r\n * Remove a participant from a conversation using the user id, Participant or User object\r\n * @param userId A user identifier\r\n */\r\n public abstract removeParticipantAsync(userId: string | IParticipant | IUser, cb?: Callback, err?: Callback): void;\r\n\r\n /** Unlocks a conversation. */\r\n public abstract unlockConversationAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /** Unmute all other participants in the conversation. */\r\n public abstract unmuteAllParticipantsAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /**\r\n * Unmute a participant.\r\n * @param userId A user identifier\r\n */\r\n public abstract unmuteParticipantAsync(userId: string, cb?: Callback, err?: Callback): void;\r\n}\r\n\r\nexport class ConversationImpl extends Conversation implements IDisposable {\r\n\r\n private privConfig: SpeechTranslationConfig;\r\n private privProperties: PropertyCollection;\r\n private privLanguage: string;\r\n private privToken: string;\r\n private privIsDisposed: boolean;\r\n private privRoom: IInternalConversation;\r\n private privManager: ConversationManager;\r\n private privConversationRecognizer: ConversationRecognizer;\r\n private privIsConnected: boolean;\r\n private privParticipants: InternalParticipants;\r\n private privIsReady: boolean;\r\n private privConversationTranslator: ConversationTranslator;\r\n private privTranscriberRecognizer: TranscriberRecognizer;\r\n private privErrors: IErrorMessages = ConversationConnectionConfig.restErrors;\r\n private privConversationId: string;\r\n private readonly privTextMessageMaxLength: number;\r\n\r\n /**\r\n * Create a conversation impl\r\n * @param speechConfig\r\n * @param {string} id - optional conversationId\r\n */\r\n public constructor(speechConfig: SpeechTranslationConfig, id?: string) {\r\n super();\r\n this.privIsConnected = false;\r\n this.privIsDisposed = false;\r\n this.privConversationId = \"\";\r\n this.privProperties = new PropertyCollection();\r\n this.privManager = new ConversationManager();\r\n\r\n // check the speech language\r\n const language: string = speechConfig.getProperty(PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n if (!language) {\r\n speechConfig.setProperty(PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage], ConversationConnectionConfig.defaultLanguageCode);\r\n }\r\n this.privLanguage = speechConfig.getProperty(PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n\r\n if (!id) {\r\n // check the target language(s)\r\n if (speechConfig.targetLanguages.length === 0) {\r\n speechConfig.addTargetLanguage(this.privLanguage);\r\n }\r\n\r\n // check the profanity setting: speech and conversationTranslator should be in sync\r\n const profanity: string = speechConfig.getProperty(PropertyId[PropertyId.SpeechServiceResponse_ProfanityOption]);\r\n if (!profanity) {\r\n speechConfig.setProfanity(ProfanityOption.Masked);\r\n }\r\n // check the nickname: it should pass this regex: ^\\w+([\\s-][\\w\\(\\)]+)*$\"\r\n // TODO: specify the regex required. Nicknames must be unique or get the duplicate nickname error\r\n // TODO: check what the max length is and if a truncation is required or if the service handles it without an error\r\n let hostNickname: string = speechConfig.getProperty(PropertyId[PropertyId.ConversationTranslator_Name]);\r\n if (hostNickname === undefined || hostNickname === null) {\r\n hostNickname = \"Host\";\r\n }\r\n Contracts.throwIfNullOrTooLong(hostNickname, \"nickname\", 50);\r\n Contracts.throwIfNullOrTooShort(hostNickname, \"nickname\", 2);\r\n speechConfig.setProperty(PropertyId[PropertyId.ConversationTranslator_Name], hostNickname);\r\n\r\n } else {\r\n this.privConversationId = id;\r\n }\r\n\r\n // save the speech config for future usage\r\n this.privConfig = speechConfig;\r\n\r\n // save the config properties\r\n const configImpl = speechConfig as SpeechTranslationConfigImpl;\r\n Contracts.throwIfNull(configImpl, \"speechConfig\");\r\n this.privProperties = configImpl.properties.clone();\r\n this.privIsConnected = false;\r\n this.privParticipants = new InternalParticipants();\r\n this.privIsReady = false;\r\n this.privTextMessageMaxLength = 1000;\r\n }\r\n\r\n // get the internal data about a conversation\r\n public get room(): IInternalConversation {\r\n return this.privRoom;\r\n }\r\n\r\n // get the wrapper for connecting to the websockets\r\n public get connection(): ConversationRecognizer {\r\n return this.privConversationRecognizer; // this.privConnection;\r\n }\r\n\r\n // get the config\r\n public get config(): SpeechTranslationConfig {\r\n return this.privConfig;\r\n }\r\n\r\n // get the conversation Id\r\n public get conversationId(): string {\r\n return this.privRoom ? this.privRoom.roomId : this.privConversationId;\r\n }\r\n\r\n // get the properties\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n // get the speech language\r\n public get speechRecognitionLanguage(): string {\r\n return this.privLanguage;\r\n }\r\n\r\n public get isMutedByHost(): boolean {\r\n return this.privParticipants.me?.isHost ? false : this.privParticipants.me?.isMuted;\r\n }\r\n\r\n public get isConnected(): boolean {\r\n return this.privIsConnected && this.privIsReady;\r\n }\r\n\r\n public get participants(): Participant[] {\r\n return this.toParticipants(true);\r\n }\r\n\r\n public get me(): Participant {\r\n return this.toParticipant(this.privParticipants.me);\r\n }\r\n\r\n public get host(): Participant {\r\n return this.toParticipant(this.privParticipants.host);\r\n }\r\n\r\n public get transcriberRecognizer(): TranscriberRecognizer {\r\n return this.privTranscriberRecognizer;\r\n }\r\n\r\n public get conversationInfo(): ConversationInfo {\r\n const convId: string = this.conversationId;\r\n const p: TranscriptionParticipant[] = this.participants.map((part: Participant): TranscriptionParticipant => (\r\n {\r\n id: part.id,\r\n preferredLanguage: part.preferredLanguage,\r\n voice: part.voice\r\n }\r\n ));\r\n const props: ConversationProperties = {};\r\n for (const key of ConversationConnectionConfig.transcriptionEventKeys) {\r\n const val: string = this.properties.getProperty(key, \"\");\r\n if (val !== \"\") {\r\n props[key] = val;\r\n }\r\n }\r\n const info: ConversationInfo = { id: convId, participants: p, conversationProperties: props };\r\n return info;\r\n }\r\n\r\n private get canSend(): boolean {\r\n return this.privIsConnected && !this.privParticipants.me?.isMuted;\r\n }\r\n\r\n private get canSendAsHost(): boolean {\r\n return this.privIsConnected && this.privParticipants.me?.isHost;\r\n }\r\n\r\n // get / set the speech auth token\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n public get authorizationToken(): string {\r\n return this.privToken;\r\n }\r\n\r\n public set authorizationToken(value: string) {\r\n Contracts.throwIfNullOrWhitespace(value, \"authorizationToken\");\r\n this.privToken = value;\r\n }\r\n\r\n public set conversationTranslator(conversationTranslator: ConversationTranslator) {\r\n this.privConversationTranslator = conversationTranslator;\r\n }\r\n\r\n public onToken(token: IAuthentication): void {\r\n this.privConversationTranslator.onToken(token);\r\n }\r\n\r\n /**\r\n * Create a new conversation as Host\r\n * @param cb\r\n * @param err\r\n */\r\n public createConversationAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n if (!!this.privConversationRecognizer) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedStart), err);\r\n }\r\n this.privManager.createOrJoin(this.privProperties, undefined,\r\n ((room: IInternalConversation): void => {\r\n if (!room) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConnect), err);\r\n }\r\n this.privRoom = room;\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Starts a new conversation as host.\r\n * @param cb\r\n * @param err\r\n */\r\n public startConversationAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n // check if there is already a recognizer\r\n if (!!this.privConversationRecognizer) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedStart), err);\r\n }\r\n // check if there is conversation data available\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedConnect);\r\n // connect to the conversation websocket\r\n this.privParticipants.meId = this.privRoom.participantId;\r\n this.privConversationRecognizer = ConversationRecognizerFactory.fromConfig(this, this.privConfig);\r\n\r\n // Because ConversationTranslator manually sets up and manages the connection, Conversation\r\n // has to forward serviceRecognizer connection events that usually get passed automatically\r\n this.privConversationRecognizer.connected = this.onConnected;\r\n this.privConversationRecognizer.disconnected = this.onDisconnected;\r\n this.privConversationRecognizer.canceled = this.onCanceled;\r\n\r\n this.privConversationRecognizer.participantUpdateCommandReceived = this.onParticipantUpdateCommandReceived;\r\n this.privConversationRecognizer.lockRoomCommandReceived = this.onLockRoomCommandReceived;\r\n this.privConversationRecognizer.muteAllCommandReceived = this.onMuteAllCommandReceived;\r\n this.privConversationRecognizer.participantJoinCommandReceived = this.onParticipantJoinCommandReceived;\r\n this.privConversationRecognizer.participantLeaveCommandReceived = this.onParticipantLeaveCommandReceived;\r\n this.privConversationRecognizer.translationReceived = this.onTranslationReceived;\r\n this.privConversationRecognizer.participantsListReceived = this.onParticipantsListReceived;\r\n this.privConversationRecognizer.conversationExpiration = this.onConversationExpiration;\r\n\r\n this.privConversationRecognizer.connect(this.privRoom.token,\r\n ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Join a conversation as a participant.\r\n * @param { IParticipant } participant - participant to add\r\n * @param cb\r\n * @param err\r\n */\r\n public addParticipantAsync(participant: IParticipant, cb?: Callback, err?: Callback): void {\r\n Contracts.throwIfNullOrUndefined(participant, \"Participant\");\r\n marshalPromiseToCallbacks(this.addParticipantImplAsync(participant), cb, err);\r\n }\r\n\r\n /**\r\n * Join a conversation as a participant.\r\n * @param conversation\r\n * @param nickname\r\n * @param lang\r\n * @param cb\r\n * @param err\r\n */\r\n public joinConversationAsync(conversationId: string, nickname: string, lang: string, cb?: Callback, err?: Callback): void {\r\n try {\r\n // TODO\r\n // if (!!this.privConversationRecognizer) {\r\n // throw new Error(this.privErrors.permissionDeniedStart);\r\n // }\r\n Contracts.throwIfNullOrWhitespace(conversationId, this.privErrors.invalidArgs.replace(\"{arg}\", \"conversationId\"));\r\n Contracts.throwIfNullOrWhitespace(nickname, this.privErrors.invalidArgs.replace(\"{arg}\", \"nickname\"));\r\n Contracts.throwIfNullOrWhitespace(lang, this.privErrors.invalidArgs.replace(\"{arg}\", \"language\"));\r\n // join the conversation\r\n this.privManager.createOrJoin(this.privProperties, conversationId,\r\n ((room: IInternalConversation): void => {\r\n Contracts.throwIfNullOrUndefined(room, this.privErrors.permissionDeniedConnect);\r\n this.privRoom = room;\r\n this.privConfig.authorizationToken = room.cognitiveSpeechAuthToken;\r\n // join callback\r\n if (!!cb) {\r\n cb(room.cognitiveSpeechAuthToken);\r\n }\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Deletes a conversation\r\n * @param cb\r\n * @param err\r\n */\r\n public deleteConversationAsync(cb?: Callback, err?: Callback): void {\r\n marshalPromiseToCallbacks(this.deleteConversationImplAsync(), cb, err);\r\n }\r\n\r\n public async deleteConversationImplAsync(): Promise {\r\n Contracts.throwIfNullOrUndefined(this.privProperties, this.privErrors.permissionDeniedConnect);\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.token, this.privErrors.permissionDeniedConnect);\r\n await this.privManager.leave(this.privProperties, this.privRoom.token);\r\n\r\n this.dispose();\r\n }\r\n\r\n /**\r\n * Issues a request to close the client websockets\r\n * @param cb\r\n * @param err\r\n */\r\n public endConversationAsync(cb?: Callback, err?: Callback): void {\r\n marshalPromiseToCallbacks(this.endConversationImplAsync(), cb, err);\r\n }\r\n\r\n public endConversationImplAsync(): Promise {\r\n return this.close(true);\r\n }\r\n\r\n /**\r\n * Issues a request to lock the conversation\r\n * @param cb\r\n * @param err\r\n */\r\n public lockConversationAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSendAsHost) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"lock\")), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getLockCommand(true),\r\n ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to mute the conversation\r\n * @param cb\r\n * @param err\r\n */\r\n public muteAllParticipantsAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrUndefined(this.privConversationRecognizer, this.privErrors.permissionDeniedSend);\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n // check the user's permissions\r\n if (!this.canSendAsHost) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"mute\")), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getMuteAllCommand(true),\r\n ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to mute a participant in the conversation\r\n * @param userId\r\n * @param cb\r\n * @param err\r\n */\r\n public muteParticipantAsync(userId: string, cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrWhitespace(userId, this.privErrors.invalidArgs.replace(\"{arg}\", \"userId\"));\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n // check the connection is open (host + participant can perform the mute command)\r\n if (!this.canSend) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n // if not host, check the participant is not muting another participant\r\n if (!this.me.isHost && this.me.id !== userId) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedParticipant.replace(\"{command}\", \"mute\")), err);\r\n }\r\n // check the user exists\r\n const exists: number = this.privParticipants.getParticipantIndex(userId);\r\n if (exists === -1) {\r\n this.handleError(new Error(this.privErrors.invalidParticipantRequest), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getMuteCommand(userId, true), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to remove a participant from the conversation\r\n * @param userId\r\n * @param cb\r\n * @param err\r\n */\r\n public removeParticipantAsync(userId: string | IParticipant | IUser, cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n if (!!this.privTranscriberRecognizer && userId.hasOwnProperty(\"id\")) {\r\n // Assume this is a transcription participant\r\n marshalPromiseToCallbacks(this.removeParticipantImplAsync(userId as IParticipant), cb, err);\r\n } else {\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSendAsHost) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedParticipant.replace(\"{command}\", \"remove\")), err);\r\n }\r\n let participantId = \"\";\r\n if (typeof userId === \"string\") {\r\n participantId = userId;\r\n } else if (userId.hasOwnProperty(\"id\")) {\r\n const participant: IParticipant = userId as IParticipant;\r\n participantId = participant.id;\r\n } else if (userId.hasOwnProperty(\"userId\")) {\r\n const user: IUser = userId as IUser;\r\n participantId = user.userId;\r\n }\r\n Contracts.throwIfNullOrWhitespace(participantId, this.privErrors.invalidArgs.replace(\"{arg}\", \"userId\"));\r\n // check the participant exists\r\n const index: number = this.participants.findIndex((p: Participant): boolean => p.id === participantId);\r\n if (index === -1) {\r\n this.handleError(new Error(this.privErrors.invalidParticipantRequest), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getEjectCommand(participantId), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to unlock the conversation\r\n * @param cb\r\n * @param err\r\n */\r\n public unlockConversationAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSendAsHost) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"unlock\")), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getLockCommand(false), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to unmute all participants in the conversation\r\n * @param cb\r\n * @param err\r\n */\r\n public unmuteAllParticipantsAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSendAsHost) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"unmute all\")), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getMuteAllCommand(false), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to unmute a participant in the conversation\r\n * @param userId\r\n * @param cb\r\n * @param err\r\n */\r\n public unmuteParticipantAsync(userId: string, cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrWhitespace(userId, this.privErrors.invalidArgs.replace(\"{arg}\", \"userId\"));\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n // check the connection is open (host + participant can perform the mute command)\r\n if (!this.canSend) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n // if not host, check the participant is not muting another participant\r\n if (!this.me.isHost && this.me.id !== userId) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedParticipant.replace(\"{command}\", \"mute\")), err);\r\n }\r\n // check the user exists\r\n const exists: number = this.privParticipants.getParticipantIndex(userId);\r\n if (exists === -1) {\r\n this.handleError(new Error(this.privErrors.invalidParticipantRequest), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getMuteCommand(userId, false), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Send a text message\r\n * @param message\r\n * @param cb\r\n * @param err\r\n */\r\n public sendTextMessageAsync(message: string, cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrWhitespace(message, this.privErrors.invalidArgs.replace(\"{arg}\", \"message\"));\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSend) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n // TODO: is a max length check required?\r\n if (message.length > this.privTextMessageMaxLength) {\r\n this.handleError(new Error(this.privErrors.invalidArgs.replace(\"{arg}\", \"message length\")), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getMessageCommand(message), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Set translated to languages\r\n * @param {string[]} languages - languages to translate to\r\n * @param cb\r\n * @param err\r\n */\r\n public setTranslatedLanguagesAsync(languages: string[], cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfArrayEmptyOrWhitespace(languages, this.privErrors.invalidArgs.replace(\"{arg}\", \"languages\"));\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSend) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getSetTranslateToLanguagesCommand(languages),\r\n ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Change nickname\r\n * @param {string} nickname - new nickname for the room\r\n * @param cb\r\n * @param err\r\n */\r\n public changeNicknameAsync(nickname: string, cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrWhitespace(nickname, this.privErrors.invalidArgs.replace(\"{arg}\", \"nickname\"));\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSend) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getChangeNicknameCommand(nickname),\r\n ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privIsDisposed;\r\n }\r\n\r\n public dispose(): void {\r\n if (this.isDisposed) {\r\n return;\r\n }\r\n this.privIsDisposed = true;\r\n if (!!this.config) {\r\n this.config.close();\r\n }\r\n this.privConfig = undefined;\r\n this.privLanguage = undefined;\r\n this.privProperties = undefined;\r\n this.privRoom = undefined;\r\n this.privToken = undefined;\r\n this.privManager = undefined;\r\n this.privIsConnected = false;\r\n this.privIsReady = false;\r\n this.privParticipants = undefined;\r\n }\r\n\r\n public async connectTranscriberRecognizer(recognizer: TranscriberRecognizer): Promise {\r\n if (!!this.privTranscriberRecognizer) {\r\n await this.privTranscriberRecognizer.close();\r\n }\r\n await recognizer.enforceAudioGating();\r\n this.privTranscriberRecognizer = recognizer;\r\n this.privTranscriberRecognizer.conversation = this;\r\n }\r\n\r\n public getKeepAlive(): string {\r\n const nickname: string = (!!this.me) ? this.me.displayName : \"default_nickname\";\r\n return JSON.stringify({\r\n id: \"0\",\r\n nickname,\r\n participantId: this.privRoom.participantId,\r\n roomId: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.keepAlive\r\n });\r\n }\r\n\r\n /** websocket callbacks */\r\n /* eslint-disable @typescript-eslint/typedef */\r\n private onConnected = (e: ConnectionEventArgs): void => {\r\n this.privIsConnected = true;\r\n try {\r\n if (!!this.privConversationTranslator?.sessionStarted) {\r\n this.privConversationTranslator.sessionStarted(this.privConversationTranslator, e);\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onDisconnected = (e: ConnectionEventArgs): void => {\r\n try {\r\n if (!!this.privConversationTranslator?.sessionStopped) {\r\n this.privConversationTranslator.sessionStopped(this.privConversationTranslator, e);\r\n }\r\n } catch (e) {\r\n //\r\n } finally {\r\n void this.close(false);\r\n }\r\n };\r\n\r\n private onCanceled = (r: ConversationRecognizer, e: ConversationTranslationCanceledEventArgs): void => {\r\n try {\r\n if (!!this.privConversationTranslator?.canceled) {\r\n this.privConversationTranslator.canceled(this.privConversationTranslator, e);\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onParticipantUpdateCommandReceived = (r: ConversationRecognizer, e: ParticipantAttributeEventArgs): void => {\r\n try {\r\n const updatedParticipant: IInternalParticipant = this.privParticipants.getParticipant(e.id);\r\n if (updatedParticipant !== undefined) {\r\n\r\n switch (e.key) {\r\n case ConversationTranslatorCommandTypes.changeNickname:\r\n updatedParticipant.displayName = e.value as string;\r\n break;\r\n case ConversationTranslatorCommandTypes.setUseTTS:\r\n updatedParticipant.isUsingTts = e.value as boolean;\r\n break;\r\n case ConversationTranslatorCommandTypes.setProfanityFiltering:\r\n updatedParticipant.profanity = e.value as boolean;\r\n break;\r\n case ConversationTranslatorCommandTypes.setMute:\r\n updatedParticipant.isMuted = e.value as boolean;\r\n break;\r\n case ConversationTranslatorCommandTypes.setTranslateToLanguages:\r\n updatedParticipant.translateToLanguages = e.value as string[];\r\n break;\r\n }\r\n this.privParticipants.addOrUpdateParticipant(updatedParticipant);\r\n\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.participantsChanged(\r\n this.privConversationTranslator,\r\n new ConversationParticipantsChangedEventArgs(ParticipantChangedReason.Updated,\r\n [this.toParticipant(updatedParticipant)], e.sessionId));\r\n }\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onLockRoomCommandReceived = (): void => {\r\n // TODO\r\n };\r\n\r\n private onMuteAllCommandReceived = (r: ConversationRecognizer, e: MuteAllEventArgs): void => {\r\n try {\r\n this.privParticipants.participants.forEach((p: IInternalParticipant): boolean => p.isMuted = (p.isHost ? false : e.isMuted));\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.participantsChanged(\r\n this.privConversationTranslator,\r\n new ConversationParticipantsChangedEventArgs(ParticipantChangedReason.Updated,\r\n this.toParticipants(false), e.sessionId));\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onParticipantJoinCommandReceived = (r: ConversationRecognizer, e: ParticipantEventArgs): void => {\r\n try {\r\n const newParticipant: IInternalParticipant = this.privParticipants.addOrUpdateParticipant(e.participant);\r\n if (newParticipant !== undefined) {\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.participantsChanged(\r\n this.privConversationTranslator,\r\n new ConversationParticipantsChangedEventArgs(ParticipantChangedReason.JoinedConversation,\r\n [this.toParticipant(newParticipant)], e.sessionId));\r\n }\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onParticipantLeaveCommandReceived = (r: ConversationRecognizer, e: ParticipantEventArgs): void => {\r\n try {\r\n const ejectedParticipant: IInternalParticipant = this.privParticipants.getParticipant(e.participant.id);\r\n if (ejectedParticipant !== undefined) {\r\n // remove the participant from the internal participants list\r\n this.privParticipants.deleteParticipant(e.participant.id);\r\n if (!!this.privConversationTranslator) {\r\n // notify subscribers that the participant has left the conversation\r\n this.privConversationTranslator.participantsChanged(\r\n this.privConversationTranslator,\r\n new ConversationParticipantsChangedEventArgs(ParticipantChangedReason.LeftConversation,\r\n [this.toParticipant(ejectedParticipant)], e.sessionId));\r\n }\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onTranslationReceived = (r: ConversationRecognizer, e: ConversationReceivedTranslationEventArgs): void => {\r\n try {\r\n switch (e.command) {\r\n case ConversationTranslatorMessageTypes.final:\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.transcribed(\r\n this.privConversationTranslator,\r\n new ConversationTranslationEventArgs(e.payload, undefined, e.sessionId));\r\n }\r\n break;\r\n case ConversationTranslatorMessageTypes.partial:\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.transcribing(\r\n this.privConversationTranslator,\r\n new ConversationTranslationEventArgs(e.payload, undefined, e.sessionId));\r\n }\r\n break;\r\n case ConversationTranslatorMessageTypes.instantMessage:\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.textMessageReceived(\r\n this.privConversationTranslator,\r\n new ConversationTranslationEventArgs(e.payload, undefined, e.sessionId));\r\n }\r\n break;\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onParticipantsListReceived = (r: ConversationRecognizer, e: ParticipantsListEventArgs): void => {\r\n try {\r\n // check if the session token needs to be updated\r\n if (e.sessionToken !== undefined && e.sessionToken !== null) {\r\n this.privRoom.token = e.sessionToken;\r\n }\r\n // save the participants\r\n this.privParticipants.participants = [...e.participants];\r\n // enable the conversation\r\n if (this.privParticipants.me !== undefined) {\r\n this.privIsReady = true;\r\n }\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.participantsChanged(\r\n this.privConversationTranslator,\r\n new ConversationParticipantsChangedEventArgs(ParticipantChangedReason.JoinedConversation, this.toParticipants(true), e.sessionId));\r\n }\r\n // if this is the host, update the nickname if needed\r\n if (this.me.isHost) {\r\n const nickname: string = this.privConversationTranslator?.properties.getProperty(PropertyId.ConversationTranslator_Name);\r\n if (nickname !== undefined && nickname.length > 0 && nickname !== this.me.displayName) {\r\n // issue a change nickname request\r\n this.changeNicknameAsync(nickname);\r\n }\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onConversationExpiration = (r: ConversationRecognizer, e: ConversationExpirationEventArgs): void => {\r\n try {\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.conversationExpiration(this.privConversationTranslator, e);\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n /* eslint-enable @typescript-eslint/typedef */\r\n\r\n private addParticipantImplAsync(participant: IParticipant): Promise {\r\n const newParticipant: IInternalParticipant = this.privParticipants.addOrUpdateParticipant(participant);\r\n if (newParticipant !== undefined) {\r\n if (!!this.privTranscriberRecognizer) {\r\n const conversationInfo = this.conversationInfo;\r\n conversationInfo.participants = [participant];\r\n return this.privTranscriberRecognizer.pushConversationEvent(conversationInfo, \"join\");\r\n }\r\n }\r\n }\r\n\r\n private removeParticipantImplAsync(participant: IParticipant): Promise {\r\n this.privParticipants.deleteParticipant(participant.id);\r\n const conversationInfo = this.conversationInfo;\r\n conversationInfo.participants = [participant];\r\n return this.privTranscriberRecognizer.pushConversationEvent(conversationInfo, \"leave\");\r\n }\r\n\r\n private async close(dispose: boolean): Promise {\r\n try {\r\n this.privIsConnected = false;\r\n await this.privConversationRecognizer?.close();\r\n this.privConversationRecognizer = undefined;\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.dispose();\r\n }\r\n } catch (e) {\r\n // ignore error\r\n throw e;\r\n }\r\n if (dispose) {\r\n this.dispose();\r\n }\r\n }\r\n\r\n /** Helpers */\r\n private handleCallback(cb: () => void, err: (message: string) => void): void {\r\n if (!!cb) {\r\n try {\r\n cb();\r\n } catch (e) {\r\n if (!!err) {\r\n err(e as string);\r\n }\r\n }\r\n cb = undefined;\r\n }\r\n }\r\n\r\n private handleError(error: any, err: (message: string) => void): void {\r\n if (!!err) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n\r\n } else {\r\n err(error as string);\r\n }\r\n }\r\n }\r\n\r\n /** Participant Helpers */\r\n private toParticipants(includeHost: boolean): Participant[] {\r\n\r\n const participants: Participant[] = this.privParticipants.participants.map((p: IInternalParticipant): Participant => ( this.toParticipant(p) ) );\r\n if (!includeHost) {\r\n return participants.filter((p: Participant): boolean => p.isHost === false);\r\n } else {\r\n return participants;\r\n }\r\n }\r\n\r\n private toParticipant(p: IInternalParticipant): Participant {\r\n return new Participant(p.id, p.avatar, p.displayName, p.isHost, p.isMuted, p.isUsingTts, p.preferredLanguage, p.voice);\r\n }\r\n\r\n private getMuteAllCommand(isMuted: boolean): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"conversationId\");\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.setMuteAll,\r\n participantId: this.privRoom.participantId, // the id of the host\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n value: isMuted\r\n });\r\n }\r\n\r\n private getMuteCommand(participantId: string, isMuted: boolean): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"conversationId\");\r\n Contracts.throwIfNullOrWhitespace(participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.setMute,\r\n // eslint-disable-next-line object-shorthand\r\n participantId: participantId,\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n value: isMuted\r\n });\r\n }\r\n\r\n private getLockCommand(isLocked: boolean): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"conversationId\");\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.setLockState,\r\n participantId: this.privRoom.participantId,\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n value: isLocked\r\n });\r\n }\r\n\r\n private getEjectCommand(participantId: string): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"conversationId\");\r\n Contracts.throwIfNullOrWhitespace(participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.ejectParticipant,\r\n // eslint-disable-next-line object-shorthand\r\n participantId: participantId,\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n });\r\n }\r\n\r\n private getSetTranslateToLanguagesCommand(languages: string[]): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"conversationId\");\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.setTranslateToLanguages,\r\n participantId: this.privRoom.participantId, // the id of the host\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n value: languages\r\n });\r\n }\r\n\r\n private getChangeNicknameCommand(nickname: string): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"conversationId\");\r\n Contracts.throwIfNullOrWhitespace(nickname, \"nickname\");\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.changeNickname,\r\n nickname,\r\n participantId: this.privRoom.participantId, // the id of the host\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n value: nickname\r\n });\r\n }\r\n\r\n private getMessageCommand(message: string): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"conversationId\");\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\r\n Contracts.throwIfNullOrWhitespace(message, \"message\");\r\n\r\n return JSON.stringify({\r\n participantId: this.privRoom.participantId,\r\n roomId: this.privRoom.roomId,\r\n text: message,\r\n type: ConversationTranslatorMessageTypes.instantMessage\r\n });\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n AudioConfig,\r\n SpeechTranslationConfig\r\n} from \"../Exports.js\";\r\nimport { Callback } from \"./IConversation.js\";\r\n\r\nexport class ConversationCommon {\r\n\r\n protected privAudioConfig: AudioConfig;\r\n protected privSpeechTranslationConfig: SpeechTranslationConfig;\r\n\r\n public constructor(audioConfig?: AudioConfig) {\r\n this.privAudioConfig = audioConfig;\r\n }\r\n\r\n protected handleCallback(cb: Callback, err: Callback): void {\r\n if (!!cb) {\r\n try {\r\n cb();\r\n } catch (e) {\r\n if (!!err) {\r\n err(e);\r\n }\r\n }\r\n cb = undefined;\r\n }\r\n }\r\n\r\n protected handleError(error: any, err: Callback): void {\r\n if (!!err) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n\r\n } else {\r\n err(error);\r\n }\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\nimport { SessionEventArgs } from \"../Exports.js\";\r\n\r\nexport class ConversationExpirationEventArgs extends SessionEventArgs {\r\n private privExpirationTime: number;\r\n\r\n public constructor(expirationTime: number, sessionId?: string) {\r\n super(sessionId);\r\n this.privExpirationTime = expirationTime;\r\n }\r\n\r\n /** How much longer until the conversation expires (in minutes). */\r\n public get expirationTime(): number {\r\n return this.privExpirationTime;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\nimport { SessionEventArgs } from \"../Exports.js\";\r\nimport { ParticipantChangedReason } from \"./Exports.js\";\r\nimport { IParticipant } from \"./IParticipant.js\";\r\n\r\nexport class ConversationParticipantsChangedEventArgs extends SessionEventArgs {\r\n private privReason: ParticipantChangedReason;\r\n private privParticipant: IParticipant[];\r\n\r\n public constructor(reason: ParticipantChangedReason, participants: IParticipant[], sessionId?: string) {\r\n super(sessionId);\r\n this.privReason = reason;\r\n this.privParticipant = participants;\r\n }\r\n\r\n public get reason(): ParticipantChangedReason {\r\n return this.privReason;\r\n }\r\n\r\n public get participants(): IParticipant[] {\r\n return this.privParticipant;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n IAuthentication,\r\n IConnectionFactory,\r\n OutputFormatPropertyName,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n // SpeechConnectionFactory,\r\n ConversationTranscriberConnectionFactory,\r\n SpeechServiceConfig,\r\n ConversationTranscriptionServiceRecognizer,\r\n} from \"../../common.speech/Exports.js\";\r\nimport { marshalPromiseToCallbacks } from \"../../common/Exports.js\";\r\nimport { AudioConfigImpl } from \"../Audio/AudioConfig.js\";\r\nimport { Contracts } from \"../Contracts.js\";\r\nimport {\r\n AudioConfig,\r\n AutoDetectSourceLanguageConfig,\r\n ConversationTranscriptionEventArgs,\r\n ConversationTranscriptionCanceledEventArgs,\r\n OutputFormat,\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer,\r\n} from \"../Exports.js\";\r\nimport { SpeechConfig, SpeechConfigImpl } from \"../SpeechConfig.js\";\r\n\r\n/**\r\n * Performs speech recognition with speaker separation from microphone, file, or other audio input streams, and gets transcribed text as result.\r\n * @class ConversationTranscriber\r\n */\r\nexport class ConversationTranscriber extends Recognizer {\r\n private privDisposedRecognizer: boolean;\r\n\r\n /**\r\n * ConversationTranscriber constructor.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - an set of initial properties for this recognizer\r\n * @param {AudioConfig} audioConfig - An optional audio configuration associated with the recognizer\r\n */\r\n public constructor(speechConfig: SpeechConfig, audioConfig?: AudioConfig) {\r\n const speechConfigImpl: SpeechConfigImpl = speechConfig as SpeechConfigImpl;\r\n Contracts.throwIfNull(speechConfigImpl, \"speechConfig\");\r\n\r\n Contracts.throwIfNullOrWhitespace(\r\n speechConfigImpl.properties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage),\r\n PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n\r\n super(audioConfig, speechConfigImpl.properties, new ConversationTranscriberConnectionFactory());\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_RecognitionEndpointVersion, \"2\");\r\n this.privDisposedRecognizer = false;\r\n }\r\n\r\n /**\r\n * ConversationTranscriber constructor.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - an set of initial properties for this recognizer\r\n * @param {AutoDetectSourceLanguageConfig} autoDetectSourceLanguageConfig - An source language detection configuration associated with the recognizer\r\n * @param {AudioConfig} audioConfig - An optional audio configuration associated with the recognizer\r\n */\r\n public static FromConfig(speechConfig: SpeechConfig, autoDetectSourceLanguageConfig: AutoDetectSourceLanguageConfig, audioConfig?: AudioConfig): ConversationTranscriber {\r\n const speechConfigImpl: SpeechConfigImpl = speechConfig as SpeechConfigImpl;\r\n autoDetectSourceLanguageConfig.properties.mergeTo(speechConfigImpl.properties);\r\n const recognizer = new ConversationTranscriber(speechConfig, audioConfig);\r\n return recognizer;\r\n }\r\n\r\n /**\r\n * The event transcribing signals that an intermediate transcription result is received.\r\n * @member ConversationTranscriber.prototype.transcribing\r\n * @function\r\n * @public\r\n */\r\n public transcribing: (sender: Recognizer, event: ConversationTranscriptionEventArgs) => void;\r\n\r\n /**\r\n * The event transcriber signals that a final recognition result is received.\r\n * @member ConversationTranscriber.prototype.transcribed\r\n * @function\r\n * @public\r\n */\r\n public transcribed: (sender: Recognizer, event: ConversationTranscriptionEventArgs) => void;\r\n\r\n /**\r\n * The event canceled signals that an error occurred during transcription.\r\n * @member ConversationTranscriber.prototype.canceled\r\n * @function\r\n * @public\r\n */\r\n public canceled: (sender: Recognizer, event: ConversationTranscriptionCanceledEventArgs) => void;\r\n\r\n /**\r\n * Gets the endpoint id of a customized speech model that is used for transcription.\r\n * @member ConversationTranscriber.prototype.endpointId\r\n * @function\r\n * @public\r\n * @returns {string} the endpoint id of a customized speech model that is used for speech recognition.\r\n */\r\n public get endpointId(): string {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_EndpointId, \"00000000-0000-0000-0000-000000000000\");\r\n }\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member ConversationTranscriber.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token used to communicate with the service.\r\n * @member ConversationTranscriber.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} token - Authorization token.\r\n */\r\n public set authorizationToken(token: string) {\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, token);\r\n }\r\n\r\n /**\r\n * Gets the spoken language of transcription.\r\n * @member ConversationTranscriber.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @returns {string} The spoken language of transcription.\r\n */\r\n public get speechRecognitionLanguage(): string {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage);\r\n }\r\n\r\n /**\r\n * Gets the output format of transcription.\r\n * @member ConversationTranscriber.prototype.outputFormat\r\n * @function\r\n * @public\r\n * @returns {OutputFormat} The output format of transcription.\r\n */\r\n public get outputFormat(): OutputFormat {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n\r\n if (this.properties.getProperty(OutputFormatPropertyName, OutputFormat[OutputFormat.Simple]) === OutputFormat[OutputFormat.Simple]) {\r\n return OutputFormat.Simple;\r\n } else {\r\n return OutputFormat.Detailed;\r\n }\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this conversation transcriber.\r\n * @member ConversationTranscriber.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their values defined for this SpeechRecognizer.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * Starts conversation transcription, until stopTranscribingAsync() is called.\r\n * User must subscribe to events to receive transcription results.\r\n * @member ConversationTranscriber.prototype.startTranscribingAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the transcription has started.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public startTranscribingAsync(cb?: () => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.startContinuousRecognitionAsyncImpl(RecognitionMode.Conversation), cb, err);\r\n }\r\n\r\n /**\r\n * Stops conversation transcription.\r\n * @member ConversationTranscriber.prototype.stopTranscribingAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the transcription has stopped.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public stopTranscribingAsync(cb?: () => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.stopContinuousRecognitionAsyncImpl(), cb, err);\r\n }\r\n\r\n /**\r\n * closes all external resources held by an instance of this class.\r\n * @member ConversationTranscriber.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, errorCb?: (error: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n marshalPromiseToCallbacks(this.dispose(true), cb, errorCb);\r\n }\r\n\r\n /**\r\n * Disposes any resources held by the object.\r\n * @member SpeechRecognizer.prototype.dispose\r\n * @function\r\n * @public\r\n * @param {boolean} disposing - true if disposing the object.\r\n */\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposedRecognizer) {\r\n return;\r\n }\r\n\r\n if (disposing) {\r\n this.privDisposedRecognizer = true;\r\n await this.implRecognizerStop();\r\n }\r\n\r\n await super.dispose(disposing);\r\n }\r\n\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(speechConfig, this.privProperties);\r\n }\r\n\r\n protected createServiceRecognizer(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioConfig: AudioConfig,\r\n recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n const configImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n recognizerConfig.isSpeakerDiarizationEnabled = true;\r\n return new ConversationTranscriptionServiceRecognizer(authentication, connectionFactory, configImpl, recognizerConfig, this);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection, RecognitionResult, ResultReason } from \"../Exports.js\";\r\n\r\n/**\r\n * Defines result of conversation transcription.\r\n * @class ConversationTranscriptionResult\r\n */\r\nexport class ConversationTranscriptionResult extends RecognitionResult {\r\n private readonly privSpeakerId: string;\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @public\r\n * @param {string} resultId - The result id.\r\n * @param {ResultReason} reason - The reason.\r\n * @param {string} text - The recognized text.\r\n * @param {number} duration - The duration.\r\n * @param {number} offset - The offset into the stream.\r\n * @param {string} language - Primary Language detected, if provided.\r\n * @param {string} languageDetectionConfidence - Primary Language confidence (\"Unknown,\" \"Low,\" \"Medium,\" \"High\"...), if provided.\r\n * @param {string} speakerId - speaker id for conversation transcription.\r\n * @param {string} errorDetails - Error details, if provided.\r\n * @param {string} json - Additional Json, if provided.\r\n * @param {PropertyCollection} properties - Additional properties, if provided.\r\n */\r\n public constructor(resultId?: string, reason?: ResultReason, text?: string,\r\n duration?: number, offset?: number, language?: string,\r\n languageDetectionConfidence?: string, speakerId?: string, errorDetails?: string,\r\n json?: string, properties?: PropertyCollection) {\r\n super(resultId, reason, text, duration, offset, language, languageDetectionConfidence, errorDetails, json, properties);\r\n this.privSpeakerId = speakerId;\r\n }\r\n\r\n /**\r\n * speaker id\r\n * @member ConversationTranscriptionResult.prototype.speakerId\r\n * @function\r\n * @public\r\n * @returns {string} id of speaker in given result\r\n */\r\n public get speakerId(): string {\r\n return this.privSpeakerId;\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\nimport { CancellationEventArgsBase } from \"../CancellationEventArgsBase.js\";\r\n\r\nexport class ConversationTranslationCanceledEventArgs extends CancellationEventArgsBase {\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\nimport { RecognitionEventArgs } from \"../Exports.js\";\r\nimport { ConversationTranslationResult } from \"./Exports.js\";\r\n\r\nexport class ConversationTranslationEventArgs extends RecognitionEventArgs {\r\n private privResult: ConversationTranslationResult;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {ConversationTranslationResult} result - The translation recognition result.\r\n * @param {number} offset - The offset.\r\n * @param {string} sessionId - The session id.\r\n */\r\n public constructor(result: ConversationTranslationResult, offset?: number, sessionId?: string) {\r\n super(offset, sessionId);\r\n this.privResult = result;\r\n }\r\n\r\n /**\r\n * Specifies the recognition result.\r\n * @returns {ConversationTranslationResult} the recognition result.\r\n */\r\n public get result(): ConversationTranslationResult {\r\n return this.privResult;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\nimport { PropertyCollection } from \"../PropertyCollection.js\";\r\nimport { ResultReason } from \"../ResultReason.js\";\r\nimport { TranslationRecognitionResult } from \"../TranslationRecognitionResult.js\";\r\nimport { Translations } from \"../Translations.js\";\r\n\r\nexport class ConversationTranslationResult extends TranslationRecognitionResult {\r\n private privId: string;\r\n private privOrigLang: string;\r\n\r\n public constructor(participantId: string,\r\n translations: Translations,\r\n originalLanguage?: string,\r\n resultId?: string,\r\n reason?: ResultReason,\r\n text?: string,\r\n duration?: number,\r\n offset?: number,\r\n errorDetails?: string,\r\n json?: string,\r\n properties?: PropertyCollection) {\r\n super(translations, resultId, reason, text, duration, offset, undefined, undefined, errorDetails, json, properties);\r\n this.privId = participantId;\r\n this.privOrigLang = originalLanguage;\r\n }\r\n\r\n /**\r\n * The unique identifier for the participant this result is for.\r\n */\r\n public get participantId(): string {\r\n return this.privId;\r\n }\r\n\r\n /**\r\n * The original language this result was in.\r\n */\r\n public get originalLang(): string {\r\n return this.privOrigLang;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {\r\n ConversationConnectionConfig,\r\n IAuthentication,\r\n ServicePropertiesPropertyName,\r\n} from \"../../common.speech/Exports.js\";\r\nimport { ConversationTranslatorConnectionFactory } from \"../../common.speech/Transcription/ConversationTranslatorConnectionFactory.js\";\r\nimport {\r\n IDisposable,\r\n IErrorMessages,\r\n IStringDictionary,\r\n marshalPromiseToCallbacks\r\n} from \"../../common/Exports.js\";\r\nimport { Contracts } from \"../Contracts.js\";\r\nimport {\r\n AudioConfig,\r\n CancellationErrorCode,\r\n CancellationReason,\r\n ProfanityOption,\r\n PropertyCollection,\r\n PropertyId,\r\n ServicePropertyChannel,\r\n SessionEventArgs,\r\n SpeechTranslationConfig,\r\n TranslationRecognitionEventArgs,\r\n TranslationRecognizer\r\n} from \"../Exports.js\";\r\nimport { ConversationImpl } from \"./Conversation.js\";\r\nimport {\r\n ConversationCommon,\r\n ConversationExpirationEventArgs,\r\n ConversationHandler,\r\n ConversationParticipantsChangedEventArgs,\r\n ConversationTranslationCanceledEventArgs,\r\n ConversationTranslationEventArgs,\r\n IConversationTranslator,\r\n Participant\r\n} from \"./Exports.js\";\r\nimport { Callback, IConversation } from \"./IConversation.js\";\r\n\r\nexport enum SpeechState {\r\n Inactive, Connecting, Connected\r\n}\r\n\r\n// child class of TranslationRecognizer meant only for use with ConversationTranslator\r\nclass ConversationTranslationRecognizer extends TranslationRecognizer {\r\n private privTranslator: ConversationTranslator;\r\n private privSpeechState: SpeechState;\r\n\r\n public constructor(speechConfig: SpeechTranslationConfig, audioConfig: AudioConfig, translator: ConversationTranslator, convGetter: () => ConversationImpl) {\r\n\r\n super(speechConfig, audioConfig, new ConversationTranslatorConnectionFactory(convGetter));\r\n\r\n this.privSpeechState = SpeechState.Inactive;\r\n if (!!translator) {\r\n this.privTranslator = translator;\r\n this.sessionStarted = (): void => {\r\n this.privSpeechState = SpeechState.Connected;\r\n };\r\n\r\n this.sessionStopped = (): void => {\r\n this.privSpeechState = SpeechState.Inactive;\r\n };\r\n\r\n this.recognizing = (tr: TranslationRecognizer, e: TranslationRecognitionEventArgs): void => {\r\n if (!!this.privTranslator.recognizing) {\r\n this.privTranslator.recognizing(this.privTranslator, e);\r\n }\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\r\n this.recognized = async (tr: TranslationRecognizer, e: TranslationRecognitionEventArgs): Promise => {\r\n // if there is an error connecting to the conversation service from the speech service the error will be returned in the ErrorDetails field.\r\n if (e.result?.errorDetails) {\r\n await this.cancelSpeech();\r\n // TODO: format the error message contained in 'errorDetails'\r\n this.fireCancelEvent(e.result.errorDetails);\r\n } else {\r\n if (!!this.privTranslator.recognized) {\r\n this.privTranslator.recognized(this.privTranslator, e);\r\n }\r\n }\r\n return;\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\r\n this.canceled = async (): Promise => {\r\n if (this.privSpeechState !== SpeechState.Inactive) {\r\n try {\r\n await this.cancelSpeech();\r\n } catch (error) {\r\n this.privSpeechState = SpeechState.Inactive;\r\n }\r\n }\r\n };\r\n }\r\n }\r\n\r\n public get state(): SpeechState {\r\n return this.privSpeechState;\r\n }\r\n\r\n public set state(newState: SpeechState) {\r\n this.privSpeechState = newState;\r\n }\r\n\r\n public set authentication(token: IAuthentication) {\r\n this.privReco.authentication = token;\r\n }\r\n\r\n\r\n public onConnection(): void {\r\n this.privSpeechState = SpeechState.Connected;\r\n }\r\n\r\n public async onCancelSpeech(): Promise {\r\n this.privSpeechState = SpeechState.Inactive;\r\n await this.cancelSpeech();\r\n }\r\n\r\n /**\r\n * Fire a cancel event\r\n * @param error\r\n */\r\n private fireCancelEvent(error: string): void {\r\n try {\r\n if (!!this.privTranslator.canceled) {\r\n const cancelEvent: ConversationTranslationCanceledEventArgs = new ConversationTranslationCanceledEventArgs(\r\n CancellationReason.Error,\r\n error,\r\n CancellationErrorCode.RuntimeError\r\n );\r\n\r\n this.privTranslator.canceled(this.privTranslator, cancelEvent);\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n }\r\n\r\n private async cancelSpeech(): Promise {\r\n try {\r\n this.stopContinuousRecognitionAsync();\r\n await this.privReco?.disconnect();\r\n this.privSpeechState = SpeechState.Inactive;\r\n } catch (e) {\r\n // ignore the error\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Join, leave or connect to a conversation.\r\n */\r\nexport class ConversationTranslator extends ConversationCommon implements IConversationTranslator, IDisposable {\r\n\r\n public canceled: (sender: ConversationHandler, event: ConversationTranslationCanceledEventArgs) => void;\r\n public conversationExpiration: (sender: IConversationTranslator, event: ConversationExpirationEventArgs) => void;\r\n public participantsChanged: (sender: IConversationTranslator, event: ConversationParticipantsChangedEventArgs) => void;\r\n public sessionStarted: (sender: ConversationHandler, event: SessionEventArgs) => void;\r\n public sessionStopped: (sender: ConversationHandler, event: SessionEventArgs) => void;\r\n public textMessageReceived: (sender: IConversationTranslator, event: ConversationTranslationEventArgs) => void;\r\n\r\n // Callbacks for whole conversation results\r\n public transcribed: (sender: IConversationTranslator, event: ConversationTranslationEventArgs) => void;\r\n public transcribing: (sender: IConversationTranslator, event: ConversationTranslationEventArgs) => void;\r\n\r\n // Callbacks for detecting speech/translation results from self\r\n public recognized: (sender: IConversationTranslator, event: TranslationRecognitionEventArgs) => void;\r\n public recognizing: (sender: IConversationTranslator, event: TranslationRecognitionEventArgs) => void;\r\n\r\n private privSpeechRecognitionLanguage: string;\r\n private privProperties: PropertyCollection;\r\n private privIsDisposed: boolean;\r\n private privCTRecognizer: ConversationTranslationRecognizer;\r\n private privIsSpeaking: boolean;\r\n private privConversation: ConversationImpl;\r\n private privErrors: IErrorMessages = ConversationConnectionConfig.restErrors;\r\n private privPlaceholderKey: string;\r\n private privPlaceholderRegion: string;\r\n\r\n public constructor(audioConfig?: AudioConfig) {\r\n super(audioConfig);\r\n this.privIsDisposed = false;\r\n this.privIsSpeaking = false;\r\n this.privPlaceholderKey = \"abcdefghijklmnopqrstuvwxyz012345\";\r\n this.privPlaceholderRegion = \"westus\";\r\n this.privProperties = new PropertyCollection();\r\n }\r\n\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n public get speechRecognitionLanguage(): string {\r\n return this.privSpeechRecognitionLanguage;\r\n }\r\n\r\n public get participants(): Participant[] {\r\n return this.privConversation?.participants;\r\n }\r\n\r\n private get canSpeak(): boolean {\r\n\r\n // is there a Conversation websocket available and has the Recognizer been set up\r\n if (!this.privConversation.isConnected || !this.privCTRecognizer) {\r\n return false;\r\n }\r\n\r\n // is the user already speaking\r\n if (this.privIsSpeaking || this.privCTRecognizer.state === SpeechState.Connected || this.privCTRecognizer.state === SpeechState.Connecting) {\r\n return false;\r\n }\r\n\r\n // is the user muted\r\n if (this.privConversation.isMutedByHost) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public onToken(token: IAuthentication): void {\r\n this.privCTRecognizer.authentication = token;\r\n }\r\n\r\n public setServiceProperty(name: string, value: string): void {\r\n const currentProperties: IStringDictionary = JSON.parse(this.privProperties.getProperty(ServicePropertiesPropertyName, \"{}\")) as IStringDictionary;\r\n\r\n currentProperties[name] = value;\r\n\r\n this.privProperties.setProperty(ServicePropertiesPropertyName, JSON.stringify(currentProperties));\r\n }\r\n\r\n /**\r\n * Join a conversation. If this is the host, pass in the previously created Conversation object.\r\n * @param conversation\r\n * @param nickname\r\n * @param lang\r\n * @param cb\r\n * @param err\r\n */\r\n public joinConversationAsync(conversation: IConversation, nickname: string, cb?: Callback, err?: Callback): void;\r\n public joinConversationAsync(conversationId: string, nickname: string, lang: string, cb?: Callback, err?: Callback): void;\r\n public joinConversationAsync(conversation: string | IConversation, nickname: string, param1?: string | Callback, param2?: Callback, param3?: Callback): void {\r\n\r\n try {\r\n\r\n if (typeof conversation === \"string\") {\r\n\r\n Contracts.throwIfNullOrUndefined(conversation, this.privErrors.invalidArgs.replace(\"{arg}\", \"conversation id\"));\r\n Contracts.throwIfNullOrWhitespace(nickname, this.privErrors.invalidArgs.replace(\"{arg}\", \"nickname\"));\r\n\r\n if (!!this.privConversation) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedStart), param3);\r\n }\r\n\r\n let lang: string = param1 as string;\r\n if (lang === undefined || lang === null || lang === \"\") {\r\n lang = ConversationConnectionConfig.defaultLanguageCode;\r\n }\r\n\r\n // create a placeholder config\r\n this.privSpeechTranslationConfig = SpeechTranslationConfig.fromSubscription(\r\n this.privPlaceholderKey,\r\n this.privPlaceholderRegion);\r\n this.privSpeechTranslationConfig.setProfanity(ProfanityOption.Masked);\r\n this.privSpeechTranslationConfig.addTargetLanguage(lang);\r\n this.privSpeechTranslationConfig.setProperty(PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage], lang);\r\n this.privSpeechTranslationConfig.setProperty(PropertyId[PropertyId.ConversationTranslator_Name], nickname);\r\n\r\n const propertyIdsToCopy: (string | PropertyId)[] = [\r\n PropertyId.SpeechServiceConnection_Host,\r\n PropertyId.ConversationTranslator_Host,\r\n PropertyId.SpeechServiceConnection_Endpoint,\r\n PropertyId.SpeechServiceConnection_ProxyHostName,\r\n PropertyId.SpeechServiceConnection_ProxyPassword,\r\n PropertyId.SpeechServiceConnection_ProxyPort,\r\n PropertyId.SpeechServiceConnection_ProxyUserName,\r\n \"ConversationTranslator_MultiChannelAudio\",\r\n \"ConversationTranslator_Region\"\r\n ];\r\n\r\n for (const prop of propertyIdsToCopy) {\r\n const value = this.privProperties.getProperty(prop);\r\n if (value) {\r\n const key = typeof prop === \"string\" ? prop : PropertyId[prop];\r\n this.privSpeechTranslationConfig.setProperty(key, value);\r\n }\r\n }\r\n\r\n const currentProperties = JSON.parse(this.privProperties.getProperty(ServicePropertiesPropertyName, \"{}\")) as IStringDictionary;\r\n for (const prop of Object.keys(currentProperties)) {\r\n this.privSpeechTranslationConfig.setServiceProperty(prop, currentProperties[prop], ServicePropertyChannel.UriQueryParameter);\r\n }\r\n\r\n // join the conversation\r\n this.privConversation = new ConversationImpl(this.privSpeechTranslationConfig);\r\n this.privConversation.conversationTranslator = this;\r\n\r\n this.privConversation.joinConversationAsync(\r\n conversation,\r\n nickname,\r\n lang,\r\n ((result: string): void => {\r\n\r\n if (!result) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConnect), param3);\r\n }\r\n\r\n this.privSpeechTranslationConfig.authorizationToken = result;\r\n this.privConversation.room.isHost = false;\r\n\r\n // connect to the ws\r\n this.privConversation.startConversationAsync(\r\n ((): void => {\r\n this.handleCallback(param2, param3);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, param3);\r\n }));\r\n\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, param3);\r\n }));\r\n\r\n } else if (typeof conversation === \"object\") {\r\n\r\n Contracts.throwIfNullOrUndefined(conversation, this.privErrors.invalidArgs.replace(\"{arg}\", \"conversation id\"));\r\n Contracts.throwIfNullOrWhitespace(nickname, this.privErrors.invalidArgs.replace(\"{arg}\", \"nickname\"));\r\n\r\n // save the nickname\r\n this.privProperties.setProperty(PropertyId.ConversationTranslator_Name, nickname);\r\n // ref the conversation object\r\n this.privConversation = conversation as ConversationImpl;\r\n // ref the conversation translator object\r\n this.privConversation.conversationTranslator = this;\r\n this.privConversation.room.isHost = true;\r\n\r\n Contracts.throwIfNullOrUndefined(this.privConversation, this.privErrors.permissionDeniedConnect);\r\n Contracts.throwIfNullOrUndefined(this.privConversation.room.token, this.privErrors.permissionDeniedConnect);\r\n\r\n this.privSpeechTranslationConfig = conversation.config;\r\n\r\n this.handleCallback(param1 as Callback, param2);\r\n } else {\r\n this.handleError(\r\n new Error(this.privErrors.invalidArgs.replace(\"{arg}\", \"invalid conversation type\")),\r\n param2);\r\n }\r\n\r\n } catch (error) {\r\n this.handleError(error, typeof param1 === \"string\" ? param3 : param2);\r\n }\r\n }\r\n\r\n /**\r\n * Leave the conversation\r\n * @param cb\r\n * @param err\r\n */\r\n public leaveConversationAsync(cb?: Callback, err?: Callback): void {\r\n\r\n marshalPromiseToCallbacks((async (): Promise => {\r\n\r\n // stop the speech websocket\r\n await this.cancelSpeech();\r\n // stop the websocket\r\n await this.privConversation.endConversationImplAsync();\r\n // https delete request\r\n await this.privConversation.deleteConversationImplAsync();\r\n this.dispose();\r\n\r\n })(), cb, err);\r\n }\r\n\r\n /**\r\n * Send a text message\r\n * @param message\r\n * @param cb\r\n * @param err\r\n */\r\n public sendTextMessageAsync(message: string, cb?: Callback, err?: Callback): void {\r\n\r\n try {\r\n Contracts.throwIfNullOrUndefined(this.privConversation, this.privErrors.permissionDeniedSend);\r\n Contracts.throwIfNullOrWhitespace(message, this.privErrors.invalidArgs.replace(\"{arg}\", message));\r\n\r\n this.privConversation.sendTextMessageAsync(message, cb, err);\r\n } catch (error) {\r\n\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Start speaking\r\n * @param cb\r\n * @param err\r\n */\r\n public startTranscribingAsync(cb?: Callback, err?: Callback): void {\r\n marshalPromiseToCallbacks((async (): Promise => {\r\n try {\r\n Contracts.throwIfNullOrUndefined(this.privConversation, this.privErrors.permissionDeniedSend);\r\n Contracts.throwIfNullOrUndefined(this.privConversation.room.token, this.privErrors.permissionDeniedConnect);\r\n\r\n if (this.privCTRecognizer === undefined) {\r\n await this.connectTranslatorRecognizer();\r\n }\r\n Contracts.throwIfNullOrUndefined(this.privCTRecognizer, this.privErrors.permissionDeniedSend);\r\n\r\n if (!this.canSpeak) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n\r\n await this.startContinuousRecognition();\r\n\r\n this.privIsSpeaking = true;\r\n } catch (error) {\r\n this.privIsSpeaking = false;\r\n await this.cancelSpeech();\r\n throw error;\r\n }\r\n })(), cb, err);\r\n }\r\n\r\n /**\r\n * Stop speaking\r\n * @param cb\r\n * @param err\r\n */\r\n public stopTranscribingAsync(cb?: Callback, err?: Callback): void {\r\n marshalPromiseToCallbacks((async (): Promise => {\r\n try {\r\n if (!this.privIsSpeaking) {\r\n // stop speech\r\n await this.cancelSpeech();\r\n return;\r\n }\r\n\r\n // stop the recognition but leave the websocket open\r\n this.privIsSpeaking = false;\r\n await new Promise((resolve: () => void, reject: (error: string) => void): void => {\r\n this.privCTRecognizer.stopContinuousRecognitionAsync(resolve, reject);\r\n });\r\n\r\n } catch (error) {\r\n await this.cancelSpeech();\r\n }\r\n })(), cb, err);\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privIsDisposed;\r\n }\r\n\r\n public dispose(reason?: string, success?: () => void, err?: (error: string) => void): void {\r\n marshalPromiseToCallbacks((async (): Promise => {\r\n if (this.isDisposed && !this.privIsSpeaking) {\r\n return;\r\n }\r\n await this.cancelSpeech();\r\n this.privIsDisposed = true;\r\n this.privSpeechTranslationConfig.close();\r\n this.privSpeechRecognitionLanguage = undefined;\r\n this.privProperties = undefined;\r\n this.privAudioConfig = undefined;\r\n this.privSpeechTranslationConfig = undefined;\r\n this.privConversation.dispose();\r\n this.privConversation = undefined;\r\n })(), success, err);\r\n }\r\n\r\n /**\r\n * Cancel the speech websocket\r\n */\r\n private async cancelSpeech(): Promise {\r\n try {\r\n this.privIsSpeaking = false;\r\n await this.privCTRecognizer?.onCancelSpeech();\r\n this.privCTRecognizer = undefined;\r\n } catch (e) {\r\n // ignore the error\r\n }\r\n }\r\n\r\n /**\r\n * Connect to the speech translation recognizer.\r\n * Currently there is no language validation performed before sending the SpeechLanguage code to the service.\r\n * If it's an invalid language the raw error will be: 'Error during WebSocket handshake: Unexpected response code: 400'\r\n * e.g. pass in 'fr' instead of 'fr-FR', or a text-only language 'cy'\r\n */\r\n private async connectTranslatorRecognizer(): Promise {\r\n try {\r\n\r\n if (this.privAudioConfig === undefined) {\r\n this.privAudioConfig = AudioConfig.fromDefaultMicrophoneInput();\r\n }\r\n\r\n // clear the temp subscription key if it's a participant joining\r\n if (this.privSpeechTranslationConfig.getProperty(PropertyId[PropertyId.SpeechServiceConnection_Key])\r\n === this.privPlaceholderKey) {\r\n this.privSpeechTranslationConfig.setProperty(PropertyId[PropertyId.SpeechServiceConnection_Key], \"\");\r\n }\r\n\r\n const convGetter = (): ConversationImpl => this.privConversation;\r\n this.privCTRecognizer = new ConversationTranslationRecognizer(this.privSpeechTranslationConfig, this.privAudioConfig, this, convGetter);\r\n } catch (error) {\r\n await this.cancelSpeech();\r\n throw error;\r\n }\r\n }\r\n\r\n /**\r\n * Handle the start speaking request\r\n */\r\n private startContinuousRecognition(): Promise {\r\n return new Promise((resolve: () => void, reject: (error: string) => void): void => {\r\n this.privCTRecognizer.startContinuousRecognitionAsync(resolve, reject);\r\n });\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\nexport { Conversation, ConversationImpl } from \"./Conversation.js\";\r\nexport { ConversationInfo } from \"./IConversation.js\";\r\nexport { ConversationCommon } from \"./ConversationCommon.js\";\r\nexport { ConversationExpirationEventArgs } from \"./ConversationExpirationEventArgs.js\";\r\nexport { ConversationParticipantsChangedEventArgs } from \"./ConversationParticipantsChangedEventArgs.js\";\r\nexport { ConversationTranslationCanceledEventArgs } from \"./ConversationTranslationCanceledEventArgs.js\";\r\nexport { ConversationTranslationEventArgs } from \"./ConversationTranslationEventArgs.js\";\r\nexport { ConversationTranslationResult } from \"./ConversationTranslationResult.js\";\r\nexport { ConversationTranslator } from \"./ConversationTranslator.js\";\r\nexport { ConversationTranscriber } from \"./ConversationTranscriber.js\";\r\nexport { IParticipant, Participant, User, VoiceSignature } from \"./IParticipant.js\";\r\nexport { ParticipantChangedReason } from \"./ParticipantChangedReason.js\";\r\nexport { ConversationHandler, ConversationTranscriptionHandler, IConversationTranslator } from \"./ConversationHandler.js\";\r\nexport { Meeting, MeetingImpl } from \"./Meeting.js\";\r\nexport { MeetingInfo } from \"./IMeeting.js\";\r\nexport { MeetingTranscriptionCanceledEventArgs } from \"./MeetingTranscriptionCanceledEventArgs.js\";\r\nexport { MeetingTranscriber } from \"./MeetingTranscriber.js\";\r\nexport { MeetingHandler, MeetingTranscriptionHandler } from \"./MeetingHandler.js\";\r\nexport { ConversationTranscriptionResult } from \"./ConversationTranscriptionResult.js\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport { PropertyCollection } from \"../Exports.js\";\r\n\r\n/**\r\n * Represents a user in a conversation.\r\n * Added in version 1.4.0\r\n */\r\nexport interface IUser {\r\n /** Gets the user's ID */\r\n readonly userId: string;\r\n}\r\n\r\nexport class User implements IUser {\r\n private privUserId: string;\r\n\r\n public constructor(userId: string) {\r\n this.privUserId = userId;\r\n }\r\n\r\n public get userId(): string {\r\n return this.privUserId;\r\n }\r\n}\r\n\r\nexport interface VoiceSignature {\r\n Version: number;\r\n Tag: string;\r\n Data: string;\r\n}\r\n\r\nexport interface TranscriptionParticipant {\r\n /** The unique identifier for the participant. */\r\n readonly id: string;\r\n /** The participant's preferred spoken language. */\r\n readonly preferredLanguage: string;\r\n /** The participant's voice signature */\r\n readonly voice: string;\r\n}\r\n\r\n/**\r\n * Represents a participant in a conversation.\r\n * Added in version 1.4.0\r\n */\r\nexport interface IParticipant extends TranscriptionParticipant {\r\n /** Gets the colour of the user's avatar as an HTML hex string (e.g. FF0000 for red). */\r\n readonly avatar: string;\r\n /**\r\n * The participant's display name. Please note that there may be more than one participant\r\n * with the same name. You can use property to tell them apart.\r\n */\r\n readonly displayName: string;\r\n /** Gets whether or not this participant is the host. */\r\n readonly isHost: boolean;\r\n /** Gets whether or not this participant is muted. */\r\n readonly isMuted: boolean;\r\n /** Gets whether or not the participant is using Text To Speech (TTS). */\r\n readonly isUsingTts: boolean;\r\n /** Contains properties of the participant. */\r\n readonly properties: PropertyCollection;\r\n}\r\n\r\nexport class Participant implements IParticipant {\r\n private privAvatar: string;\r\n private privDisplayName: string;\r\n private privId: string;\r\n private privIsHost: boolean;\r\n private privIsMuted: boolean;\r\n private privIsUsingTts: boolean;\r\n private privPreferredLanguage: string;\r\n private privVoice: string;\r\n private privProperties: PropertyCollection;\r\n\r\n public constructor(id: string, avatar: string, displayName: string, isHost: boolean, isMuted: boolean, isUsingTts: boolean, preferredLanguage: string, voice?: string) {\r\n this.privId = id;\r\n this.privAvatar = avatar;\r\n this.privDisplayName = displayName;\r\n this.privIsHost = isHost;\r\n this.privIsMuted = isMuted;\r\n this.privIsUsingTts = isUsingTts;\r\n this.privPreferredLanguage = preferredLanguage;\r\n this.privVoice = voice;\r\n this.privProperties = new PropertyCollection();\r\n }\r\n\r\n public get avatar(): string {\r\n return this.privAvatar;\r\n }\r\n\r\n public get displayName(): string {\r\n return this.privDisplayName;\r\n }\r\n\r\n public get id(): string {\r\n return this.privId;\r\n }\r\n\r\n public get preferredLanguage(): string {\r\n return this.privPreferredLanguage;\r\n }\r\n\r\n public get isHost(): boolean {\r\n return this.privIsHost;\r\n }\r\n\r\n public get isMuted(): boolean {\r\n return this.privIsMuted;\r\n }\r\n\r\n public get isUsingTts(): boolean {\r\n return this.privIsUsingTts;\r\n }\r\n\r\n public get voice(): string {\r\n return this.privVoice;\r\n }\r\n\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n public static From(id: string, language: string, voice: string): IParticipant {\r\n return new Participant(id, \"\", id, false, false, false, language, voice);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {\r\n ConversationConnectionConfig,\r\n ConversationManager,\r\n ConversationReceivedTranslationEventArgs,\r\n ConversationRecognizer,\r\n ConversationTranslatorCommandTypes,\r\n ConversationTranslatorMessageTypes,\r\n IInternalConversation,\r\n IInternalParticipant,\r\n InternalParticipants,\r\n MuteAllEventArgs,\r\n ParticipantAttributeEventArgs,\r\n ParticipantEventArgs,\r\n ParticipantsListEventArgs,\r\n TranscriberRecognizer\r\n} from \"../../common.speech/Exports.js\";\r\nimport {\r\n IDisposable,\r\n IErrorMessages,\r\n marshalPromiseToCallbacks\r\n} from \"../../common/Exports.js\";\r\nimport { Contracts } from \"../Contracts.js\";\r\nimport {\r\n ConnectionEventArgs,\r\n ConversationExpirationEventArgs,\r\n ConversationParticipantsChangedEventArgs,\r\n ConversationTranslationCanceledEventArgs,\r\n ConversationTranslationEventArgs,\r\n ConversationTranslator,\r\n Participant,\r\n ParticipantChangedReason,\r\n PropertyCollection,\r\n PropertyId,\r\n SpeechTranslationConfig,\r\n} from \"../Exports.js\";\r\nimport { SpeechTranslationConfigImpl } from \"../SpeechTranslationConfig.js\";\r\nimport { Callback, MeetingInfo, MeetingProperties, IMeeting } from \"./IMeeting.js\";\r\nimport { IParticipant, IUser, TranscriptionParticipant } from \"./IParticipant.js\";\r\n\r\nexport abstract class Meeting implements IMeeting {\r\n\r\n protected constructor() {\r\n return;\r\n }\r\n\r\n public abstract get authorizationToken(): string;\r\n\r\n public abstract get config(): SpeechTranslationConfig;\r\n\r\n public abstract get meetingId(): string;\r\n public abstract get meetingInfo(): MeetingInfo;\r\n public abstract get properties(): PropertyCollection;\r\n public abstract get speechRecognitionLanguage(): string;\r\n public abstract get participants(): Participant[];\r\n public abstract set authorizationToken(value: string);\r\n public abstract get isConnected(): boolean;\r\n\r\n /**\r\n * Create a meeting\r\n * @param speechConfig\r\n * @param meetingId\r\n * @param cb\r\n * @param err\r\n */\r\n public static createMeetingAsync(speechConfig: SpeechTranslationConfig, meetingId: string, arg3?: Callback, arg4?: Callback): Meeting {\r\n Contracts.throwIfNullOrUndefined(speechConfig, ConversationConnectionConfig.restErrors.invalidArgs.replace(\"{arg}\", \"config\"));\r\n Contracts.throwIfNullOrUndefined(speechConfig.region, ConversationConnectionConfig.restErrors.invalidArgs.replace(\"{arg}\", \"SpeechServiceConnection_Region\"));\r\n Contracts.throwIfNull(meetingId, \"meetingId\");\r\n if (meetingId.length === 0) {\r\n throw new Error(\"meetingId cannot be empty\");\r\n }\r\n if (!speechConfig.subscriptionKey && !speechConfig.getProperty(PropertyId[PropertyId.SpeechServiceAuthorization_Token])) {\r\n Contracts.throwIfNullOrUndefined(speechConfig.subscriptionKey, ConversationConnectionConfig.restErrors.invalidArgs.replace(\"{arg}\", \"SpeechServiceConnection_Key\"));\r\n }\r\n const meetingImpl = new MeetingImpl(speechConfig, meetingId);\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n marshalPromiseToCallbacks((async (): Promise => {})(), arg3, arg4);\r\n return meetingImpl;\r\n }\r\n\r\n /** Start a meeting. */\r\n public abstract startMeetingAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /** Delete a meeting. After this no one will be able to join the meeting. */\r\n public abstract deleteMeetingAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /** End a meeting. */\r\n public abstract endMeetingAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /** Lock a meeting. This will prevent new participants from joining. */\r\n public abstract lockMeetingAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /** Add Participant to Meeting. */\r\n public abstract addParticipantAsync(participant: IParticipant, cb?: Callback, err?: Callback): void;\r\n\r\n /**\r\n * Mute all other participants in the Meeting. After this no other participants will\r\n * have their speech recognitions broadcast, nor be able to send text messages.\r\n */\r\n public abstract muteAllParticipantsAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /**\r\n * Mute a participant.\r\n * @param userId A user identifier\r\n */\r\n public abstract muteParticipantAsync(userId: string, cb?: Callback, err?: Callback): void;\r\n\r\n /**\r\n * Remove a participant from a meeting using the user id, Participant or User object\r\n * @param userId A user identifier\r\n */\r\n public abstract removeParticipantAsync(userId: string | IParticipant | IUser, cb?: Callback, err?: Callback): void;\r\n\r\n /** Unlocks a meeting. */\r\n public abstract unlockMeetingAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /** Unmute all other participants in the meeting. */\r\n public abstract unmuteAllParticipantsAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /**\r\n * Unmute a participant.\r\n * @param userId A user identifier\r\n */\r\n public abstract unmuteParticipantAsync(userId: string, cb?: Callback, err?: Callback): void;\r\n}\r\n\r\nexport class MeetingImpl extends Meeting implements IDisposable {\r\n\r\n private privConfig: SpeechTranslationConfig;\r\n private privProperties: PropertyCollection;\r\n private privLanguage: string;\r\n private privToken: string;\r\n private privIsDisposed: boolean;\r\n private privRoom: IInternalConversation;\r\n private privManager: ConversationManager;\r\n private privConversationRecognizer: ConversationRecognizer;\r\n private privIsConnected: boolean;\r\n private privParticipants: InternalParticipants;\r\n private privIsReady: boolean;\r\n private privConversationTranslator: ConversationTranslator;\r\n private privTranscriberRecognizer: TranscriberRecognizer;\r\n private privErrors: IErrorMessages = ConversationConnectionConfig.restErrors;\r\n private privConversationId: string;\r\n private readonly privTextMessageMaxLength: number;\r\n\r\n /**\r\n * Create a Meeting impl\r\n * @param speechConfig\r\n * @param {string} id - optional conversationId\r\n */\r\n public constructor(speechConfig: SpeechTranslationConfig, id: string) {\r\n super();\r\n this.privIsConnected = false;\r\n this.privIsDisposed = false;\r\n this.privConversationId = \"\";\r\n this.privProperties = new PropertyCollection();\r\n this.privManager = new ConversationManager();\r\n\r\n // check the speech language\r\n const language: string = speechConfig.getProperty(PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n if (!language) {\r\n speechConfig.setProperty(PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage], ConversationConnectionConfig.defaultLanguageCode);\r\n }\r\n this.privLanguage = speechConfig.getProperty(PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n this.privConversationId = id;\r\n\r\n // save the speech config for future usage\r\n this.privConfig = speechConfig;\r\n\r\n // save the config properties\r\n const configImpl = speechConfig as SpeechTranslationConfigImpl;\r\n Contracts.throwIfNull(configImpl, \"speechConfig\");\r\n this.privProperties = configImpl.properties.clone();\r\n this.privIsConnected = false;\r\n this.privParticipants = new InternalParticipants();\r\n this.privIsReady = false;\r\n this.privTextMessageMaxLength = 1000;\r\n }\r\n\r\n // get the internal data about a conversation\r\n public get room(): IInternalConversation {\r\n return this.privRoom;\r\n }\r\n\r\n // get the wrapper for connecting to the websockets\r\n public get connection(): ConversationRecognizer {\r\n return this.privConversationRecognizer; // this.privConnection;\r\n }\r\n\r\n // get the config\r\n public get config(): SpeechTranslationConfig {\r\n return this.privConfig;\r\n }\r\n\r\n // get the meeting Id\r\n public get meetingId(): string {\r\n return this.privRoom ? this.privRoom.roomId : this.privConversationId;\r\n }\r\n\r\n // get the properties\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n // get the speech language\r\n public get speechRecognitionLanguage(): string {\r\n return this.privLanguage;\r\n }\r\n\r\n public get isMutedByHost(): boolean {\r\n return this.privParticipants.me?.isHost ? false : this.privParticipants.me?.isMuted;\r\n }\r\n\r\n public get isConnected(): boolean {\r\n return this.privIsConnected && this.privIsReady;\r\n }\r\n\r\n public get participants(): Participant[] {\r\n return this.toParticipants(true);\r\n }\r\n\r\n public get me(): Participant {\r\n return this.toParticipant(this.privParticipants.me);\r\n }\r\n\r\n public get host(): Participant {\r\n return this.toParticipant(this.privParticipants.host);\r\n }\r\n\r\n public get transcriberRecognizer(): TranscriberRecognizer {\r\n return this.privTranscriberRecognizer;\r\n }\r\n\r\n public get meetingInfo(): MeetingInfo {\r\n const convId: string = this.meetingId;\r\n const p: TranscriptionParticipant[] = this.participants.map((part: Participant): TranscriptionParticipant => (\r\n {\r\n id: part.id,\r\n preferredLanguage: part.preferredLanguage,\r\n voice: part.voice\r\n }\r\n ));\r\n const props: MeetingProperties = {};\r\n for (const key of ConversationConnectionConfig.transcriptionEventKeys) {\r\n const val: string = this.properties.getProperty(key, \"\");\r\n if (val !== \"\") {\r\n props[key] = val;\r\n }\r\n }\r\n const info: MeetingInfo = { id: convId, participants: p, meetingProperties: props };\r\n return info;\r\n }\r\n\r\n private get canSend(): boolean {\r\n return this.privIsConnected && !this.privParticipants.me?.isMuted;\r\n }\r\n\r\n private get canSendAsHost(): boolean {\r\n return this.privIsConnected && this.privParticipants.me?.isHost;\r\n }\r\n\r\n // get / set the speech auth token\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n public get authorizationToken(): string {\r\n return this.privToken;\r\n }\r\n\r\n public set authorizationToken(value: string) {\r\n Contracts.throwIfNullOrWhitespace(value, \"authorizationToken\");\r\n this.privToken = value;\r\n }\r\n\r\n /**\r\n * Create a new meeting as Host\r\n * @param cb\r\n * @param err\r\n */\r\n public createMeetingAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n if (!!this.privConversationRecognizer) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedStart), err);\r\n }\r\n this.privManager.createOrJoin(this.privProperties, undefined,\r\n ((room: IInternalConversation): void => {\r\n if (!room) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConnect), err);\r\n }\r\n this.privRoom = room;\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Starts a new meeting as host.\r\n * @param cb\r\n * @param err\r\n */\r\n public startMeetingAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n // check if there is already a recognizer\r\n if (!!this.privConversationRecognizer) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedStart), err);\r\n }\r\n // check if there is conversation data available\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedConnect);\r\n // connect to the conversation websocket\r\n this.privParticipants.meId = this.privRoom.participantId;\r\n\r\n // Because ConversationTranslator manually sets up and manages the connection, Conversation\r\n // has to forward serviceRecognizer connection events that usually get passed automatically\r\n this.privConversationRecognizer.connected = this.onConnected;\r\n this.privConversationRecognizer.disconnected = this.onDisconnected;\r\n this.privConversationRecognizer.canceled = this.onCanceled;\r\n\r\n this.privConversationRecognizer.participantUpdateCommandReceived = this.onParticipantUpdateCommandReceived;\r\n this.privConversationRecognizer.lockRoomCommandReceived = this.onLockRoomCommandReceived;\r\n this.privConversationRecognizer.muteAllCommandReceived = this.onMuteAllCommandReceived;\r\n this.privConversationRecognizer.participantJoinCommandReceived = this.onParticipantJoinCommandReceived;\r\n this.privConversationRecognizer.participantLeaveCommandReceived = this.onParticipantLeaveCommandReceived;\r\n this.privConversationRecognizer.translationReceived = this.onTranslationReceived;\r\n this.privConversationRecognizer.participantsListReceived = this.onParticipantsListReceived;\r\n this.privConversationRecognizer.conversationExpiration = this.onConversationExpiration;\r\n\r\n this.privConversationRecognizer.connect(this.privRoom.token,\r\n ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Join a meeting as a participant.\r\n * @param { IParticipant } participant - participant to add\r\n * @param cb\r\n * @param err\r\n */\r\n public addParticipantAsync(participant: IParticipant, cb?: Callback, err?: Callback): void {\r\n Contracts.throwIfNullOrUndefined(participant, \"Participant\");\r\n marshalPromiseToCallbacks(this.addParticipantImplAsync(participant), cb, err);\r\n }\r\n\r\n /**\r\n * Join a meeting as a participant.\r\n * @param meeting\r\n * @param nickname\r\n * @param lang\r\n * @param cb\r\n * @param err\r\n */\r\n public joinMeetingAsync(meetingId: string, nickname: string, lang: string, cb?: Callback, err?: Callback): void {\r\n try {\r\n // TODO\r\n // if (!!this.privConversationRecognizer) {\r\n // throw new Error(this.privErrors.permissionDeniedStart);\r\n // }\r\n Contracts.throwIfNullOrWhitespace(meetingId, this.privErrors.invalidArgs.replace(\"{arg}\", \"conversationId\"));\r\n Contracts.throwIfNullOrWhitespace(nickname, this.privErrors.invalidArgs.replace(\"{arg}\", \"nickname\"));\r\n Contracts.throwIfNullOrWhitespace(lang, this.privErrors.invalidArgs.replace(\"{arg}\", \"language\"));\r\n // join the conversation\r\n this.privManager.createOrJoin(this.privProperties, meetingId,\r\n ((room: IInternalConversation): void => {\r\n Contracts.throwIfNullOrUndefined(room, this.privErrors.permissionDeniedConnect);\r\n this.privRoom = room;\r\n this.privConfig.authorizationToken = room.cognitiveSpeechAuthToken;\r\n // join callback\r\n if (!!cb) {\r\n cb(room.cognitiveSpeechAuthToken);\r\n }\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Deletes a meeting\r\n * @param cb\r\n * @param err\r\n */\r\n public deleteMeetingAsync(cb?: Callback, err?: Callback): void {\r\n marshalPromiseToCallbacks(this.deleteMeetingImplAsync(), cb, err);\r\n }\r\n\r\n public async deleteMeetingImplAsync(): Promise {\r\n Contracts.throwIfNullOrUndefined(this.privProperties, this.privErrors.permissionDeniedConnect);\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.token, this.privErrors.permissionDeniedConnect);\r\n await this.privManager.leave(this.privProperties, this.privRoom.token);\r\n\r\n this.dispose();\r\n }\r\n\r\n /**\r\n * Issues a request to close the client websockets\r\n * @param cb\r\n * @param err\r\n */\r\n public endMeetingAsync(cb?: Callback, err?: Callback): void {\r\n marshalPromiseToCallbacks(this.endMeetingImplAsync(), cb, err);\r\n }\r\n\r\n public endMeetingImplAsync(): Promise {\r\n return this.close(true);\r\n }\r\n\r\n /**\r\n * Issues a request to lock the conversation\r\n * @param cb\r\n * @param err\r\n */\r\n public lockMeetingAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSendAsHost) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"lock\")), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getLockCommand(true),\r\n ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to mute the meeting\r\n * @param cb\r\n * @param err\r\n */\r\n public muteAllParticipantsAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrUndefined(this.privConversationRecognizer, this.privErrors.permissionDeniedSend);\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n // check the user's permissions\r\n if (!this.canSendAsHost) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"mute\")), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getMuteAllCommand(true),\r\n ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to mute a participant in the meeting\r\n * @param userId\r\n * @param cb\r\n * @param err\r\n */\r\n public muteParticipantAsync(userId: string, cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrWhitespace(userId, this.privErrors.invalidArgs.replace(\"{arg}\", \"userId\"));\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n // check the connection is open (host + participant can perform the mute command)\r\n if (!this.canSend) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n // if not host, check the participant is not muting another participant\r\n if (!this.me.isHost && this.me.id !== userId) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedParticipant.replace(\"{command}\", \"mute\")), err);\r\n }\r\n // check the user exists\r\n const exists: number = this.privParticipants.getParticipantIndex(userId);\r\n if (exists === -1) {\r\n this.handleError(new Error(this.privErrors.invalidParticipantRequest), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getMuteCommand(userId, true), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to remove a participant from the conversation\r\n * @param userId\r\n * @param cb\r\n * @param err\r\n */\r\n public removeParticipantAsync(userId: string | IParticipant | IUser, cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n if (!!this.privTranscriberRecognizer && userId.hasOwnProperty(\"id\")) {\r\n // Assume this is a transcription participant\r\n marshalPromiseToCallbacks(this.removeParticipantImplAsync(userId as IParticipant), cb, err);\r\n } else {\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSendAsHost) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedParticipant.replace(\"{command}\", \"remove\")), err);\r\n }\r\n let participantId = \"\";\r\n if (typeof userId === \"string\") {\r\n participantId = userId;\r\n } else if (userId.hasOwnProperty(\"id\")) {\r\n const participant: IParticipant = userId as IParticipant;\r\n participantId = participant.id;\r\n } else if (userId.hasOwnProperty(\"userId\")) {\r\n const user: IUser = userId as IUser;\r\n participantId = user.userId;\r\n }\r\n Contracts.throwIfNullOrWhitespace(participantId, this.privErrors.invalidArgs.replace(\"{arg}\", \"userId\"));\r\n // check the participant exists\r\n const index: number = this.participants.findIndex((p: Participant): boolean => p.id === participantId);\r\n if (index === -1) {\r\n this.handleError(new Error(this.privErrors.invalidParticipantRequest), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getEjectCommand(participantId), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to unlock the meeting\r\n * @param cb\r\n * @param err\r\n */\r\n public unlockMeetingAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSendAsHost) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"unlock\")), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getLockCommand(false), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to unmute all participants in the meeting\r\n * @param cb\r\n * @param err\r\n */\r\n public unmuteAllParticipantsAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSendAsHost) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"unmute all\")), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getMuteAllCommand(false), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to unmute a participant in the meeting\r\n * @param userId\r\n * @param cb\r\n * @param err\r\n */\r\n public unmuteParticipantAsync(userId: string, cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrWhitespace(userId, this.privErrors.invalidArgs.replace(\"{arg}\", \"userId\"));\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n // check the connection is open (host + participant can perform the mute command)\r\n if (!this.canSend) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n // if not host, check the participant is not muting another participant\r\n if (!this.me.isHost && this.me.id !== userId) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedParticipant.replace(\"{command}\", \"mute\")), err);\r\n }\r\n // check the user exists\r\n const exists: number = this.privParticipants.getParticipantIndex(userId);\r\n if (exists === -1) {\r\n this.handleError(new Error(this.privErrors.invalidParticipantRequest), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getMuteCommand(userId, false), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Send a text message\r\n * @param message\r\n * @param cb\r\n * @param err\r\n */\r\n public sendTextMessageAsync(message: string, cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrWhitespace(message, this.privErrors.invalidArgs.replace(\"{arg}\", \"message\"));\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSend) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n // TODO: is a max length check required?\r\n if (message.length > this.privTextMessageMaxLength) {\r\n this.handleError(new Error(this.privErrors.invalidArgs.replace(\"{arg}\", \"message length\")), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getMessageCommand(message), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Set translated to languages\r\n * @param {string[]} languages - languages to translate to\r\n * @param cb\r\n * @param err\r\n */\r\n public setTranslatedLanguagesAsync(languages: string[], cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfArrayEmptyOrWhitespace(languages, this.privErrors.invalidArgs.replace(\"{arg}\", \"languages\"));\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSend) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getSetTranslateToLanguagesCommand(languages),\r\n ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Change nickname\r\n * @param {string} nickname - new nickname for the room\r\n * @param cb\r\n * @param err\r\n */\r\n public changeNicknameAsync(nickname: string, cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrWhitespace(nickname, this.privErrors.invalidArgs.replace(\"{arg}\", \"nickname\"));\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSend) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getChangeNicknameCommand(nickname),\r\n ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privIsDisposed;\r\n }\r\n\r\n public dispose(): void {\r\n if (this.isDisposed) {\r\n return;\r\n }\r\n this.privIsDisposed = true;\r\n if (!!this.config) {\r\n this.config.close();\r\n }\r\n this.privConfig = undefined;\r\n this.privLanguage = undefined;\r\n this.privProperties = undefined;\r\n this.privRoom = undefined;\r\n this.privToken = undefined;\r\n this.privManager = undefined;\r\n this.privIsConnected = false;\r\n this.privIsReady = false;\r\n this.privParticipants = undefined;\r\n }\r\n\r\n public async connectTranscriberRecognizer(recognizer: TranscriberRecognizer): Promise {\r\n if (!!this.privTranscriberRecognizer) {\r\n await this.privTranscriberRecognizer.close();\r\n }\r\n await recognizer.enforceAudioGating();\r\n this.privTranscriberRecognizer = recognizer;\r\n this.privTranscriberRecognizer.meeting = this;\r\n }\r\n\r\n public getKeepAlive(): string {\r\n const nickname: string = (!!this.me) ? this.me.displayName : \"default_nickname\";\r\n return JSON.stringify({\r\n id: \"0\",\r\n nickname,\r\n participantId: this.privRoom.participantId,\r\n roomId: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.keepAlive\r\n });\r\n }\r\n\r\n /** websocket callbacks */\r\n /* eslint-disable @typescript-eslint/typedef */\r\n private onConnected = (e: ConnectionEventArgs): void => {\r\n this.privIsConnected = true;\r\n try {\r\n if (!!this.privConversationTranslator?.sessionStarted) {\r\n this.privConversationTranslator.sessionStarted(this.privConversationTranslator, e);\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onDisconnected = (e: ConnectionEventArgs): void => {\r\n try {\r\n if (!!this.privConversationTranslator?.sessionStopped) {\r\n this.privConversationTranslator.sessionStopped(this.privConversationTranslator, e);\r\n }\r\n } catch (e) {\r\n //\r\n } finally {\r\n void this.close(false);\r\n }\r\n };\r\n\r\n private onCanceled = (r: ConversationRecognizer, e: ConversationTranslationCanceledEventArgs): void => {\r\n try {\r\n if (!!this.privConversationTranslator?.canceled) {\r\n this.privConversationTranslator.canceled(this.privConversationTranslator, e);\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onParticipantUpdateCommandReceived = (r: ConversationRecognizer, e: ParticipantAttributeEventArgs): void => {\r\n try {\r\n const updatedParticipant: IInternalParticipant = this.privParticipants.getParticipant(e.id);\r\n if (updatedParticipant !== undefined) {\r\n\r\n switch (e.key) {\r\n case ConversationTranslatorCommandTypes.changeNickname:\r\n updatedParticipant.displayName = e.value as string;\r\n break;\r\n case ConversationTranslatorCommandTypes.setUseTTS:\r\n updatedParticipant.isUsingTts = e.value as boolean;\r\n break;\r\n case ConversationTranslatorCommandTypes.setProfanityFiltering:\r\n updatedParticipant.profanity = e.value as boolean;\r\n break;\r\n case ConversationTranslatorCommandTypes.setMute:\r\n updatedParticipant.isMuted = e.value as boolean;\r\n break;\r\n case ConversationTranslatorCommandTypes.setTranslateToLanguages:\r\n updatedParticipant.translateToLanguages = e.value as string[];\r\n break;\r\n }\r\n this.privParticipants.addOrUpdateParticipant(updatedParticipant);\r\n\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.participantsChanged(\r\n this.privConversationTranslator,\r\n new ConversationParticipantsChangedEventArgs(ParticipantChangedReason.Updated,\r\n [this.toParticipant(updatedParticipant)], e.sessionId));\r\n }\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onLockRoomCommandReceived = (): void => {\r\n // TODO\r\n };\r\n\r\n private onMuteAllCommandReceived = (r: ConversationRecognizer, e: MuteAllEventArgs): void => {\r\n try {\r\n this.privParticipants.participants.forEach((p: IInternalParticipant): boolean => p.isMuted = (p.isHost ? false : e.isMuted));\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.participantsChanged(\r\n this.privConversationTranslator,\r\n new ConversationParticipantsChangedEventArgs(ParticipantChangedReason.Updated,\r\n this.toParticipants(false), e.sessionId));\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onParticipantJoinCommandReceived = (r: ConversationRecognizer, e: ParticipantEventArgs): void => {\r\n try {\r\n const newParticipant: IInternalParticipant = this.privParticipants.addOrUpdateParticipant(e.participant);\r\n if (newParticipant !== undefined) {\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.participantsChanged(\r\n this.privConversationTranslator,\r\n new ConversationParticipantsChangedEventArgs(ParticipantChangedReason.JoinedConversation,\r\n [this.toParticipant(newParticipant)], e.sessionId));\r\n }\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onParticipantLeaveCommandReceived = (r: ConversationRecognizer, e: ParticipantEventArgs): void => {\r\n try {\r\n const ejectedParticipant: IInternalParticipant = this.privParticipants.getParticipant(e.participant.id);\r\n if (ejectedParticipant !== undefined) {\r\n // remove the participant from the internal participants list\r\n this.privParticipants.deleteParticipant(e.participant.id);\r\n if (!!this.privConversationTranslator) {\r\n // notify subscribers that the participant has left the conversation\r\n this.privConversationTranslator.participantsChanged(\r\n this.privConversationTranslator,\r\n new ConversationParticipantsChangedEventArgs(ParticipantChangedReason.LeftConversation,\r\n [this.toParticipant(ejectedParticipant)], e.sessionId));\r\n }\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onTranslationReceived = (r: ConversationRecognizer, e: ConversationReceivedTranslationEventArgs): void => {\r\n try {\r\n switch (e.command) {\r\n case ConversationTranslatorMessageTypes.final:\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.transcribed(\r\n this.privConversationTranslator,\r\n new ConversationTranslationEventArgs(e.payload, undefined, e.sessionId));\r\n }\r\n break;\r\n case ConversationTranslatorMessageTypes.partial:\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.transcribing(\r\n this.privConversationTranslator,\r\n new ConversationTranslationEventArgs(e.payload, undefined, e.sessionId));\r\n }\r\n break;\r\n case ConversationTranslatorMessageTypes.instantMessage:\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.textMessageReceived(\r\n this.privConversationTranslator,\r\n new ConversationTranslationEventArgs(e.payload, undefined, e.sessionId));\r\n }\r\n break;\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onParticipantsListReceived = (r: ConversationRecognizer, e: ParticipantsListEventArgs): void => {\r\n try {\r\n // check if the session token needs to be updated\r\n if (e.sessionToken !== undefined && e.sessionToken !== null) {\r\n this.privRoom.token = e.sessionToken;\r\n }\r\n // save the participants\r\n this.privParticipants.participants = [...e.participants];\r\n // enable the conversation\r\n if (this.privParticipants.me !== undefined) {\r\n this.privIsReady = true;\r\n }\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.participantsChanged(\r\n this.privConversationTranslator,\r\n new ConversationParticipantsChangedEventArgs(ParticipantChangedReason.JoinedConversation, this.toParticipants(true), e.sessionId));\r\n }\r\n // if this is the host, update the nickname if needed\r\n if (this.me.isHost) {\r\n const nickname: string = this.privConversationTranslator?.properties.getProperty(PropertyId.ConversationTranslator_Name);\r\n if (nickname !== undefined && nickname.length > 0 && nickname !== this.me.displayName) {\r\n // issue a change nickname request\r\n this.changeNicknameAsync(nickname);\r\n }\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onConversationExpiration = (r: ConversationRecognizer, e: ConversationExpirationEventArgs): void => {\r\n try {\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.conversationExpiration(this.privConversationTranslator, e);\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n /* eslint-enable @typescript-eslint/typedef */\r\n\r\n private addParticipantImplAsync(participant: IParticipant): Promise {\r\n const newParticipant: IInternalParticipant = this.privParticipants.addOrUpdateParticipant(participant);\r\n if (newParticipant !== undefined) {\r\n if (!!this.privTranscriberRecognizer) {\r\n const meetingInfo = this.meetingInfo;\r\n meetingInfo.participants = [participant];\r\n return this.privTranscriberRecognizer.pushMeetingEvent(meetingInfo, \"join\");\r\n }\r\n }\r\n }\r\n\r\n private removeParticipantImplAsync(participant: IParticipant): Promise {\r\n this.privParticipants.deleteParticipant(participant.id);\r\n const meetingInfo = this.meetingInfo;\r\n meetingInfo.participants = [participant];\r\n return this.privTranscriberRecognizer.pushMeetingEvent(meetingInfo, \"leave\");\r\n }\r\n\r\n private async close(dispose: boolean): Promise {\r\n try {\r\n this.privIsConnected = false;\r\n await this.privConversationRecognizer?.close();\r\n this.privConversationRecognizer = undefined;\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.dispose();\r\n }\r\n } catch (e) {\r\n // ignore error\r\n throw e;\r\n }\r\n if (dispose) {\r\n this.dispose();\r\n }\r\n }\r\n\r\n /** Helpers */\r\n private handleCallback(cb: () => void, err: (message: string) => void): void {\r\n if (!!cb) {\r\n try {\r\n cb();\r\n } catch (e) {\r\n if (!!err) {\r\n err(e as string);\r\n }\r\n }\r\n cb = undefined;\r\n }\r\n }\r\n\r\n private handleError(error: any, err: (message: string) => void): void {\r\n if (!!err) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n\r\n } else {\r\n err(error as string);\r\n }\r\n }\r\n }\r\n\r\n /** Participant Helpers */\r\n private toParticipants(includeHost: boolean): Participant[] {\r\n\r\n const participants: Participant[] = this.privParticipants.participants.map((p: IInternalParticipant): Participant => ( this.toParticipant(p) ) );\r\n if (!includeHost) {\r\n return participants.filter((p: Participant): boolean => p.isHost === false);\r\n } else {\r\n return participants;\r\n }\r\n }\r\n\r\n private toParticipant(p: IInternalParticipant): Participant {\r\n return new Participant(p.id, p.avatar, p.displayName, p.isHost, p.isMuted, p.isUsingTts, p.preferredLanguage, p.voice);\r\n }\r\n\r\n private getMuteAllCommand(isMuted: boolean): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"meetingd\");\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.setMuteAll,\r\n participantId: this.privRoom.participantId, // the id of the host\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n value: isMuted\r\n });\r\n }\r\n\r\n private getMuteCommand(participantId: string, isMuted: boolean): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"conversationId\");\r\n Contracts.throwIfNullOrWhitespace(participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.setMute,\r\n // eslint-disable-next-line object-shorthand\r\n participantId: participantId,\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n value: isMuted\r\n });\r\n }\r\n\r\n private getLockCommand(isLocked: boolean): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"meetingId\");\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.setLockState,\r\n participantId: this.privRoom.participantId,\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n value: isLocked\r\n });\r\n }\r\n\r\n private getEjectCommand(participantId: string): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"meetingId\");\r\n Contracts.throwIfNullOrWhitespace(participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.ejectParticipant,\r\n // eslint-disable-next-line object-shorthand\r\n participantId: participantId,\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n });\r\n }\r\n\r\n private getSetTranslateToLanguagesCommand(languages: string[]): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"meetingId\");\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.setTranslateToLanguages,\r\n participantId: this.privRoom.participantId, // the id of the host\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n value: languages\r\n });\r\n }\r\n\r\n private getChangeNicknameCommand(nickname: string): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"meetingId\");\r\n Contracts.throwIfNullOrWhitespace(nickname, \"nickname\");\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.changeNickname,\r\n nickname,\r\n participantId: this.privRoom.participantId, // the id of the host\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n value: nickname\r\n });\r\n }\r\n\r\n private getMessageCommand(message: string): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"meetingId\");\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\r\n Contracts.throwIfNullOrWhitespace(message, \"message\");\r\n\r\n return JSON.stringify({\r\n participantId: this.privRoom.participantId,\r\n roomId: this.privRoom.roomId,\r\n text: message,\r\n type: ConversationTranslatorMessageTypes.instantMessage\r\n });\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { TranscriberRecognizer } from \"../../common.speech/Exports.js\";\r\nimport { marshalPromiseToCallbacks } from \"../../common/Exports.js\";\r\nimport { Contracts } from \"../Contracts.js\";\r\nimport {\r\n AudioConfig,\r\n CancellationEventArgs,\r\n Connection,\r\n MeetingTranscriptionEventArgs,\r\n PropertyCollection,\r\n PropertyId,\r\n SessionEventArgs\r\n} from \"../Exports.js\";\r\nimport {\r\n MeetingHandler,\r\n MeetingImpl,\r\n MeetingTranscriptionHandler\r\n} from \"./Exports.js\";\r\nimport { Callback, IMeeting } from \"./IMeeting.js\";\r\n\r\nexport class MeetingTranscriber implements MeetingTranscriptionHandler {\r\n\r\n /**\r\n * The event canceled signals that an error occurred during the meeting.\r\n * @member MeetingTranscriber.prototype.MeetingCanceled\r\n * @function\r\n * @public\r\n */\r\n public MeetingCanceled: (sender: MeetingHandler, event: CancellationEventArgs) => void;\r\n\r\n /**\r\n * The event canceled signals that an error occurred during transcription.\r\n * @member MeetingTranscriber.prototype.canceled\r\n * @function\r\n * @public\r\n */\r\n public canceled: (sender: MeetingHandler, event: CancellationEventArgs) => void;\r\n\r\n /**\r\n * The event recognized signals that a final meeting transcription result is received.\r\n * @member MeetingTranscriber.prototype.transcribed\r\n * @function\r\n * @public\r\n */\r\n public transcribed: (sender: MeetingTranscriptionHandler, event: MeetingTranscriptionEventArgs) => void;\r\n\r\n /**\r\n * The event recognizing signals that an intermediate meeting transcription result is received.\r\n * @member MeetingTranscriber.prototype.transcribing\r\n * @function\r\n * @public\r\n */\r\n public transcribing: (sender: MeetingTranscriptionHandler, event: MeetingTranscriptionEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for session started events.\r\n * @member MeetingTranscriber.prototype.sessionStarted\r\n * @function\r\n * @public\r\n */\r\n public sessionStarted: (sender: MeetingHandler, event: SessionEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for session stopped events.\r\n * @member MeetingTranscriber.prototype.sessionStopped\r\n * @function\r\n * @public\r\n */\r\n public sessionStopped: (sender: MeetingHandler, event: SessionEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for meeting started events.\r\n * @member MeetingTranscriber.prototype.MeetingStarted\r\n * @function\r\n * @public\r\n */\r\n public MeetingStarted: (sender: MeetingHandler, event: SessionEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for meeting stopped events.\r\n * @member MeetingTranscriber.prototype.MeetingStopped\r\n * @function\r\n * @public\r\n */\r\n public meetingStopped: (sender: MeetingHandler, event: SessionEventArgs) => void;\r\n\r\n protected privAudioConfig: AudioConfig;\r\n private privDisposedRecognizer: boolean;\r\n private privRecognizer: TranscriberRecognizer;\r\n private privProperties: PropertyCollection;\r\n\r\n /**\r\n * MeetingTranscriber constructor.\r\n * @constructor\r\n * @param {AudioConfig} audioConfig - An optional audio configuration associated with the recognizer\r\n */\r\n public constructor(audioConfig?: AudioConfig) {\r\n this.privAudioConfig = audioConfig;\r\n this.privProperties = new PropertyCollection();\r\n this.privRecognizer = undefined;\r\n this.privDisposedRecognizer = false;\r\n }\r\n\r\n /**\r\n * Gets the spoken language of recognition.\r\n * @member MeetingTranscriber.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @returns {string} The spoken language of recognition.\r\n */\r\n public get speechRecognitionLanguage(): string {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage);\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this MeetingTranscriber.\r\n * @member MeetingTranscriber.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their values defined for this MeetingTranscriber.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * @Internal\r\n * Internal data member to support fromRecognizer* pattern methods on other classes.\r\n * Do not use externally, object returned will change without warning or notice.\r\n */\r\n public get internalData(): object {\r\n return this.privRecognizer.internalData;\r\n }\r\n\r\n /**\r\n * @Deprecated\r\n * @Obsolete\r\n * Please use the Connection.fromRecognizer pattern to obtain a connection object\r\n */\r\n public get connection(): Connection {\r\n return Connection.fromRecognizer(this.privRecognizer);\r\n }\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member MeetingTranscriber.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token used to communicate with the service.\r\n * @member MeetingTranscriber.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} token - Authorization token.\r\n */\r\n public set authorizationToken(token: string) {\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, token);\r\n }\r\n\r\n /**\r\n * @param {Meeting} meeting - meeting to be recognized\r\n */\r\n public joinMeetingAsync(meeting: IMeeting, cb?: Callback, err?: Callback): void {\r\n /* eslint-disable no-console */\r\n // console.log(\">> MeetingTranscriber::joinMeetingAsync\");\r\n /* eslint-enable no-console */\r\n const meetingImpl = meeting as MeetingImpl;\r\n Contracts.throwIfNullOrUndefined(MeetingImpl, \"Meeting\");\r\n\r\n // ref the meeting object\r\n // create recognizer and subscribe to recognizer events\r\n this.privRecognizer = new TranscriberRecognizer(meeting.config, this.privAudioConfig);\r\n Contracts.throwIfNullOrUndefined(this.privRecognizer, \"Recognizer\");\r\n this.privRecognizer.connectMeetingCallbacks(this);\r\n\r\n marshalPromiseToCallbacks(meetingImpl.connectTranscriberRecognizer(this.privRecognizer), cb, err);\r\n }\r\n\r\n /**\r\n * Starts meeting transcription, until stopTranscribingAsync() is called.\r\n * User must subscribe to events to receive transcription results.\r\n * @member MeetingTranscriber.prototype.startTranscribingAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the transcription has started.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public startTranscribingAsync(cb?: Callback, err?: Callback): void {\r\n this.privRecognizer.startContinuousRecognitionAsync(cb, err);\r\n }\r\n\r\n /**\r\n * Starts meeting transcription, until stopTranscribingAsync() is called.\r\n * User must subscribe to events to receive transcription results.\r\n * @member MeetingTranscriber.prototype.stopTranscribingAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the transcription has started.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public stopTranscribingAsync(cb?: Callback, err?: Callback): void {\r\n this.privRecognizer.stopContinuousRecognitionAsync(cb, err);\r\n }\r\n\r\n /**\r\n * Leave the current meeting. After this is called, you will no longer receive any events.\r\n */\r\n public leaveMeetingAsync(cb?: Callback, err?: Callback): void {\r\n this.privRecognizer.disconnectCallbacks();\r\n // eslint-disable-next-line\r\n marshalPromiseToCallbacks((async (): Promise => { return; })(), cb, err);\r\n }\r\n\r\n /**\r\n * closes all external resources held by an instance of this class.\r\n * @member MeetingTranscriber.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, errorCb?: (error: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n marshalPromiseToCallbacks(this.dispose(true), cb, errorCb);\r\n }\r\n\r\n /**\r\n * Disposes any resources held by the object.\r\n * @member MeetingTranscriber.prototype.dispose\r\n * @function\r\n * @public\r\n * @param {boolean} disposing - true if disposing the object.\r\n */\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposedRecognizer) {\r\n return;\r\n }\r\n if (!!this.privRecognizer) {\r\n await this.privRecognizer.close();\r\n this.privRecognizer = undefined;\r\n }\r\n if (disposing) {\r\n this.privDisposedRecognizer = true;\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\nimport { CancellationEventArgsBase } from \"../CancellationEventArgsBase.js\";\r\n\r\nexport class MeetingTranscriptionCanceledEventArgs extends CancellationEventArgsBase {\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\nexport enum ParticipantChangedReason {\r\n /** Participant has joined the conversation. */\r\n JoinedConversation,\r\n\r\n /** Participant has left the conversation. This could be voluntary, or involuntary\r\n * (e.g. they are experiencing networking issues).\r\n */\r\n LeftConversation,\r\n\r\n /** The participants' state has changed (e.g. they became muted, changed their nickname). */\r\n Updated\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { CancellationErrorCode, CancellationReason, TranslationRecognitionResult } from \"./Exports.js\";\r\n\r\n/**\r\n * Define payload of speech recognition canceled result events.\r\n * @class TranslationRecognitionCanceledEventArgs\r\n */\r\nexport class TranslationRecognitionCanceledEventArgs {\r\n private privResult: TranslationRecognitionResult;\r\n private privSessionId: string;\r\n private privCancelReason: CancellationReason;\r\n private privErrorDetails: string;\r\n private privErrorCode: CancellationErrorCode;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} sessionid - The session id.\r\n * @param {CancellationReason} cancellationReason - The cancellation reason.\r\n * @param {string} errorDetails - Error details, if provided.\r\n * @param {TranslationRecognitionResult} result - The result.\r\n */\r\n public constructor(\r\n sessionid: string,\r\n cancellationReason: CancellationReason,\r\n errorDetails: string,\r\n errorCode: CancellationErrorCode,\r\n result: TranslationRecognitionResult) {\r\n this.privCancelReason = cancellationReason;\r\n this.privErrorDetails = errorDetails;\r\n this.privResult = result;\r\n this.privSessionId = sessionid;\r\n this.privErrorCode = errorCode;\r\n }\r\n\r\n /**\r\n * Specifies the recognition result.\r\n * @member TranslationRecognitionCanceledEventArgs.prototype.result\r\n * @function\r\n * @public\r\n * @returns {TranslationRecognitionResult} the recognition result.\r\n */\r\n public get result(): TranslationRecognitionResult {\r\n return this.privResult;\r\n }\r\n\r\n /**\r\n * Specifies the session identifier.\r\n * @member TranslationRecognitionCanceledEventArgs.prototype.sessionId\r\n * @function\r\n * @public\r\n * @returns {string} the session identifier.\r\n */\r\n public get sessionId(): string {\r\n return this.privSessionId;\r\n }\r\n\r\n /**\r\n * The reason the recognition was canceled.\r\n * @member TranslationRecognitionCanceledEventArgs.prototype.reason\r\n * @function\r\n * @public\r\n * @returns {CancellationReason} Specifies the reason canceled.\r\n */\r\n public get reason(): CancellationReason {\r\n return this.privCancelReason;\r\n }\r\n\r\n /**\r\n * The error code in case of an unsuccessful recognition.\r\n * Added in version 1.1.0.\r\n * @return An error code that represents the error reason.\r\n */\r\n public get errorCode(): CancellationErrorCode {\r\n return this.privErrorCode;\r\n }\r\n\r\n /**\r\n * In case of an unsuccessful recognition, provides details of the occurred error.\r\n * @member TranslationRecognitionCanceledEventArgs.prototype.errorDetails\r\n * @function\r\n * @public\r\n * @returns {string} A String that represents the error details.\r\n */\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { RecognitionEventArgs, TranslationRecognitionResult } from \"./Exports.js\";\r\n\r\n/**\r\n * Translation text result event arguments.\r\n * @class TranslationRecognitionEventArgs\r\n */\r\nexport class TranslationRecognitionEventArgs extends RecognitionEventArgs {\r\n private privResult: TranslationRecognitionResult;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {TranslationRecognitionResult} result - The translation recognition result.\r\n * @param {number} offset - The offset.\r\n * @param {string} sessionId - The session id.\r\n */\r\n public constructor(result: TranslationRecognitionResult, offset?: number, sessionId?: string) {\r\n super(offset, sessionId);\r\n\r\n this.privResult = result;\r\n }\r\n\r\n /**\r\n * Specifies the recognition result.\r\n * @member TranslationRecognitionEventArgs.prototype.result\r\n * @function\r\n * @public\r\n * @returns {TranslationRecognitionResult} the recognition result.\r\n */\r\n public get result(): TranslationRecognitionResult {\r\n return this.privResult;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection, ResultReason, SpeechRecognitionResult, Translations } from \"./Exports.js\";\r\n\r\n/**\r\n * Translation text result.\r\n * @class TranslationRecognitionResult\r\n */\r\nexport class TranslationRecognitionResult extends SpeechRecognitionResult {\r\n private privTranslations: Translations;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {Translations} translations - The translations.\r\n * @param {string} resultId - The result id.\r\n * @param {ResultReason} reason - The reason.\r\n * @param {string} text - The recognized text.\r\n * @param {number} duration - The duration.\r\n * @param {number} offset - The offset into the stream.\r\n * @param {string} language - Primary Language detected, if provided.\r\n * @param {string} languageDetectionConfidence - Primary Language confidence (\"Unknown,\" \"Low,\" \"Medium,\" \"High\"...), if provided.\r\n * @param {string} errorDetails - Error details, if provided.\r\n * @param {string} json - Additional Json, if provided.\r\n * @param {PropertyCollection} properties - Additional properties, if provided.\r\n */\r\n public constructor(translations: Translations, resultId?: string, reason?: ResultReason,\r\n text?: string, duration?: number, offset?: number, language?: string,\r\n languageDetectionConfidence?: string, errorDetails?: string,\r\n json?: string, properties?: PropertyCollection) {\r\n super(resultId, reason, text, duration, offset, language, languageDetectionConfidence, undefined, errorDetails, json, properties);\r\n\r\n this.privTranslations = translations;\r\n }\r\n\r\n public static fromSpeechRecognitionResult(result: SpeechRecognitionResult): TranslationRecognitionResult {\r\n return new TranslationRecognitionResult(undefined, result.resultId, result.reason, result.text, result.duration, result.offset, result.language, result.languageDetectionConfidence, result.errorDetails, result.json, result.properties);\r\n }\r\n\r\n /**\r\n * Presents the translation results. Each item in the dictionary represents\r\n * a translation result in one of target languages, where the key is the name\r\n * of the target language, in BCP-47 format, and the value is the translation\r\n * text in the specified language.\r\n * @member TranslationRecognitionResult.prototype.translations\r\n * @function\r\n * @public\r\n * @returns {Translations} the current translation map that holds all translations requested.\r\n */\r\n public get translations(): Translations {\r\n return this.privTranslations;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n IAuthentication,\r\n IConnectionFactory,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeechServiceConfig,\r\n TranslationConnectionFactory,\r\n TranslationServiceRecognizer\r\n} from \"../common.speech/Exports.js\";\r\nimport { marshalPromiseToCallbacks } from \"../common/Exports.js\";\r\nimport { AudioConfigImpl } from \"./Audio/AudioConfig.js\";\r\nimport { Connection } from \"./Connection.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport {\r\n AudioConfig,\r\n AutoDetectSourceLanguageConfig,\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer,\r\n TranslationRecognitionCanceledEventArgs,\r\n TranslationRecognitionEventArgs,\r\n TranslationRecognitionResult,\r\n TranslationSynthesisEventArgs\r\n} from \"./Exports.js\";\r\nimport { SpeechTranslationConfig, SpeechTranslationConfigImpl } from \"./SpeechTranslationConfig.js\";\r\n\r\n/**\r\n * Translation recognizer\r\n * @class TranslationRecognizer\r\n */\r\nexport class TranslationRecognizer extends Recognizer {\r\n /**\r\n * The event recognizing signals that an intermediate recognition result is received.\r\n * @member TranslationRecognizer.prototype.recognizing\r\n * @function\r\n * @public\r\n */\r\n public recognizing: (sender: TranslationRecognizer, event: TranslationRecognitionEventArgs) => void;\r\n\r\n /**\r\n * The event recognized signals that a final recognition result is received.\r\n * @member TranslationRecognizer.prototype.recognized\r\n * @function\r\n * @public\r\n */\r\n public recognized: (sender: TranslationRecognizer, event: TranslationRecognitionEventArgs) => void;\r\n\r\n /**\r\n * The event canceled signals that an error occurred during recognition.\r\n * @member TranslationRecognizer.prototype.canceled\r\n * @function\r\n * @public\r\n */\r\n public canceled: (sender: TranslationRecognizer, event: TranslationRecognitionCanceledEventArgs) => void;\r\n\r\n /**\r\n * The event synthesizing signals that a translation synthesis result is received.\r\n * @member TranslationRecognizer.prototype.synthesizing\r\n * @function\r\n * @public\r\n */\r\n public synthesizing: (sender: TranslationRecognizer, event: TranslationSynthesisEventArgs) => void;\r\n\r\n private privDisposedTranslationRecognizer: boolean;\r\n\r\n /**\r\n * Initializes an instance of the TranslationRecognizer.\r\n * @constructor\r\n * @param {SpeechTranslationConfig} speechConfig - Set of properties to configure this recognizer.\r\n * @param {AudioConfig} audioConfig - An optional audio config associated with the recognizer\r\n * @param {IConnectionFactory} connectionFactory - An optional connection factory to use to generate the endpoint URIs, headers to set, etc...\r\n */\r\n public constructor(speechConfig: SpeechTranslationConfig, audioConfig?: AudioConfig, connectionFactory?: IConnectionFactory) {\r\n const configImpl = speechConfig as SpeechTranslationConfigImpl;\r\n Contracts.throwIfNull(configImpl, \"speechConfig\");\r\n\r\n super(audioConfig, configImpl.properties, connectionFactory || new TranslationConnectionFactory());\r\n\r\n this.privDisposedTranslationRecognizer = false;\r\n\r\n if (this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationVoice, undefined) !== undefined) {\r\n Contracts.throwIfNullOrWhitespace(\r\n this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationVoice),\r\n PropertyId[PropertyId.SpeechServiceConnection_TranslationVoice]);\r\n }\r\n\r\n Contracts.throwIfNullOrWhitespace(\r\n this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages),\r\n PropertyId[PropertyId.SpeechServiceConnection_TranslationToLanguages]);\r\n\r\n Contracts.throwIfNullOrWhitespace(this.properties.getProperty(\r\n PropertyId.SpeechServiceConnection_RecoLanguage),\r\n PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n\r\n }\r\n\r\n /**\r\n * TranslationRecognizer constructor.\r\n * @constructor\r\n * @param {SpeechTranslationConfig} speechTranslationConfig - an set of initial properties for this recognizer\r\n * @param {AutoDetectSourceLanguageConfig} autoDetectSourceLanguageConfig - An source language detection configuration associated with the recognizer\r\n * @param {AudioConfig} audioConfig - An optional audio configuration associated with the recognizer\r\n */\r\n public static FromConfig(speechTranslationConfig: SpeechTranslationConfig, autoDetectSourceLanguageConfig: AutoDetectSourceLanguageConfig, audioConfig?: AudioConfig): TranslationRecognizer {\r\n const speechTranslationConfigImpl: SpeechTranslationConfigImpl = speechTranslationConfig as SpeechTranslationConfigImpl;\r\n autoDetectSourceLanguageConfig.properties.mergeTo(speechTranslationConfigImpl.properties);\r\n return new TranslationRecognizer(speechTranslationConfig, audioConfig);\r\n }\r\n\r\n /**\r\n * Gets the language name that was set when the recognizer was created.\r\n * @member TranslationRecognizer.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @returns {string} Gets the language name that was set when the recognizer was created.\r\n */\r\n public get speechRecognitionLanguage(): string {\r\n Contracts.throwIfDisposed(this.privDisposedTranslationRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage);\r\n }\r\n\r\n /**\r\n * Gets target languages for translation that were set when the recognizer was created.\r\n * The language is specified in BCP-47 format. The translation will provide translated text for each of language.\r\n * @member TranslationRecognizer.prototype.targetLanguages\r\n * @function\r\n * @public\r\n * @returns {string[]} Gets target languages for translation that were set when the recognizer was created.\r\n */\r\n public get targetLanguages(): string[] {\r\n Contracts.throwIfDisposed(this.privDisposedTranslationRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages).split(\",\");\r\n }\r\n\r\n /**\r\n * Gets the name of output voice.\r\n * @member TranslationRecognizer.prototype.voiceName\r\n * @function\r\n * @public\r\n * @returns {string} the name of output voice.\r\n */\r\n public get voiceName(): string {\r\n Contracts.throwIfDisposed(this.privDisposedTranslationRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationVoice, undefined);\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this TranslationRecognizer.\r\n * @member TranslationRecognizer.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their values defined for this TranslationRecognizer.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member TranslationRecognizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token used to communicate with the service.\r\n * @member TranslationRecognizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} value - Authorization token.\r\n */\r\n public set authorizationToken(value: string) {\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, value);\r\n }\r\n\r\n /**\r\n * Starts recognition and translation, and stops after the first utterance is recognized.\r\n * The task returns the translation text as result.\r\n * Note: recognizeOnceAsync returns when the first utterance has been recognized, so it is suitable only\r\n * for single shot recognition like command or query. For long-running recognition,\r\n * use startContinuousRecognitionAsync() instead.\r\n * @member TranslationRecognizer.prototype.recognizeOnceAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback that received the result when the translation has completed.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public recognizeOnceAsync(cb?: (e: TranslationRecognitionResult) => void, err?: (e: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposedTranslationRecognizer);\r\n marshalPromiseToCallbacks(this.recognizeOnceAsyncImpl(RecognitionMode.Interactive), cb, err);\r\n }\r\n\r\n /**\r\n * Starts recognition and translation, until stopContinuousRecognitionAsync() is called.\r\n * User must subscribe to events to receive translation results.\r\n * @member TranslationRecognizer.prototype.startContinuousRecognitionAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback that received the translation has started.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public startContinuousRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.startContinuousRecognitionAsyncImpl(RecognitionMode.Conversation), cb, err);\r\n }\r\n\r\n /**\r\n * Stops continuous recognition and translation.\r\n * @member TranslationRecognizer.prototype.stopContinuousRecognitionAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback that received the translation has stopped.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public stopContinuousRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.stopContinuousRecognitionAsyncImpl(), cb, err);\r\n }\r\n\r\n /**\r\n * dynamically remove a language from list of target language\r\n * (can be used while recognition is ongoing)\r\n * @member TranslationRecognizer.prototype.removeTargetLanguage\r\n * @function\r\n * @param lang - language to be removed\r\n * @public\r\n */\r\n public removeTargetLanguage(lang: string): void {\r\n Contracts.throwIfNullOrUndefined(lang, \"language to be removed\");\r\n if (this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages, undefined) !== undefined) {\r\n const languages: string[] = this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages).split(\",\");\r\n const index: number = languages.indexOf(lang);\r\n if (index > -1) {\r\n languages.splice(index, 1);\r\n this.properties.setProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages, languages.join(\",\"));\r\n this.updateLanguages(languages);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * dynamically add a language to list of target language\r\n * (can be used while recognition is ongoing)\r\n * @member TranslationRecognizer.prototype.addTargetLanguage\r\n * @function\r\n * @param lang - language to be added\r\n * @public\r\n */\r\n public addTargetLanguage(lang: string): void {\r\n Contracts.throwIfNullOrUndefined(lang, \"language to be added\");\r\n let languages: string[] = [];\r\n if (this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages, undefined) !== undefined) {\r\n languages = this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages).split(\",\");\r\n if (!languages.includes(lang)) {\r\n languages.push(lang);\r\n this.properties.setProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages, languages.join(\",\"));\r\n }\r\n } else {\r\n this.properties.setProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages, lang);\r\n languages = [lang];\r\n }\r\n this.updateLanguages(languages);\r\n }\r\n\r\n /**\r\n * closes all external resources held by an instance of this class.\r\n * @member TranslationRecognizer.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, errorCb?: (error: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposedTranslationRecognizer);\r\n marshalPromiseToCallbacks(this.dispose(true), cb, errorCb);\r\n }\r\n\r\n /**\r\n * handles ConnectionEstablishedEvent for conversation translation scenarios.\r\n * @member TranslationRecognizer.prototype.onConnection\r\n * @function\r\n * @public\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n public onConnection(): void { }\r\n\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposedTranslationRecognizer) {\r\n return;\r\n }\r\n\r\n this.privDisposedTranslationRecognizer = true;\r\n\r\n if (disposing) {\r\n await this.implRecognizerStop();\r\n await super.dispose(disposing);\r\n }\r\n }\r\n\r\n\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(speechConfig, this.privProperties);\r\n }\r\n\r\n protected createServiceRecognizer(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioConfig: AudioConfig,\r\n recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n\r\n const configImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n\r\n return new TranslationServiceRecognizer(authentication, connectionFactory, configImpl, recognizerConfig, this);\r\n }\r\n\r\n private updateLanguages(languages: string[]): void {\r\n const conn: Connection = Connection.fromRecognizer(this);\r\n if (!!conn) {\r\n conn.setMessageProperty(\"speech.context\", \"translationcontext\", {to: languages});\r\n conn.sendMessageAsync(\"event\", JSON.stringify({\r\n id: \"translation\",\r\n name: \"updateLanguage\",\r\n to: languages\r\n }));\r\n }\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { SessionEventArgs, TranslationSynthesisResult } from \"./Exports.js\";\r\n\r\n/**\r\n * Translation Synthesis event arguments\r\n * @class TranslationSynthesisEventArgs\r\n */\r\nexport class TranslationSynthesisEventArgs extends SessionEventArgs {\r\n private privResult: TranslationSynthesisResult;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {TranslationSynthesisResult} result - The translation synthesis result.\r\n * @param {string} sessionId - The session id.\r\n */\r\n public constructor(result: TranslationSynthesisResult, sessionId?: string) {\r\n super(sessionId);\r\n\r\n this.privResult = result;\r\n }\r\n\r\n /**\r\n * Specifies the translation synthesis result.\r\n * @member TranslationSynthesisEventArgs.prototype.result\r\n * @function\r\n * @public\r\n * @returns {TranslationSynthesisResult} Specifies the translation synthesis result.\r\n */\r\n public get result(): TranslationSynthesisResult {\r\n return this.privResult;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ResultReason } from \"./ResultReason.js\";\r\n\r\n/**\r\n * Defines translation synthesis result, i.e. the voice output of the translated\r\n * text in the target language.\r\n * @class TranslationSynthesisResult\r\n */\r\nexport class TranslationSynthesisResult {\r\n private privReason: ResultReason;\r\n private privAudio: ArrayBuffer;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {ResultReason} reason - The synthesis reason.\r\n * @param {ArrayBuffer} audio - The audio data.\r\n */\r\n public constructor(reason: ResultReason, audio: ArrayBuffer) {\r\n this.privReason = reason;\r\n this.privAudio = audio;\r\n }\r\n\r\n /**\r\n * Translated text in the target language.\r\n * @member TranslationSynthesisResult.prototype.audio\r\n * @function\r\n * @public\r\n * @returns {ArrayBuffer} Translated audio in the target language.\r\n */\r\n public get audio(): ArrayBuffer {\r\n return this.privAudio;\r\n }\r\n\r\n /**\r\n * The synthesis status.\r\n * @member TranslationSynthesisResult.prototype.reason\r\n * @function\r\n * @public\r\n * @returns {ResultReason} The synthesis status.\r\n */\r\n public get reason(): ResultReason {\r\n return this.privReason;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection } from \"./Exports.js\";\r\n\r\n/**\r\n * Represents collection of parameters and their values.\r\n * @class Translations\r\n */\r\nexport class Translations {\r\n // Use an PropertyCollection internally, just wrapping it to hide the | enum syntax it has.\r\n private privMap: PropertyCollection = new PropertyCollection();\r\n\r\n /**\r\n * Get the languages in the object in a String array.\r\n * @member Translations.prototype.languages\r\n * @function\r\n * @public\r\n * @returns {string[]} languages in translations object.\r\n */\r\n public get languages(): string[] {\r\n return this.privMap.keys;\r\n }\r\n\r\n /**\r\n * Returns the parameter value in type String. The parameter must have the same type as String.\r\n * Currently only String, int and bool are allowed.\r\n * If the name is not available, the specified defaultValue is returned.\r\n * @member Translations.prototype.get\r\n * @function\r\n * @public\r\n * @param {string} key - The parameter name.\r\n * @param {string} def - The default value which is returned if the parameter is not available in the collection.\r\n * @returns {string} value of the parameter.\r\n */\r\n public get(key: string, def?: string): string {\r\n return this.privMap.getProperty(key, def);\r\n }\r\n\r\n /**\r\n * Sets the String value of the parameter specified by name.\r\n * @member Translations.prototype.set\r\n * @function\r\n * @public\r\n * @param {string} key - The parameter name.\r\n * @param {string} value - The value of the parameter.\r\n */\r\n public set(key: string, value: string): void {\r\n this.privMap.setProperty(key, value);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ITurnStatusResponsePayload,\r\n TurnStatusResponsePayload\r\n } from \"../common.speech/ServiceMessages/TurnStatusPayload.js\";\r\n\r\n/**\r\n * Defines contents of received message/events.\r\n * @class TurnStatusReceivedEventArgs\r\n */\r\nexport class TurnStatusReceivedEventArgs {\r\n private privTurnStatus: ITurnStatusResponsePayload;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} turnStatus - The JSON-encoded turn status message.\r\n */\r\n public constructor(turnStatus: string) {\r\n this.privTurnStatus = TurnStatusResponsePayload.fromJSON(turnStatus);\r\n }\r\n\r\n /**\r\n * Gets the interaction identifier associated with this turn status event.\r\n * @member TurnStatusReceivedEventArgs.prototype.interactionId\r\n * @function\r\n * @public\r\n * @returns {any} the received interaction id.\r\n */\r\n public get interactionId(): any {\r\n return this.privTurnStatus.interactionId;\r\n }\r\n\r\n /**\r\n * Gets the conversation identifier associated with this turn status event.\r\n * @member TurnStatusReceivedEventArgs.prototype.conversationId\r\n * @function\r\n * @public\r\n * @returns {any} the received conversation id.\r\n */\r\n public get conversationId(): any {\r\n return this.privTurnStatus.conversationId;\r\n }\r\n\r\n /**\r\n * Gets the received turn status code.\r\n * @member TurnStatusReceivedEventArgs.prototype.statusCode\r\n * @function\r\n * @public\r\n * @returns {number} the received turn status.\r\n */\r\n public get statusCode(): number {\r\n return this.privTurnStatus.statusCode; // eslint-disable-line @typescript-eslint/no-unsafe-return\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IVoiceJson } from \"./IVoiceJson\";\r\n\r\n/**\r\n * Defines the gender of synthesis voices.\r\n * Added in version 1.20.0.\r\n */\r\nexport enum SynthesisVoiceGender {\r\n\r\n /** Gender unknown */\r\n Unknown,\r\n\r\n /** Female voice */\r\n Female,\r\n\r\n /** Male voice */\r\n Male,\r\n\r\n /** Neutral voice */\r\n Neutral\r\n}\r\n\r\nexport enum SynthesisVoiceType {\r\n OnlineNeural = 1,\r\n OnlineStandard = 2,\r\n OfflineNeural = 3,\r\n OfflineStandard = 4,\r\n}\r\n\r\nconst GENDER_LOOKUP: Record = {\r\n [SynthesisVoiceGender[SynthesisVoiceGender.Neutral]]: SynthesisVoiceGender.Neutral,\r\n [SynthesisVoiceGender[SynthesisVoiceGender.Male]]: SynthesisVoiceGender.Male,\r\n [SynthesisVoiceGender[SynthesisVoiceGender.Female]]: SynthesisVoiceGender.Female,\r\n};\r\n\r\n/**\r\n * Information about Speech Synthesis voice\r\n * Added in version 1.20.0.\r\n * @class VoiceInfo\r\n */\r\nexport class VoiceInfo {\r\n private privName: IVoiceJson[\"Name\"];\r\n private privLocale: IVoiceJson[\"Locale\"];\r\n private privShortName: IVoiceJson[\"ShortName\"];\r\n private privDisplayName: IVoiceJson[\"DisplayName\"];\r\n private privLocalName: IVoiceJson[\"LocalName\"];\r\n private privLocaleName: IVoiceJson[\"LocaleName\"];\r\n private privGender: SynthesisVoiceGender;\r\n private privVoiceType: SynthesisVoiceType;\r\n private privStyleList: IVoiceJson[\"StyleList\"] = [];\r\n private privSampleRateHertz: IVoiceJson[\"SampleRateHertz\"];\r\n private privStatus: IVoiceJson[\"Status\"];\r\n private privExtendedPropertyMap: IVoiceJson[\"ExtendedPropertyMap\"];\r\n private privWordsPerMinute: IVoiceJson[\"WordsPerMinute\"];\r\n private privSecondaryLocaleList: IVoiceJson[\"SecondaryLocaleList\"];\r\n private privRolePlayList: IVoiceJson[\"RolePlayList\"];\r\n\r\n public constructor(json: IVoiceJson) {\r\n if (!!json) {\r\n this.privName = json.Name;\r\n this.privLocale = json.Locale;\r\n this.privShortName = json.ShortName;\r\n this.privLocaleName = json.LocaleName;\r\n this.privDisplayName = json.DisplayName;\r\n this.privLocalName = json.LocalName;\r\n this.privVoiceType = json.VoiceType.endsWith(\"Standard\") ? SynthesisVoiceType.OnlineStandard : SynthesisVoiceType.OnlineNeural;\r\n this.privGender = GENDER_LOOKUP[json.Gender] || SynthesisVoiceGender.Unknown;\r\n\r\n if (!!json.StyleList && Array.isArray(json.StyleList)) {\r\n for (const style of json.StyleList) {\r\n this.privStyleList.push(style);\r\n }\r\n }\r\n\r\n this.privSampleRateHertz = json.SampleRateHertz;\r\n this.privStatus = json.Status;\r\n\r\n if (json.ExtendedPropertyMap) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n this.privExtendedPropertyMap = json.ExtendedPropertyMap;\r\n }\r\n\r\n this.privWordsPerMinute = json.WordsPerMinute;\r\n\r\n if (Array.isArray(json.SecondaryLocaleList)) {\r\n this.privSecondaryLocaleList = [...json.SecondaryLocaleList];\r\n }\r\n\r\n if (Array.isArray(json.RolePlayList)) {\r\n this.privRolePlayList = [...json.RolePlayList];\r\n }\r\n }\r\n }\r\n\r\n public get name(): IVoiceJson[\"Name\"] {\r\n return this.privName;\r\n }\r\n\r\n public get locale(): IVoiceJson[\"Locale\"] {\r\n return this.privLocale;\r\n }\r\n\r\n public get shortName(): IVoiceJson[\"ShortName\"] {\r\n return this.privShortName;\r\n }\r\n\r\n public get displayName(): IVoiceJson[\"DisplayName\"] {\r\n return this.privDisplayName;\r\n }\r\n\r\n public get localName(): IVoiceJson[\"LocalName\"] {\r\n return this.privLocalName;\r\n }\r\n\r\n public get localeName(): IVoiceJson[\"LocaleName\"] {\r\n return this.privLocaleName;\r\n }\r\n\r\n public get gender(): SynthesisVoiceGender {\r\n return this.privGender;\r\n }\r\n\r\n public get voiceType(): SynthesisVoiceType {\r\n return this.privVoiceType;\r\n }\r\n\r\n public get styleList(): IVoiceJson[\"StyleList\"] {\r\n return this.privStyleList;\r\n }\r\n\r\n public get sampleRateHertz(): IVoiceJson[\"SampleRateHertz\"] {\r\n return this.privSampleRateHertz;\r\n }\r\n\r\n public get status(): IVoiceJson[\"Status\"] {\r\n return this.privStatus;\r\n }\r\n\r\n public get extendedPropertyMap(): IVoiceJson[\"ExtendedPropertyMap\"] {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\r\n return this.privExtendedPropertyMap;\r\n }\r\n\r\n public get wordsPerMinute(): IVoiceJson[\"WordsPerMinute\"] {\r\n return this.privWordsPerMinute;\r\n }\r\n\r\n public get secondaryLocaleList(): IVoiceJson[\"SecondaryLocaleList\"] {\r\n return this.privSecondaryLocaleList;\r\n }\r\n\r\n public get rolePlayList(): IVoiceJson[\"RolePlayList\"] {\r\n return this.privRolePlayList;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { VoiceProfileType } from \"./Exports.js\";\r\n\r\n/**\r\n * Defines Voice Profile class for Speaker Recognition\r\n * @class VoiceProfile\r\n */\r\nexport class VoiceProfile {\r\n private privId: string;\r\n private privProfileType: VoiceProfileType;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} profileId - profileId of this Voice Profile.\r\n * @param {VoiceProfileType} profileType - profileType of this Voice Profile.\r\n */\r\n public constructor(profileId: string, profileType: VoiceProfileType) {\r\n this.privId = profileId;\r\n this.privProfileType = profileType;\r\n }\r\n\r\n /**\r\n * profileId of this Voice Profile instance\r\n * @member VoiceProfile.prototype.profileId\r\n * @function\r\n * @public\r\n * @returns {string} profileId of this Voice Profile instance.\r\n */\r\n public get profileId(): string {\r\n return this.privId;\r\n }\r\n\r\n /**\r\n * profileType of this Voice Profile instance\r\n * @member VoiceProfile.prototype.profileType\r\n * @function\r\n * @public\r\n * @returns {VoiceProfileType} profile type of this Voice Profile instance.\r\n */\r\n public get profileType(): VoiceProfileType {\r\n return this.privProfileType;\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n IRestResponse\r\n} from \"../common.browser/Exports.js\";\r\nimport {\r\n IAuthentication,\r\n IConnectionFactory,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeechServiceConfig,\r\n VoiceProfileConnectionFactory,\r\n VoiceServiceRecognizer\r\n} from \"../common.speech/Exports.js\";\r\nimport { AudioConfig, AudioConfigImpl } from \"./Audio/AudioConfig.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport {\r\n AudioInputStream,\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer,\r\n ResultReason,\r\n VoiceProfile,\r\n VoiceProfileEnrollmentResult,\r\n VoiceProfilePhraseResult,\r\n VoiceProfileResult,\r\n VoiceProfileType\r\n} from \"./Exports.js\";\r\nimport { SpeechConfig, SpeechConfigImpl } from \"./SpeechConfig.js\";\r\n\r\n/**\r\n * Defines VoiceProfileClient class for Speaker Recognition\r\n * Handles operations from user for Voice Profile operations (e.g. createProfile, deleteProfile)\r\n * @class VoiceProfileClient\r\n */\r\nexport class VoiceProfileClient extends Recognizer {\r\n protected privProperties: PropertyCollection;\r\n private privVoiceAdapter: VoiceServiceRecognizer;\r\n private privDisposedVoiceAdapter: boolean;\r\n\r\n /**\r\n * VoiceProfileClient constructor.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - An set of initial properties for this synthesizer (authentication key, region, &c)\r\n */\r\n public constructor(speechConfig: SpeechConfig) {\r\n Contracts.throwIfNullOrUndefined(speechConfig, \"speechConfig\");\r\n const speechConfigImpl: SpeechConfigImpl = speechConfig as SpeechConfigImpl;\r\n Contracts.throwIfNull(speechConfigImpl, \"speechConfig\");\r\n\r\n super(AudioConfig.fromStreamInput(AudioInputStream.createPushStream()), speechConfigImpl.properties, new VoiceProfileConnectionFactory());\r\n\r\n this.privProperties = speechConfigImpl.properties.clone();\r\n this.privVoiceAdapter = this.privReco as VoiceServiceRecognizer;\r\n this.privDisposedVoiceAdapter = false;\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this VoiceProfileClient.\r\n * @member VoiceProfileClient.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their values defined for this VoiceProfileClient.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member VoiceProfileClient.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token used to communicate with the service.\r\n * @member VoiceProfileClient.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} token - Authorization token.\r\n */\r\n public set authorizationToken(token: string) {\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, token);\r\n }\r\n\r\n /**\r\n * Create a speaker recognition voice profile\r\n * @member VoiceProfileClient.prototype.createProfileAsync\r\n * @function\r\n * @public\r\n * @async\r\n * @param {VoiceProfileType} profileType Type of Voice Profile to be created\r\n * @param {string} lang Language string (locale) for Voice Profile\r\n * @return {Promise} - Promise of a VoiceProfile.\r\n */\r\n public async createProfileAsync(profileType: VoiceProfileType, lang: string): Promise {\r\n const profileIds: string[] = await this.privVoiceAdapter.createProfile(profileType, lang);\r\n return new VoiceProfile(profileIds[0], profileType);\r\n }\r\n\r\n /**\r\n * Get current information of a voice profile\r\n * @member VoiceProfileClient.prototype.retrieveEnrollmentResultAsync\r\n * @function\r\n * @public\r\n * @async\r\n * @param {VoiceProfile} profile Voice Profile to retrieve info for\r\n * @return {Promise} - Promise of a VoiceProfileEnrollmentResult.\r\n */\r\n public async retrieveEnrollmentResultAsync(profile: VoiceProfile): Promise {\r\n return this.privVoiceAdapter.retrieveEnrollmentResult(profile);\r\n }\r\n\r\n /**\r\n * Get all voice profiles on account with given voice profile type\r\n * @member VoiceProfileClient.prototype.getAllProfilesAsync\r\n * @function\r\n * @public\r\n * @async\r\n * @param {VoiceProfileType} profileType profile type (identification/verification) for which to list profiles\r\n * @return {Promise} - Promise of an array of VoiceProfileEnrollmentResults.\r\n */\r\n public async getAllProfilesAsync(profileType: VoiceProfileType): Promise {\r\n return this.privVoiceAdapter.getAllProfiles(profileType);\r\n /*\r\n const result: { json: { value: EnrollmentResultJSON[] } } = await this.privAdapter.getProfiles(profileType);\r\n if (profileType === VoiceProfileType.TextIndependentIdentification) {\r\n return VoiceProfileEnrollmentResult.FromIdentificationProfileList(result.json);\r\n }\r\n return VoiceProfileEnrollmentResult.FromVerificationProfileList(result.json);\r\n */\r\n }\r\n\r\n /**\r\n * Get valid authorization phrases for voice profile enrollment\r\n * @member VoiceProfileClient.prototype.getActivationPhrasesAsync\r\n * @function\r\n * @public\r\n * @async\r\n * @param {VoiceProfileType} profileType Profile Type to get activation phrases for\r\n * @param {string} lang Language string (locale) for Voice Profile\r\n */\r\n public async getActivationPhrasesAsync(profileType: VoiceProfileType, lang: string): Promise {\r\n return this.privVoiceAdapter.getActivationPhrases(profileType, lang);\r\n }\r\n\r\n /**\r\n * Create a speaker recognition voice profile\r\n * @member VoiceProfileClient.prototype.enrollProfileAsync\r\n * @function\r\n * @public\r\n * @async\r\n * @param {VoiceProfile} profile Voice Profile to create enrollment for\r\n * @param {AudioConfig} audioConfig source info from which to create enrollment\r\n * @return {Promise} - Promise of a VoiceProfileEnrollmentResult.\r\n */\r\n public async enrollProfileAsync(profile: VoiceProfile, audioConfig: AudioConfig): Promise {\r\n const configImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n Contracts.throwIfNullOrUndefined(configImpl, \"audioConfig\");\r\n this.audioConfig = audioConfig;\r\n this.privVoiceAdapter.SpeakerAudioSource = configImpl;\r\n\r\n return this.privVoiceAdapter.enrollProfile(profile);\r\n }\r\n\r\n /**\r\n * Delete a speaker recognition voice profile\r\n * @member VoiceProfileClient.prototype.deleteProfileAsync\r\n * @function\r\n * @public\r\n * @async\r\n * @param {VoiceProfile} profile Voice Profile to be deleted\r\n * @return {Promise} - Promise of a VoiceProfileResult.\r\n */\r\n public async deleteProfileAsync(profile: VoiceProfile): Promise {\r\n return this.privVoiceAdapter.deleteProfile(profile);\r\n }\r\n\r\n /**\r\n * Remove all enrollments for a speaker recognition voice profile\r\n * @member VoiceProfileClient.prototype.resetProfileAsync\r\n * @function\r\n * @public\r\n * @async\r\n * @param {VoiceProfile} profile Voice Profile to be reset\r\n * @return {Promise} - Promise of a VoiceProfileResult.\r\n */\r\n public async resetProfileAsync(profile: VoiceProfile): Promise {\r\n return this.privVoiceAdapter.resetProfile(profile);\r\n }\r\n\r\n /**\r\n * Clean up object and close underlying connection\r\n * @member VoiceProfileClient.prototype.close\r\n * @function\r\n * @async\r\n * @public\r\n */\r\n public async close(): Promise {\r\n await this.dispose(true);\r\n }\r\n\r\n protected createServiceRecognizer(authentication: IAuthentication, connectionFactory: IConnectionFactory, audioConfig: AudioConfig, recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n const audioImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n return new VoiceServiceRecognizer(authentication, connectionFactory, audioImpl, recognizerConfig, this);\r\n }\r\n\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposedVoiceAdapter) {\r\n return;\r\n }\r\n\r\n this.privDisposedVoiceAdapter = true;\r\n\r\n if (disposing) {\r\n await super.dispose(disposing);\r\n }\r\n }\r\n\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(speechConfig, this.properties);\r\n }\r\n\r\n private getResult(result: IRestResponse, successReason: ResultReason): VoiceProfileResult {\r\n const response: VoiceProfileResult =\r\n new VoiceProfileResult(\r\n result.ok ? successReason : ResultReason.Canceled,\r\n result.statusText\r\n );\r\n return (response);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport { CancellationErrorCodePropertyName } from \"../common.speech/Exports.js\";\r\nimport {\r\n CancellationDetailsBase,\r\n CancellationErrorCode,\r\n CancellationReason,\r\n PropertyCollection,\r\n ResultReason\r\n} from \"./Exports.js\";\r\n\r\nexport interface EnrollmentResultDetails {\r\n profileId: string;\r\n enrollmentsCount: number;\r\n enrollmentsLength: number;\r\n enrollmentsSpeechLength: number;\r\n remainingEnrollmentsCount: number;\r\n remainingEnrollmentsSpeechLength: number;\r\n audioLength: number;\r\n audioSpeechLength: number;\r\n enrollmentStatus: string;\r\n}\r\n\r\nexport interface EnrollmentResultJSON {\r\n profileId: string;\r\n enrollmentsCount: number;\r\n enrollmentsLength: string;\r\n enrollmentsSpeechLength: string;\r\n remainingEnrollmentsCount: number;\r\n remainingEnrollmentsSpeechLength: string;\r\n audioLength: string;\r\n audioSpeechLength: string;\r\n enrollmentStatus: string;\r\n remainingEnrollments?: number;\r\n identificationProfileId?: string;\r\n verificationProfileId?: string;\r\n}\r\n\r\n/**\r\n * Output format\r\n * @class VoiceProfileEnrollmentResult\r\n */\r\nexport class VoiceProfileEnrollmentResult {\r\n private privReason: ResultReason;\r\n private privDetails: EnrollmentResultDetails;\r\n private privProperties: PropertyCollection;\r\n private privErrorDetails: string;\r\n\r\n public constructor(reason: ResultReason, json: string, statusText: string) {\r\n this.privReason = reason;\r\n this.privProperties = new PropertyCollection();\r\n if (this.privReason !== ResultReason.Canceled) {\r\n if (!!json) {\r\n this.privDetails = JSON.parse(json) as EnrollmentResultDetails;\r\n if (this.privDetails.enrollmentStatus.toLowerCase() === \"enrolling\") {\r\n this.privReason = ResultReason.EnrollingVoiceProfile;\r\n }\r\n }\r\n } else {\r\n this.privErrorDetails = statusText;\r\n this.privProperties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[CancellationErrorCode.ServiceError]);\r\n }\r\n }\r\n\r\n public get reason(): ResultReason {\r\n return this.privReason;\r\n }\r\n\r\n public get enrollmentsCount(): number {\r\n return this.privDetails.enrollmentsCount;\r\n }\r\n\r\n public get enrollmentsLength(): number {\r\n return this.privDetails.enrollmentsLength;\r\n }\r\n\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n public get enrollmentResultDetails(): EnrollmentResultDetails {\r\n return this.privDetails;\r\n }\r\n\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n\r\n public static FromIdentificationProfileList(json: { value: EnrollmentResultJSON[] }): VoiceProfileEnrollmentResult[] {\r\n const results: VoiceProfileEnrollmentResult[] = [];\r\n for (const item of json.value) {\r\n const reason: ResultReason = item.enrollmentStatus.toLowerCase() === \"enrolling\" ?\r\n ResultReason.EnrollingVoiceProfile : item.enrollmentStatus.toLowerCase() === \"enrolled\" ?\r\n ResultReason.EnrolledVoiceProfile : ResultReason.Canceled;\r\n const result = new VoiceProfileEnrollmentResult(reason, null, null);\r\n result.privDetails = this.getIdentificationDetails(item) as EnrollmentResultDetails;\r\n results.push(result);\r\n }\r\n return results;\r\n }\r\n\r\n public static FromVerificationProfileList(json: { value: EnrollmentResultJSON[] }): VoiceProfileEnrollmentResult[] {\r\n const results: VoiceProfileEnrollmentResult[] = [];\r\n for (const item of json.value) {\r\n const reason: ResultReason = item.enrollmentStatus.toLowerCase() === \"enrolling\" ?\r\n ResultReason.EnrollingVoiceProfile : item.enrollmentStatus.toLowerCase() === \"enrolled\" ?\r\n ResultReason.EnrolledVoiceProfile : ResultReason.Canceled;\r\n const result = new VoiceProfileEnrollmentResult(reason, null, null);\r\n result.privDetails = this.getVerificationDetails(item) as EnrollmentResultDetails;\r\n results.push(result);\r\n }\r\n return results;\r\n }\r\n\r\n private static getIdentificationDetails(json: EnrollmentResultJSON): unknown {\r\n return {\r\n audioLength: json.audioLength ? parseFloat(json.audioLength) : 0,\r\n audioSpeechLength: json.audioSpeechLength ? parseFloat(json.audioSpeechLength) : 0,\r\n enrollmentStatus: json.enrollmentStatus,\r\n enrollmentsCount: json.enrollmentsCount || 0,\r\n enrollmentsLength: json.enrollmentsLength ? parseFloat(json.enrollmentsLength) : 0,\r\n enrollmentsSpeechLength: json.enrollmentsSpeechLength ? parseFloat(json.enrollmentsSpeechLength) : 0,\r\n profileId: json.profileId || json.identificationProfileId,\r\n remainingEnrollmentsSpeechLength: json.remainingEnrollmentsSpeechLength ? parseFloat(json.remainingEnrollmentsSpeechLength) : 0\r\n };\r\n }\r\n\r\n private static getVerificationDetails(json: EnrollmentResultJSON): unknown {\r\n return {\r\n audioLength: json.audioLength ? parseFloat(json.audioLength) : 0,\r\n audioSpeechLength: json.audioSpeechLength ? parseFloat(json.audioSpeechLength) : 0,\r\n enrollmentStatus: json.enrollmentStatus,\r\n enrollmentsCount: json.enrollmentsCount,\r\n enrollmentsLength: json.enrollmentsLength ? parseFloat(json.enrollmentsLength) : 0,\r\n enrollmentsSpeechLength: json.enrollmentsSpeechLength ? parseFloat(json.enrollmentsSpeechLength) : 0,\r\n profileId: json.profileId || json.verificationProfileId,\r\n remainingEnrollmentsCount: json.remainingEnrollments || json.remainingEnrollmentsCount,\r\n remainingEnrollmentsSpeechLength: json.remainingEnrollmentsSpeechLength ? parseFloat(json.remainingEnrollmentsSpeechLength) : 0\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * @class VoiceProfileEnrollmentCancellationDetails\r\n */\r\nexport class VoiceProfileEnrollmentCancellationDetails extends CancellationDetailsBase {\r\n\r\n private constructor(reason: CancellationReason, errorDetails: string, errorCode: CancellationErrorCode) {\r\n super(reason, errorDetails, errorCode);\r\n }\r\n\r\n /**\r\n * Creates an instance of VoiceProfileEnrollmentCancellationDetails object for the canceled VoiceProfileEnrollmentResult.\r\n * @member VoiceProfileEnrollmentCancellationDetails.fromResult\r\n * @function\r\n * @public\r\n * @param {VoiceProfileEnrollmentResult} result - The result that was canceled.\r\n * @returns {VoiceProfileEnrollmentCancellationDetails} The cancellation details object being created.\r\n */\r\n public static fromResult(result: VoiceProfileEnrollmentResult): VoiceProfileEnrollmentCancellationDetails {\r\n const reason = CancellationReason.Error;\r\n let errorCode: CancellationErrorCode = CancellationErrorCode.NoError;\r\n\r\n if (!!result.properties) {\r\n errorCode = (CancellationErrorCode as any)[result.properties.getProperty(CancellationErrorCodePropertyName, CancellationErrorCode[CancellationErrorCode.NoError])]; //eslint-disable-line\r\n }\r\n\r\n return new VoiceProfileEnrollmentCancellationDetails(reason, result.errorDetails, errorCode);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport {\r\n ResultReason,\r\n VoiceProfileResult\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Output format\r\n * @class VoiceProfilePhraseResult\r\n */\r\nexport class VoiceProfilePhraseResult extends VoiceProfileResult {\r\n private privPhrases: string[] = [];\r\n private privType: string;\r\n\r\n public constructor(reason: ResultReason, statusText: string, type: string, phraseArray: string[]) {\r\n super(reason, statusText);\r\n Contracts.throwIfNullOrUndefined(phraseArray, \"phrase array\");\r\n this.privType = type;\r\n if (!!phraseArray && !!phraseArray[0]) {\r\n this.privPhrases = phraseArray;\r\n }\r\n }\r\n\r\n public get phrases(): string[] {\r\n return this.privPhrases;\r\n }\r\n\r\n public get type(): string {\r\n return this.privType;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport { CancellationErrorCodePropertyName } from \"../common.speech/Exports.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport {\r\n CancellationDetailsBase,\r\n CancellationErrorCode,\r\n CancellationReason,\r\n PropertyCollection,\r\n ResultReason\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Output format\r\n * @class VoiceProfileResult\r\n */\r\nexport class VoiceProfileResult {\r\n private privReason: ResultReason;\r\n private privProperties: PropertyCollection;\r\n private privErrorDetails: string;\r\n\r\n public constructor(reason: ResultReason, statusText: string) {\r\n this.privReason = reason;\r\n this.privProperties = new PropertyCollection();\r\n if (reason === ResultReason.Canceled) {\r\n Contracts.throwIfNullOrUndefined(statusText, \"statusText\");\r\n this.privErrorDetails = statusText;\r\n this.privProperties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[CancellationErrorCode.ServiceError]);\r\n }\r\n }\r\n\r\n public get reason(): ResultReason {\r\n return this.privReason;\r\n }\r\n\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n}\r\n\r\n/**\r\n * @class VoiceProfileCancellationDetails\r\n */\r\nexport class VoiceProfileCancellationDetails extends CancellationDetailsBase {\r\n\r\n private constructor(reason: CancellationReason, errorDetails: string, errorCode: CancellationErrorCode) {\r\n super(reason, errorDetails, errorCode);\r\n }\r\n\r\n /**\r\n * Creates an instance of VoiceProfileCancellationDetails object for the canceled VoiceProfileResult.\r\n * @member VoiceProfileCancellationDetails.fromResult\r\n * @function\r\n * @public\r\n * @param {VoiceProfileResult} result - The result that was canceled.\r\n * @returns {VoiceProfileCancellationDetails} The cancellation details object being created.\r\n */\r\n public static fromResult(result: VoiceProfileResult): VoiceProfileCancellationDetails {\r\n const reason = CancellationReason.Error;\r\n let errorCode: CancellationErrorCode = CancellationErrorCode.NoError;\r\n\r\n if (!!result.properties) {\r\n errorCode = (CancellationErrorCode as any)[result.properties.getProperty(CancellationErrorCodePropertyName, CancellationErrorCode[CancellationErrorCode.NoError])]; //eslint-disable-line\r\n }\r\n\r\n return new VoiceProfileCancellationDetails(reason, result.errorDetails, errorCode);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Output format\r\n * @class VoiceProfileType\r\n */\r\nexport enum VoiceProfileType {\r\n\r\n /**\r\n * Text independent speaker identification\r\n * @member VoiceProfileType.TextIndependentIdentification\r\n */\r\n TextIndependentIdentification,\r\n\r\n /**\r\n * Text dependent speaker verification\r\n * @member VoiceProfileType.TextDependentVerification\r\n */\r\n TextDependentVerification,\r\n\r\n /**\r\n * Text independent speaker verification\r\n * @member VoiceProfileType.TextIndependentVerification\r\n */\r\n TextIndependentVerification,\r\n}\r\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function get() {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function get() {\n return _parse.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function get() {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function get() {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function get() {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function get() {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function get() {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function get() {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function get() {\n return _version.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (let i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n const output = [];\n const length32 = input.length * 32;\n const hexTab = '0123456789abcdef';\n\n for (let i = 0; i < length32; i += 8) {\n const x = input[i >> 5] >>> i % 32 & 0xff;\n const hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n let a = 1732584193;\n let b = -271733879;\n let c = -1732584194;\n let d = 271733878;\n\n for (let i = 0; i < x.length; i += 16) {\n const olda = a;\n const oldb = b;\n const oldc = c;\n const oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n const length8 = input.length * 8;\n const output = new Uint32Array(getOutputLength(length8));\n\n for (let i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n const lsw = (x & 0xffff) + (y & 0xffff);\n const msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nconst randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nvar _default = {\n randomUUID\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\n\nfunction rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (let i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n\n for (let j = 0; j < 16; ++j) {\n arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n\n M[i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nexports.unsafeStringify = unsafeStringify;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nfunction unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.unsafeStringify)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.URL = exports.DNS = void 0;\nexports.default = v35;\n\nvar _stringify = require(\"./stringify.js\");\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _native = _interopRequireDefault(require(\"./native.js\"));\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n if (_native.default.randomUUID && !buf && !options) {\n return _native.default.randomUUID();\n }\n\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.slice(14, 15), 16);\n}\n\nvar _default = version;\nexports.default = _default;","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"bdd11a65\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"thoughts-ui:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkthoughts_ui\"] = self[\"webpackChunkthoughts_ui\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn.apply(null, args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = \"credentials\" in Request.prototype;\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.7.7\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","import axios from 'axios';\r\n\r\nconst API_BASE_URL = 'https://thoughtsweb20241101194435.azurewebsites.net/api';\r\n\r\nexport const fetchCategories = async () => {\r\n try {\r\n const response = await axios.get(`${API_BASE_URL}/Category`);\r\n return response.data;\r\n } catch (error) {\r\n console.error('Error fetching categories:', error);\r\n throw error;\r\n }\r\n};\r\n\r\nexport const analyzeAndSaveMessage = async (content, userId) => {\r\n try {\r\n const response = await axios.post(`${API_BASE_URL}/Message/analyze`, {\r\n content,\r\n userId\r\n });\r\n return response.data;\r\n } catch (error) {\r\n console.error('Error analyzing and saving message:', error);\r\n throw error;\r\n }\r\n};\r\n\r\nexport const createMessage = async (content, categoryId) => {\r\n try {\r\n const response = await axios.post(`${API_BASE_URL}/Message/createMessage`, {\r\n content,\r\n categoryId\r\n });\r\n return response.data;\r\n } catch (error) {\r\n console.error('Error creating message:', error);\r\n throw error;\r\n }\r\n};\r\n\r\nexport const createCategory = async (newCategoryName, userId) => {\r\n try {\r\n const requestBody = {\r\n newCategoryName,\r\n userId\r\n };\r\n const response = await axios.post(`${API_BASE_URL}/Category/createCategory`, requestBody);\r\n return response.data;\r\n } catch (error) {\r\n console.error('Error creating category:', error);\r\n throw error;\r\n }\r\n};\r\n\r\nexport const updateCategory = async (id, updatedCategoryName) => {\r\n try {\r\n const response = await axios.put(`${API_BASE_URL}/Category/updateCategory`, {\r\n id,\r\n updatedCategoryName\r\n });\r\n return response.data;\r\n } catch (error) {\r\n console.error('Error updating category:', error);\r\n throw error;\r\n }\r\n};\r\n\r\nexport const deleteCategory = async (id) => {\r\n try {\r\n await axios.delete(`${API_BASE_URL}/Category/${id}`);\r\n } catch (error) {\r\n console.error('Error deleting category:', error);\r\n throw error;\r\n }\r\n};\r\n\r\nexport const updateMessage = async (id, updatedMessage) => {\r\n try {\r\n const response = await axios.put(`${API_BASE_URL}/Message/${id}`, updatedMessage);\r\n return response.data;\r\n } catch (error) {\r\n console.error('Error updating message:', error);\r\n throw error;\r\n }\r\n};\r\n\r\nexport const deleteMessage = async (id) => {\r\n try {\r\n await axios.delete(`${API_BASE_URL}/Message/${id}`);\r\n } catch (error) {\r\n console.error('Error deleting message:', error);\r\n throw error;\r\n }\r\n};\r\n\r\nexport const fetchMessages = async (userId) => {\r\n try {\r\n const response = await axios.get(`${API_BASE_URL}/Message?userId=${userId}`);\r\n return response.data;\r\n } catch (error) {\r\n console.error('Error fetching messages:', error);\r\n throw error;\r\n }\r\n};\r\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t componentName;\nconst createClassNameGenerator = () => {\n let generate = defaultGenerator;\n return {\n configure(generator) {\n generate = generator;\n },\n generate(componentName) {\n return generate(componentName);\n },\n reset() {\n generate = defaultGenerator;\n }\n };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import ClassNameGenerator from \"../ClassNameGenerator/index.js\";\nexport const globalStateClasses = {\n active: 'active',\n checked: 'checked',\n completed: 'completed',\n disabled: 'disabled',\n error: 'error',\n expanded: 'expanded',\n focused: 'focused',\n focusVisible: 'focusVisible',\n open: 'open',\n readOnly: 'readOnly',\n required: 'required',\n selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n const globalStateClass = globalStateClasses[slot];\n return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n return globalStateClasses[slot] !== undefined;\n}","/* eslint no-restricted-syntax: 0, prefer-template: 0, guard-for-in: 0\n ---\n These rules are preventing the performance optimizations below.\n */\n\nexport default function composeClasses(slots, getUtilityClass, classes = undefined) {\n const output = {};\n for (const slotName in slots) {\n const slot = slots[slotName];\n let buffer = '';\n let start = true;\n for (let i = 0; i < slot.length; i += 1) {\n const value = slot[i];\n if (value) {\n buffer += (start === true ? '' : ' ') + getUtilityClass(value);\n start = false;\n if (classes && classes[value]) {\n buffer += ' ' + classes[value];\n }\n }\n }\n output[slotName] = buffer;\n }\n return output;\n}","/**\n * WARNING: Don't import this directly. It's imported by the code generated by\n * `@mui/interal-babel-plugin-minify-errors`. Make sure to always use string literals in `Error`\n * constructors to ensure the plugin works as expected. Supported patterns include:\n * throw new Error('My message');\n * throw new Error(`My message: ${foo}`);\n * throw new Error(`My message: ${foo}` + 'another string');\n * ...\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code, ...args) {\n const url = new URL(`https://mui.com/production-error/?code=${code}`);\n args.forEach(arg => url.searchParams.append('args[]', arg));\n return `Minified MUI error #${code}; visit ${url} for the full message.`;\n}","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'MUI: `capitalize(string)` expects a string argument.' : _formatMuiErrorMessage(7));\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","/**\n * Add keys, values of `defaultProps` that does not exist in `props`\n * @param defaultProps\n * @param props\n * @returns resolved props\n */\nexport default function resolveProps(defaultProps, props) {\n const output = {\n ...props\n };\n for (const key in defaultProps) {\n if (Object.prototype.hasOwnProperty.call(defaultProps, key)) {\n const propName = key;\n if (propName === 'components' || propName === 'slots') {\n output[propName] = {\n ...defaultProps[propName],\n ...output[propName]\n };\n } else if (propName === 'componentsProps' || propName === 'slotProps') {\n const defaultSlotProps = defaultProps[propName];\n const slotProps = props[propName];\n if (!slotProps) {\n output[propName] = defaultSlotProps || {};\n } else if (!defaultSlotProps) {\n output[propName] = slotProps;\n } else {\n output[propName] = {\n ...slotProps\n };\n for (const slotKey in defaultSlotProps) {\n if (Object.prototype.hasOwnProperty.call(defaultSlotProps, slotKey)) {\n const slotPropName = slotKey;\n output[propName][slotPropName] = resolveProps(defaultSlotProps[slotPropName], slotProps[slotPropName]);\n }\n }\n }\n } else if (output[propName] === undefined) {\n output[propName] = defaultProps[propName];\n }\n }\n }\n return output;\n}","// https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\nexport function isPlainObject(item) {\n if (typeof item !== 'object' || item === null) {\n return false;\n }\n const prototype = Object.getPrototypeOf(item);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in item) && !(Symbol.iterator in item);\n}\nfunction deepClone(source) {\n if (!isPlainObject(source)) {\n return source;\n }\n const output = {};\n Object.keys(source).forEach(key => {\n output[key] = deepClone(source[key]);\n });\n return output;\n}\nexport default function deepmerge(target, source, options = {\n clone: true\n}) {\n const output = options.clone ? {\n ...target\n } : target;\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(key => {\n if (isPlainObject(source[key]) &&\n // Avoid prototype pollution\n Object.prototype.hasOwnProperty.call(target, key) && isPlainObject(target[key])) {\n // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n output[key] = deepmerge(target[key], source[key], options);\n } else if (options.clone) {\n output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n } else {\n output[key] = source[key];\n }\n });\n }\n return output;\n}","// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n const breakpointsAsArray = Object.keys(values).map(key => ({\n key,\n val: values[key]\n })) || [];\n // Sort in ascending order\n breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n return breakpointsAsArray.reduce((acc, obj) => {\n return {\n ...acc,\n [obj.key]: obj.val\n };\n }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n const {\n // The breakpoint **start** at this value.\n // For instance with the first breakpoint xs: [xs, sm).\n values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n },\n unit = 'px',\n step = 5,\n ...other\n } = breakpoints;\n const sortedValues = sortBreakpointsValues(values);\n const keys = Object.keys(sortedValues);\n function up(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (min-width:${value}${unit})`;\n }\n function down(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (max-width:${value - step / 100}${unit})`;\n }\n function between(start, end) {\n const endIndex = keys.indexOf(end);\n return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n }\n function only(key) {\n if (keys.indexOf(key) + 1 < keys.length) {\n return between(key, keys[keys.indexOf(key) + 1]);\n }\n return up(key);\n }\n function not(key) {\n // handle first and last key separately, for better readability\n const keyIndex = keys.indexOf(key);\n if (keyIndex === 0) {\n return up(keys[1]);\n }\n if (keyIndex === keys.length - 1) {\n return down(keys[keyIndex]);\n }\n return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n }\n return {\n keys,\n values: sortedValues,\n up,\n down,\n between,\n only,\n not,\n unit,\n ...other\n };\n}","const shape = {\n borderRadius: 4\n};\nexport default shape;","import PropTypes from 'prop-types';\nimport deepmerge from '@mui/utils/deepmerge';\nimport merge from \"../merge/index.js\";\nimport { isCqShorthand, getContainerQuery } from \"../cssContainerQueries/index.js\";\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n};\nconst defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: key => `@media (min-width:${values[key]}px)`\n};\nconst defaultContainerQueries = {\n containerQueries: containerName => ({\n up: key => {\n let result = typeof key === 'number' ? key : values[key] || key;\n if (typeof result === 'number') {\n result = `${result}px`;\n }\n return containerName ? `@container ${containerName} (min-width:${result})` : `@container (min-width:${result})`;\n }\n })\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n const theme = props.theme || {};\n if (Array.isArray(propValue)) {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return propValue.reduce((acc, item, index) => {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n if (typeof propValue === 'object') {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return Object.keys(propValue).reduce((acc, breakpoint) => {\n if (isCqShorthand(themeBreakpoints.keys, breakpoint)) {\n const containerKey = getContainerQuery(theme.containerQueries ? theme : defaultContainerQueries, breakpoint);\n if (containerKey) {\n acc[containerKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n }\n }\n // key is breakpoint\n else if (Object.keys(themeBreakpoints.values || values).includes(breakpoint)) {\n const mediaKey = themeBreakpoints.up(breakpoint);\n acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n } else {\n const cssKey = breakpoint;\n acc[cssKey] = propValue[cssKey];\n }\n return acc;\n }, {});\n }\n const output = styleFromPropValue(propValue);\n return output;\n}\nfunction breakpoints(styleFunction) {\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const newStyleFunction = props => {\n const theme = props.theme || {};\n const base = styleFunction(props);\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n const extended = themeBreakpoints.keys.reduce((acc, key) => {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction({\n theme,\n ...props[key]\n });\n }\n return acc;\n }, null);\n return merge(base, extended);\n };\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? {\n ...styleFunction.propTypes,\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n } : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n const breakpointsInOrder = breakpointsInput.keys?.reduce((acc, key) => {\n const breakpointStyleKey = breakpointsInput.up(key);\n acc[breakpointStyleKey] = {};\n return acc;\n }, {});\n return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n return breakpointKeys.reduce((acc, key) => {\n const breakpointOutput = acc[key];\n const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n if (isBreakpointUnused) {\n delete acc[key];\n }\n return acc;\n }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n // fixed value\n if (typeof breakpointValues !== 'object') {\n return {};\n }\n const base = {};\n const breakpointsKeys = Object.keys(themeBreakpoints);\n if (Array.isArray(breakpointValues)) {\n breakpointsKeys.forEach((breakpoint, i) => {\n if (i < breakpointValues.length) {\n base[breakpoint] = true;\n }\n });\n } else {\n breakpointsKeys.forEach(breakpoint => {\n if (breakpointValues[breakpoint] != null) {\n base[breakpoint] = true;\n }\n });\n }\n return base;\n}\nexport function resolveBreakpointValues({\n values: breakpointValues,\n breakpoints: themeBreakpoints,\n base: customBase\n}) {\n const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n const keys = Object.keys(base);\n if (keys.length === 0) {\n return breakpointValues;\n }\n let previous;\n return keys.reduce((acc, breakpoint, i) => {\n if (Array.isArray(breakpointValues)) {\n acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n previous = i;\n } else if (typeof breakpointValues === 'object') {\n acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n previous = breakpoint;\n } else {\n acc[breakpoint] = breakpointValues;\n }\n return acc;\n }, {});\n}\nexport default breakpoints;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n/**\n * For using in `sx` prop to sort the breakpoint from low to high.\n * Note: this function does not work and will not support multiple units.\n * e.g. input: { '@container (min-width:300px)': '1rem', '@container (min-width:40rem)': '2rem' }\n * output: { '@container (min-width:40rem)': '2rem', '@container (min-width:300px)': '1rem' } // since 40 < 300 eventhough 40rem > 300px\n */\nexport function sortContainerQueries(theme, css) {\n if (!theme.containerQueries) {\n return css;\n }\n const sorted = Object.keys(css).filter(key => key.startsWith('@container')).sort((a, b) => {\n const regex = /min-width:\\s*([0-9.]+)/;\n return +(a.match(regex)?.[1] || 0) - +(b.match(regex)?.[1] || 0);\n });\n if (!sorted.length) {\n return css;\n }\n return sorted.reduce((acc, key) => {\n const value = css[key];\n delete acc[key];\n acc[key] = value;\n return acc;\n }, {\n ...css\n });\n}\nexport function isCqShorthand(breakpointKeys, value) {\n return value === '@' || value.startsWith('@') && (breakpointKeys.some(key => value.startsWith(`@${key}`)) || !!value.match(/^@\\d/));\n}\nexport function getContainerQuery(theme, shorthand) {\n const matches = shorthand.match(/^@([^/]+)?\\/?(.+)?$/);\n if (!matches) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The provided shorthand ${`(${shorthand})`} is invalid. The format should be \\`@\\` or \\`@/\\`.\\n` + 'For example, `@sm` or `@600` or `@40rem/sidebar`.' : _formatMuiErrorMessage(18, `(${shorthand})`));\n }\n return null;\n }\n const [, containerQuery, containerName] = matches;\n const value = Number.isNaN(+containerQuery) ? containerQuery || 0 : +containerQuery;\n return theme.containerQueries(containerName).up(value);\n}\nexport default function cssContainerQueries(themeInput) {\n const toContainerQuery = (mediaQuery, name) => mediaQuery.replace('@media', name ? `@container ${name}` : '@container');\n function attachCq(node, name) {\n node.up = (...args) => toContainerQuery(themeInput.breakpoints.up(...args), name);\n node.down = (...args) => toContainerQuery(themeInput.breakpoints.down(...args), name);\n node.between = (...args) => toContainerQuery(themeInput.breakpoints.between(...args), name);\n node.only = (...args) => toContainerQuery(themeInput.breakpoints.only(...args), name);\n node.not = (...args) => {\n const result = toContainerQuery(themeInput.breakpoints.not(...args), name);\n if (result.includes('not all and')) {\n // `@container` does not work with `not all and`, so need to invert the logic\n return result.replace('not all and ', '').replace('min-width:', 'width<').replace('max-width:', 'width>').replace('and', 'or');\n }\n return result;\n };\n }\n const node = {};\n const containerQueries = name => {\n attachCq(node, name);\n return node;\n };\n attachCq(containerQueries);\n return {\n ...themeInput,\n containerQueries\n };\n}","import capitalize from '@mui/utils/capitalize';\nimport responsivePropType from \"../responsivePropType/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nexport function getPath(obj, path, checkVars = true) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n\n // Check if CSS variables are used\n if (obj && obj.vars && checkVars) {\n const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n if (val != null) {\n return val;\n }\n }\n return path.split('.').reduce((acc, item) => {\n if (acc && acc[item] != null) {\n return acc[item];\n }\n return null;\n }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n let value;\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || userValue;\n } else {\n value = getPath(themeMapping, propValueFinal) || userValue;\n }\n if (transform) {\n value = transform(value, userValue, themeMapping);\n }\n return value;\n}\nfunction style(options) {\n const {\n prop,\n cssProperty = options.prop,\n themeKey,\n transform\n } = options;\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n if (props[prop] == null) {\n return null;\n }\n const propValue = props[prop];\n const theme = props.theme;\n const themeMapping = getPath(theme, themeKey) || {};\n const styleFromPropValue = propValueFinal => {\n let value = getStyleValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n [prop]: responsivePropType\n } : {};\n fn.filterProps = [prop];\n return fn;\n}\nexport default style;","import deepmerge from '@mui/utils/deepmerge';\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n });\n}\nexport default merge;","import responsivePropType from \"../responsivePropType/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nimport { getPath } from \"../style/index.js\";\nimport merge from \"../merge/index.js\";\nimport memoize from \"../memoize/index.js\";\nconst properties = {\n m: 'margin',\n p: 'padding'\n};\nconst directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nconst aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n const [a, b] = prop.split('');\n const property = properties[a];\n const direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n const themeSpacing = getPath(theme, themeKey, true) ?? defaultValue;\n if (typeof themeSpacing === 'number' || typeof themeSpacing === 'string') {\n return val => {\n if (typeof val === 'string') {\n return val;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (typeof val !== 'number') {\n console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${val}.`);\n }\n }\n if (typeof themeSpacing === 'string') {\n return `calc(${val} * ${themeSpacing})`;\n }\n return themeSpacing * val;\n };\n }\n if (Array.isArray(themeSpacing)) {\n return val => {\n if (typeof val === 'string') {\n return val;\n }\n const abs = Math.abs(val);\n if (process.env.NODE_ENV !== 'production') {\n if (!Number.isInteger(abs)) {\n console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n } else if (abs > themeSpacing.length - 1) {\n console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n }\n }\n const transformed = themeSpacing[abs];\n if (val >= 0) {\n return transformed;\n }\n if (typeof transformed === 'number') {\n return -transformed;\n }\n return `-${transformed}`;\n };\n }\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n if (process.env.NODE_ENV !== 'production') {\n console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n }\n return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n return transformer(propValue);\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n return propValue => cssProperties.reduce((acc, cssProperty) => {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (!keys.includes(prop)) {\n return null;\n }\n const cssProperties = getCssProperties(prop);\n const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n const propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n const transformer = createUnarySpacing(props.theme);\n return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n const cache = {};\n return arg => {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n return cache[arg];\n };\n}","import { createUnarySpacing } from \"../spacing/index.js\";\n\n// The different signatures imply different meaning for their arguments that can't be expressed structurally.\n// We express the difference with variable names.\n\nexport default function createSpacing(spacingInput = 8,\n// Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n// Smaller components, such as icons, can align to a 4dp grid.\n// https://m2.material.io/design/layout/understanding-layout.html\ntransform = createUnarySpacing({\n spacing: spacingInput\n})) {\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n }\n const spacing = (...argsInput) => {\n if (process.env.NODE_ENV !== 'production') {\n if (!(argsInput.length <= 4)) {\n console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n }\n }\n const args = argsInput.length === 0 ? [1] : argsInput;\n return args.map(argument => {\n const output = transform(argument);\n return typeof output === 'number' ? `${output}px` : output;\n }).join(' ');\n };\n spacing.mui = true;\n return spacing;\n}","import merge from \"../merge/index.js\";\nfunction compose(...styles) {\n const handlers = styles.reduce((acc, style) => {\n style.filterProps.forEach(prop => {\n acc[prop] = style;\n });\n return acc;\n }, {});\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n return Object.keys(props).reduce((acc, prop) => {\n if (handlers[prop]) {\n return merge(acc, handlers[prop](props));\n }\n return acc;\n }, {});\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n return fn;\n}\nexport default compose;","import responsivePropType from \"../responsivePropType/index.js\";\nimport style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { createUnaryUnit, getValue } from \"../spacing/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nexport function borderTransform(value) {\n if (typeof value !== 'number') {\n return value;\n }\n return `${value}px solid`;\n}\nfunction createBorderStyle(prop, transform) {\n return style({\n prop,\n themeKey: 'borders',\n transform\n });\n}\nexport const border = createBorderStyle('border', borderTransform);\nexport const borderTop = createBorderStyle('borderTop', borderTransform);\nexport const borderRight = createBorderStyle('borderRight', borderTransform);\nexport const borderBottom = createBorderStyle('borderBottom', borderTransform);\nexport const borderLeft = createBorderStyle('borderLeft', borderTransform);\nexport const borderColor = createBorderStyle('borderColor');\nexport const borderTopColor = createBorderStyle('borderTopColor');\nexport const borderRightColor = createBorderStyle('borderRightColor');\nexport const borderBottomColor = createBorderStyle('borderBottomColor');\nexport const borderLeftColor = createBorderStyle('borderLeftColor');\nexport const outline = createBorderStyle('outline', borderTransform);\nexport const outlineColor = createBorderStyle('outlineColor');\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n if (props.borderRadius !== undefined && props.borderRadius !== null) {\n const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n const styleFromPropValue = propValue => ({\n borderRadius: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n }\n return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius, outline, outlineColor);\nexport default borders;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { createUnaryUnit, getValue } from \"../spacing/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nimport responsivePropType from \"../responsivePropType/index.js\";\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n if (props.gap !== undefined && props.gap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n const styleFromPropValue = propValue => ({\n gap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.gap, styleFromPropValue);\n }\n return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n if (props.columnGap !== undefined && props.columnGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n const styleFromPropValue = propValue => ({\n columnGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n }\n return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n if (props.rowGap !== undefined && props.rowGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n const styleFromPropValue = propValue => ({\n rowGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n }\n return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n prop: 'gridColumn'\n});\nexport const gridRow = style({\n prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nexport function paletteTransform(value, userValue) {\n if (userValue === 'grey') {\n return userValue;\n }\n return value;\n}\nexport const color = style({\n prop: 'color',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const backgroundColor = style({\n prop: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { handleBreakpoints, values as breakpointsValues } from \"../breakpoints/index.js\";\nexport function sizingTransform(value) {\n return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n prop: 'width',\n transform: sizingTransform\n});\nexport const maxWidth = props => {\n if (props.maxWidth !== undefined && props.maxWidth !== null) {\n const styleFromPropValue = propValue => {\n const breakpoint = props.theme?.breakpoints?.values?.[propValue] || breakpointsValues[propValue];\n if (!breakpoint) {\n return {\n maxWidth: sizingTransform(propValue)\n };\n }\n if (props.theme?.breakpoints?.unit !== 'px') {\n return {\n maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`\n };\n }\n return {\n maxWidth: breakpoint\n };\n };\n return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n }\n return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n prop: 'minWidth',\n transform: sizingTransform\n});\nexport const height = style({\n prop: 'height',\n transform: sizingTransform\n});\nexport const maxHeight = style({\n prop: 'maxHeight',\n transform: sizingTransform\n});\nexport const minHeight = style({\n prop: 'minHeight',\n transform: sizingTransform\n});\nexport const sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform: sizingTransform\n});\nexport const sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform: sizingTransform\n});\nexport const boxSizing = style({\n prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import { padding, margin } from \"../spacing/index.js\";\nimport { borderRadius, borderTransform } from \"../borders/index.js\";\nimport { gap, rowGap, columnGap } from \"../cssGrid/index.js\";\nimport { paletteTransform } from \"../palette/index.js\";\nimport { maxWidth, sizingTransform } from \"../sizing/index.js\";\nconst defaultSxConfig = {\n // borders\n border: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderTop: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderRight: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderBottom: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderLeft: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderColor: {\n themeKey: 'palette'\n },\n borderTopColor: {\n themeKey: 'palette'\n },\n borderRightColor: {\n themeKey: 'palette'\n },\n borderBottomColor: {\n themeKey: 'palette'\n },\n borderLeftColor: {\n themeKey: 'palette'\n },\n outline: {\n themeKey: 'borders',\n transform: borderTransform\n },\n outlineColor: {\n themeKey: 'palette'\n },\n borderRadius: {\n themeKey: 'shape.borderRadius',\n style: borderRadius\n },\n // palette\n color: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n bgcolor: {\n themeKey: 'palette',\n cssProperty: 'backgroundColor',\n transform: paletteTransform\n },\n backgroundColor: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n // spacing\n p: {\n style: padding\n },\n pt: {\n style: padding\n },\n pr: {\n style: padding\n },\n pb: {\n style: padding\n },\n pl: {\n style: padding\n },\n px: {\n style: padding\n },\n py: {\n style: padding\n },\n padding: {\n style: padding\n },\n paddingTop: {\n style: padding\n },\n paddingRight: {\n style: padding\n },\n paddingBottom: {\n style: padding\n },\n paddingLeft: {\n style: padding\n },\n paddingX: {\n style: padding\n },\n paddingY: {\n style: padding\n },\n paddingInline: {\n style: padding\n },\n paddingInlineStart: {\n style: padding\n },\n paddingInlineEnd: {\n style: padding\n },\n paddingBlock: {\n style: padding\n },\n paddingBlockStart: {\n style: padding\n },\n paddingBlockEnd: {\n style: padding\n },\n m: {\n style: margin\n },\n mt: {\n style: margin\n },\n mr: {\n style: margin\n },\n mb: {\n style: margin\n },\n ml: {\n style: margin\n },\n mx: {\n style: margin\n },\n my: {\n style: margin\n },\n margin: {\n style: margin\n },\n marginTop: {\n style: margin\n },\n marginRight: {\n style: margin\n },\n marginBottom: {\n style: margin\n },\n marginLeft: {\n style: margin\n },\n marginX: {\n style: margin\n },\n marginY: {\n style: margin\n },\n marginInline: {\n style: margin\n },\n marginInlineStart: {\n style: margin\n },\n marginInlineEnd: {\n style: margin\n },\n marginBlock: {\n style: margin\n },\n marginBlockStart: {\n style: margin\n },\n marginBlockEnd: {\n style: margin\n },\n // display\n displayPrint: {\n cssProperty: false,\n transform: value => ({\n '@media print': {\n display: value\n }\n })\n },\n display: {},\n overflow: {},\n textOverflow: {},\n visibility: {},\n whiteSpace: {},\n // flexbox\n flexBasis: {},\n flexDirection: {},\n flexWrap: {},\n justifyContent: {},\n alignItems: {},\n alignContent: {},\n order: {},\n flex: {},\n flexGrow: {},\n flexShrink: {},\n alignSelf: {},\n justifyItems: {},\n justifySelf: {},\n // grid\n gap: {\n style: gap\n },\n rowGap: {\n style: rowGap\n },\n columnGap: {\n style: columnGap\n },\n gridColumn: {},\n gridRow: {},\n gridAutoFlow: {},\n gridAutoColumns: {},\n gridAutoRows: {},\n gridTemplateColumns: {},\n gridTemplateRows: {},\n gridTemplateAreas: {},\n gridArea: {},\n // positions\n position: {},\n zIndex: {\n themeKey: 'zIndex'\n },\n top: {},\n right: {},\n bottom: {},\n left: {},\n // shadows\n boxShadow: {\n themeKey: 'shadows'\n },\n // sizing\n width: {\n transform: sizingTransform\n },\n maxWidth: {\n style: maxWidth\n },\n minWidth: {\n transform: sizingTransform\n },\n height: {\n transform: sizingTransform\n },\n maxHeight: {\n transform: sizingTransform\n },\n minHeight: {\n transform: sizingTransform\n },\n boxSizing: {},\n // typography\n font: {\n themeKey: 'font'\n },\n fontFamily: {\n themeKey: 'typography'\n },\n fontSize: {\n themeKey: 'typography'\n },\n fontStyle: {\n themeKey: 'typography'\n },\n fontWeight: {\n themeKey: 'typography'\n },\n letterSpacing: {},\n textTransform: {},\n lineHeight: {},\n textAlign: {},\n typography: {\n cssProperty: false,\n themeKey: 'typography'\n }\n};\nexport default defaultSxConfig;","import capitalize from '@mui/utils/capitalize';\nimport merge from \"../merge/index.js\";\nimport { getPath, getStyleValue as getValue } from \"../style/index.js\";\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from \"../breakpoints/index.js\";\nimport { sortContainerQueries } from \"../cssContainerQueries/index.js\";\nimport defaultSxConfig from \"./defaultSxConfig.js\";\nfunction objectsHaveSameKeys(...objects) {\n const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n const union = new Set(allKeys);\n return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n function getThemeValue(prop, val, theme, config) {\n const props = {\n [prop]: val,\n theme\n };\n const options = config[prop];\n if (!options) {\n return {\n [prop]: val\n };\n }\n const {\n cssProperty = prop,\n themeKey,\n transform,\n style\n } = options;\n if (val == null) {\n return null;\n }\n\n // TODO v6: remove, see https://github.com/mui/material-ui/pull/38123\n if (themeKey === 'typography' && val === 'inherit') {\n return {\n [prop]: val\n };\n }\n const themeMapping = getPath(theme, themeKey) || {};\n if (style) {\n return style(props);\n }\n const styleFromPropValue = propValueFinal => {\n let value = getValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, val, styleFromPropValue);\n }\n function styleFunctionSx(props) {\n const {\n sx,\n theme = {}\n } = props || {};\n if (!sx) {\n return null; // Emotion & styled-components will neglect null\n }\n const config = theme.unstable_sxConfig ?? defaultSxConfig;\n\n /*\n * Receive `sxInput` as object or callback\n * and then recursively check keys & values to create media query object styles.\n * (the result will be used in `styled`)\n */\n function traverse(sxInput) {\n let sxObject = sxInput;\n if (typeof sxInput === 'function') {\n sxObject = sxInput(theme);\n } else if (typeof sxInput !== 'object') {\n // value\n return sxInput;\n }\n if (!sxObject) {\n return null;\n }\n const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n const breakpointsKeys = Object.keys(emptyBreakpoints);\n let css = emptyBreakpoints;\n Object.keys(sxObject).forEach(styleKey => {\n const value = callIfFn(sxObject[styleKey], theme);\n if (value !== null && value !== undefined) {\n if (typeof value === 'object') {\n if (config[styleKey]) {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n } else {\n const breakpointsValues = handleBreakpoints({\n theme\n }, value, x => ({\n [styleKey]: x\n }));\n if (objectsHaveSameKeys(breakpointsValues, value)) {\n css[styleKey] = styleFunctionSx({\n sx: value,\n theme\n });\n } else {\n css = merge(css, breakpointsValues);\n }\n }\n } else {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n }\n }\n });\n return sortContainerQueries(theme, removeUnusedBreakpoints(breakpointsKeys, css));\n }\n return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n }\n return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","/**\n * A universal utility to style components with multiple color modes. Always use it from the theme object.\n * It works with:\n * - [Basic theme](https://mui.com/material-ui/customization/dark-mode/)\n * - [CSS theme variables](https://mui.com/material-ui/customization/css-theme-variables/overview/)\n * - Zero-runtime engine\n *\n * Tips: Use an array over object spread and place `theme.applyStyles()` last.\n *\n * ✅ [{ background: '#e5e5e5' }, theme.applyStyles('dark', { background: '#1c1c1c' })]\n *\n * 🚫 { background: '#e5e5e5', ...theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * @example\n * 1. using with `styled`:\n * ```jsx\n * const Component = styled('div')(({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]);\n * ```\n *\n * @example\n * 2. using with `sx` prop:\n * ```jsx\n * [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]}\n * />\n * ```\n *\n * @example\n * 3. theming a component:\n * ```jsx\n * extendTheme({\n * components: {\n * MuiButton: {\n * styleOverrides: {\n * root: ({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ],\n * },\n * }\n * }\n * })\n *```\n */\nexport default function applyStyles(key, styles) {\n // @ts-expect-error this is 'any' type\n const theme = this;\n if (theme.vars) {\n if (!theme.colorSchemes?.[key] || typeof theme.getColorSchemeSelector !== 'function') {\n return {};\n }\n // If CssVarsProvider is used as a provider, returns '*:where({selector}) &'\n let selector = theme.getColorSchemeSelector(key);\n if (selector === '&') {\n return styles;\n }\n if (selector.includes('data-') || selector.includes('.')) {\n // '*' is required as a workaround for Emotion issue (https://github.com/emotion-js/emotion/issues/2836)\n selector = `*:where(${selector.replace(/\\s*&$/, '')}) &`;\n }\n return {\n [selector]: styles\n };\n }\n if (theme.palette.mode === key) {\n return styles;\n }\n return {};\n}","import deepmerge from '@mui/utils/deepmerge';\nimport createBreakpoints from \"../createBreakpoints/createBreakpoints.js\";\nimport cssContainerQueries from \"../cssContainerQueries/index.js\";\nimport shape from \"./shape.js\";\nimport createSpacing from \"./createSpacing.js\";\nimport styleFunctionSx from \"../styleFunctionSx/styleFunctionSx.js\";\nimport defaultSxConfig from \"../styleFunctionSx/defaultSxConfig.js\";\nimport applyStyles from \"./applyStyles.js\";\nfunction createTheme(options = {}, ...args) {\n const {\n breakpoints: breakpointsInput = {},\n palette: paletteInput = {},\n spacing: spacingInput,\n shape: shapeInput = {},\n ...other\n } = options;\n const breakpoints = createBreakpoints(breakpointsInput);\n const spacing = createSpacing(spacingInput);\n let muiTheme = deepmerge({\n breakpoints,\n direction: 'ltr',\n components: {},\n // Inject component definitions.\n palette: {\n mode: 'light',\n ...paletteInput\n },\n spacing,\n shape: {\n ...shape,\n ...shapeInput\n }\n }, other);\n muiTheme = cssContainerQueries(muiTheme);\n muiTheme.applyStyles = applyStyles;\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n muiTheme.unstable_sxConfig = {\n ...defaultSxConfig,\n ...other?.unstable_sxConfig\n };\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nexport default createTheme;","var isDevelopment = false;\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n } // this function should always return with a value\n // TS can't understand it though so we make it stop complaining here\n\n\n return undefined;\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? !isDevelopment : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n this.tags.forEach(function (tag) {\n var _tag$parentNode;\n\n return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value,\n parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function\n /*: EmotionCache */\ncreateCache(options\n/*: Options */\n) {\n var key = options.key;\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node\n /*: HTMLStyleElement */\n ) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n var inserted = {};\n var container;\n /* : Node */\n\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node\n /*: HTMLStyleElement */\n ) {\n var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n /*: (\n selector: string,\n serialized: SerializedStyles,\n sheet: StyleSheet,\n shouldCache: boolean\n ) => string | void */\n\n\n var omnipresentPlugins = [compat, removeLabel];\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function\n /*: void */\n insert(selector\n /*: string */\n , serialized\n /*: SerializedStyles */\n , sheet\n /*: StyleSheet */\n , shouldCache\n /*: boolean */\n ) {\n currentSheet = sheet;\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache\n /*: EmotionCache */\n = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n scale: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar isDevelopment = false;\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n var componentSelector = interpolation;\n\n if (componentSelector.__emotion_styles !== undefined) {\n\n return componentSelector;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n var keyframes = interpolation;\n\n if (keyframes.anim === 1) {\n cursor = {\n name: keyframes.name,\n styles: keyframes.styles,\n next: cursor\n };\n return keyframes.name;\n }\n\n var serializedStyles = interpolation;\n\n if (serializedStyles.styles !== undefined) {\n var next = serializedStyles.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = serializedStyles.styles + \";\";\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n }\n\n break;\n }\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n var asString = interpolation;\n\n if (registered == null) {\n return asString;\n }\n\n var cached = registered[asString];\n return cached !== undefined ? cached : asString;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var key in obj) {\n var value = obj[key];\n\n if (typeof value !== 'object') {\n var asString = value;\n\n if (registered != null && registered[asString] !== undefined) {\n string += key + \"{\" + registered[asString] + \"}\";\n } else if (isProcessableValue(asString)) {\n string += processStyleName(key) + \":\" + processStyleValue(key, asString) + \";\";\n }\n } else {\n if (key === 'NO_COMPONENT_SELECTOR' && isDevelopment) {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(key) + \":\" + processStyleValue(key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n\n string += key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;{]+)\\s*(;|$)/g;\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nfunction serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n var asTemplateStringsArr = strings;\n\n styles += asTemplateStringsArr[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n var templateStringsArr = strings;\n\n styles += templateStringsArr[i];\n }\n }\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n}\n\nexport { serializeStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","import * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isDevelopment = false;\n\n/* import { type EmotionCache } from '@emotion/utils' */\nvar EmotionCacheContext\n/*: React.Context */\n= /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache()\n/*: EmotionCache | null*/\n{\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache\n/* > */\n(func\n/*: (props: Props, cache: EmotionCache, ref: Ref) => React.Node */\n)\n/*: React.AbstractComponent */\n{\n return /*#__PURE__*/forwardRef(function (props\n /*: Props */\n , ref\n /*: Ref */\n ) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nvar useTheme = function useTheme() {\n return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme\n/*: Object */\n, theme\n/*: Object | (Object => Object) */\n) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n return mergedTheme;\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\n/*\ntype ThemeProviderProps = {\n theme: Object | (Object => Object),\n children: React.Node\n}\n*/\n\nvar ThemeProvider = function ThemeProvider(props\n/*: ThemeProviderProps */\n) {\n var theme = React.useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme\n/* */\n(Component\n/*: React.AbstractComponent */\n)\n/*: React.AbstractComponent<$Diff> */\n{\n var componentName = Component.displayName || Component.name || 'Component';\n\n var render = function render(props, ref) {\n var theme = React.useContext(ThemeContext);\n return /*#__PURE__*/React.createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n };\n\n var WithTheme = /*#__PURE__*/React.forwardRef(render);\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar hasOwn = {}.hasOwnProperty;\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type\n/*: React.ElementType */\n, props\n/*: Object */\n) {\n\n var newProps\n /*: any */\n = {};\n\n for (var key in props) {\n if (hasOwn.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type; // Runtime labeling is an opt-in feature because:\n\n return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(\n/* */\nfunction (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwn.call(props, key) && key !== 'css' && key !== typePropName && (!isDevelopment )) {\n newProps[key] = props[key];\n }\n }\n\n newProps.className = className;\n\n if (ref) {\n newProps.ref = ref;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwn as h, isDevelopment as i, useTheme as u, withEmotionCache as w };\n","'use client';\n\nimport * as React from 'react';\nimport { ThemeContext } from '@mui/styled-engine';\nfunction isObjectEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n const contextTheme = React.useContext(ThemeContext);\n return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nexport default useTheme;","'use client';\n\nimport createTheme from \"../createTheme/index.js\";\nimport useThemeWithoutDefault from \"../useThemeWithoutDefault/index.js\";\nexport const systemDefaultTheme = createTheme();\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n return useThemeWithoutDefault(defaultTheme);\n}\nexport default useTheme;","'use client';\n\nimport getThemeProps from \"./getThemeProps.js\";\nimport useTheme from \"../useTheme/index.js\";\nexport default function useThemeProps({\n props,\n name,\n defaultTheme,\n themeId\n}) {\n let theme = useTheme(defaultTheme);\n if (themeId) {\n theme = theme[themeId] || theme;\n }\n return getThemeProps({\n theme,\n name,\n props\n });\n}","import resolveProps from '@mui/utils/resolveProps';\nexport default function getThemeProps(params) {\n const {\n theme,\n name,\n props\n } = params;\n if (!theme || !theme.components || !theme.components[name] || !theme.components[name].defaultProps) {\n return props;\n }\n return resolveProps(theme.components[name].defaultProps, props);\n}","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","import memoize from '@emotion/memoize';\n\n// eslint-disable-next-line no-undef\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","var isBrowser = true;\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else if (className) {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\nimport { withEmotionCache, ThemeContext } from '@emotion/react';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\n/* import type {\n ElementType,\n StatelessFunctionalComponent,\n AbstractComponent\n} from 'react' */\n/*\nexport type Interpolations = Array\n\nexport type StyledElementType =\n | string\n | AbstractComponent<{ ...Props, className: string }, mixed>\n\nexport type StyledOptions = {\n label?: string,\n shouldForwardProp?: string => boolean,\n target?: string\n}\n\nexport type StyledComponent = StatelessFunctionalComponent & {\n defaultProps: any,\n toString: () => string,\n withComponent: (\n nextTag: StyledElementType,\n nextOptions?: StyledOptions\n ) => StyledComponent\n}\n\nexport type PrivateStyledComponent = StyledComponent & {\n __emotion_real: StyledComponent,\n __emotion_base: any,\n __emotion_styles: any,\n __emotion_forwardProp: any\n}\n*/\n\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key\n/*: string */\n) {\n return key !== 'theme';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag\n/*: ElementType */\n) {\n return typeof tag === 'string' && // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\nvar composeShouldForwardProps = function composeShouldForwardProps(tag\n/*: PrivateStyledComponent */\n, options\n/*: StyledOptions | void */\n, isReal\n/*: boolean */\n) {\n var shouldForwardProp;\n\n if (options) {\n var optionsShouldForwardProp = options.shouldForwardProp;\n shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function (propName\n /*: string */\n ) {\n return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);\n } : optionsShouldForwardProp;\n }\n\n if (typeof shouldForwardProp !== 'function' && isReal) {\n shouldForwardProp = tag.__emotion_forwardProp;\n }\n\n return shouldForwardProp;\n};\n/*\nexport type CreateStyledComponent = (\n ...args: Interpolations\n) => StyledComponent\n\nexport type CreateStyled = {\n (\n tag: StyledElementType,\n options?: StyledOptions\n ): (...args: Interpolations) => StyledComponent,\n [key: string]: CreateStyledComponent,\n bind: () => CreateStyled\n}\n*/\n\nvar isDevelopment = false;\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar createStyled\n/*: CreateStyled */\n= function createStyled\n/*: CreateStyled */\n(tag\n/*: any */\n, options\n/* ?: StyledOptions */\n) {\n\n var isReal = tag.__emotion_real === tag;\n var baseTag = isReal && tag.__emotion_base || tag;\n var identifierName;\n var targetClassName;\n\n if (options !== undefined) {\n identifierName = options.label;\n targetClassName = options.target;\n }\n\n var shouldForwardProp = composeShouldForwardProps(tag, options, isReal);\n var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n var shouldUseAs = !defaultShouldForwardProp('as');\n /* return function(): PrivateStyledComponent { */\n\n return function () {\n var args = arguments;\n var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n if (identifierName !== undefined) {\n styles.push(\"label:\" + identifierName + \";\");\n }\n\n if (args[0] == null || args[0].raw === undefined) {\n styles.push.apply(styles, args);\n } else {\n\n styles.push(args[0][0]);\n var len = args.length;\n var i = 1;\n\n for (; i < len; i++) {\n\n styles.push(args[i], args[0][i]);\n }\n }\n\n var Styled\n /*: PrivateStyledComponent */\n = withEmotionCache(function (props, cache, ref) {\n var FinalTag = shouldUseAs && props.as || baseTag;\n var className = '';\n var classInterpolations = [];\n var mergedProps = props;\n\n if (props.theme == null) {\n mergedProps = {};\n\n for (var key in props) {\n mergedProps[key] = props[key];\n }\n\n mergedProps.theme = React.useContext(ThemeContext);\n }\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, classInterpolations, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(styles.concat(classInterpolations), cache.registered, mergedProps);\n className += cache.key + \"-\" + serialized.name;\n\n if (targetClassName !== undefined) {\n className += \" \" + targetClassName;\n }\n\n var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp;\n var newProps = {};\n\n for (var _key in props) {\n if (shouldUseAs && _key === 'as') continue;\n\n if (finalShouldForwardProp(_key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps.className = className;\n\n if (ref) {\n newProps.ref = ref;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof FinalTag === 'string'\n }), /*#__PURE__*/React.createElement(FinalTag, newProps));\n });\n Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n Styled.defaultProps = tag.defaultProps;\n Styled.__emotion_real = Styled;\n Styled.__emotion_base = baseTag;\n Styled.__emotion_styles = styles;\n Styled.__emotion_forwardProp = shouldForwardProp;\n Object.defineProperty(Styled, 'toString', {\n value: function value() {\n if (targetClassName === undefined && isDevelopment) {\n return 'NO_COMPONENT_SELECTOR';\n }\n\n return \".\" + targetClassName;\n }\n });\n\n Styled.withComponent = function (nextTag\n /*: StyledElementType */\n , nextOptions\n /* ?: StyledOptions */\n ) {\n return createStyled(nextTag, _extends({}, options, nextOptions, {\n shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true)\n })).apply(void 0, styles);\n };\n\n return Styled;\n };\n};\n\nexport { createStyled as default };\n","import createStyled from '../base/dist/emotion-styled-base.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport 'react';\nimport '@emotion/is-prop-valid';\nimport '@emotion/react';\nimport '@emotion/utils';\nimport '@emotion/serialize';\nimport '@emotion/use-insertion-effect-with-fallbacks';\n\nvar tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\nvar newStyled = createStyled.bind();\ntags.forEach(function (tagName) {\n newStyled[tagName] = newStyled(tagName);\n});\n\nexport { newStyled as default };\n","/**\n * @mui/styled-engine v6.1.6\n *\n * @license MIT\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/* eslint-disable no-underscore-dangle */\nimport emStyled from '@emotion/styled';\nimport { serializeStyles as emSerializeStyles } from '@emotion/serialize';\nexport default function styled(tag, options) {\n const stylesFactory = emStyled(tag, options);\n if (process.env.NODE_ENV !== 'production') {\n return (...styles) => {\n const component = typeof tag === 'string' ? `\"${tag}\"` : 'component';\n if (styles.length === 0) {\n console.error([`MUI: Seems like you called \\`styled(${component})()\\` without a \\`style\\` argument.`, 'You must provide a `styles` argument: `styled(\"div\")(styleYouForgotToPass)`.'].join('\\n'));\n } else if (styles.some(style => style === undefined)) {\n console.error(`MUI: the styled(${component})(...args) API requires all its args to be defined.`);\n }\n return stylesFactory(...styles);\n };\n }\n return stylesFactory;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function internal_mutateStyles(tag, processor) {\n // Emotion attaches all the styles as `__emotion_styles`.\n // Ref: https://github.com/emotion-js/emotion/blob/16d971d0da229596d6bcc39d282ba9753c9ee7cf/packages/styled/src/base.js#L186\n if (Array.isArray(tag.__emotion_styles)) {\n tag.__emotion_styles = processor(tag.__emotion_styles);\n }\n}\n\n// Emotion only accepts an array, but we want to avoid allocations\nconst wrapper = [];\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function internal_serializeStyles(styles) {\n wrapper[0] = styles;\n return emSerializeStyles(wrapper);\n}\nexport { ThemeContext, keyframes, css } from '@emotion/react';\nexport { default as StyledEngineProvider } from \"./StyledEngineProvider/index.js\";\nexport { default as GlobalStyles } from \"./GlobalStyles/index.js\";","import { internal_serializeStyles } from '@mui/styled-engine';\nexport default function preprocessStyles(input) {\n const {\n variants,\n ...style\n } = input;\n const result = {\n variants,\n style: internal_serializeStyles(style),\n isProcessed: true\n };\n\n // Not supported on styled-components\n if (result.style === style) {\n return result;\n }\n if (variants) {\n variants.forEach(variant => {\n if (typeof variant.style !== 'function') {\n variant.style = internal_serializeStyles(variant.style);\n }\n });\n }\n return result;\n}","import styledEngineStyled, { internal_mutateStyles as mutateStyles } from '@mui/styled-engine';\nimport { isPlainObject } from '@mui/utils/deepmerge';\nimport capitalize from '@mui/utils/capitalize';\nimport getDisplayName from '@mui/utils/getDisplayName';\nimport createTheme from \"../createTheme/index.js\";\nimport styleFunctionSx from \"../styleFunctionSx/index.js\";\nimport preprocessStyles from \"../preprocessStyles.js\";\n\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-labels */\n/* eslint-disable no-lone-blocks */\n\nexport const systemDefaultTheme = createTheme();\n\n// Update /system/styled/#api in case if this changes\nexport function shouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nfunction defaultOverridesResolver(slot) {\n if (!slot) {\n return null;\n }\n return (_props, styles) => styles[slot];\n}\nfunction attachTheme(props, themeId, defaultTheme) {\n props.theme = isObjectEmpty(props.theme) ? defaultTheme : props.theme[themeId] || props.theme;\n}\nfunction processStyle(props, style) {\n /*\n * Style types:\n * - null/undefined\n * - string\n * - CSS style object: { [cssKey]: [cssValue], variants }\n * - Processed style object: { style, variants, isProcessed: true }\n * - Array of any of the above\n */\n\n const resolvedStyle = typeof style === 'function' ? style(props) : style;\n if (Array.isArray(resolvedStyle)) {\n return resolvedStyle.flatMap(subStyle => processStyle(props, subStyle));\n }\n if (Array.isArray(resolvedStyle?.variants)) {\n let rootStyle;\n if (resolvedStyle.isProcessed) {\n rootStyle = resolvedStyle.style;\n } else {\n const {\n variants,\n ...otherStyles\n } = resolvedStyle;\n rootStyle = otherStyles;\n }\n return processStyleVariants(props, resolvedStyle.variants, [rootStyle]);\n }\n if (resolvedStyle?.isProcessed) {\n return resolvedStyle.style;\n }\n return resolvedStyle;\n}\nfunction processStyleVariants(props, variants, results = []) {\n let mergedState; // We might not need it, initialized lazily\n\n variantLoop: for (let i = 0; i < variants.length; i += 1) {\n const variant = variants[i];\n if (typeof variant.props === 'function') {\n mergedState ??= {\n ...props,\n ...props.ownerState,\n ownerState: props.ownerState\n };\n if (!variant.props(mergedState)) {\n continue;\n }\n } else {\n for (const key in variant.props) {\n if (props[key] !== variant.props[key] && props.ownerState?.[key] !== variant.props[key]) {\n continue variantLoop;\n }\n }\n }\n if (typeof variant.style === 'function') {\n mergedState ??= {\n ...props,\n ...props.ownerState,\n ownerState: props.ownerState\n };\n results.push(variant.style(mergedState));\n } else {\n results.push(variant.style);\n }\n }\n return results;\n}\nexport default function createStyled(input = {}) {\n const {\n themeId,\n defaultTheme = systemDefaultTheme,\n rootShouldForwardProp = shouldForwardProp,\n slotShouldForwardProp = shouldForwardProp\n } = input;\n function styleAttachTheme(props) {\n attachTheme(props, themeId, defaultTheme);\n }\n const styled = (tag, inputOptions = {}) => {\n // If `tag` is already a styled component, filter out the `sx` style function\n // to prevent unnecessary styles generated by the composite components.\n mutateStyles(tag, styles => styles.filter(style => style !== styleFunctionSx));\n const {\n name: componentName,\n slot: componentSlot,\n skipVariantsResolver: inputSkipVariantsResolver,\n skipSx: inputSkipSx,\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n overridesResolver = defaultOverridesResolver(lowercaseFirstLetter(componentSlot)),\n ...options\n } = inputOptions;\n\n // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver :\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n componentSlot && componentSlot !== 'Root' && componentSlot !== 'root' || false;\n const skipSx = inputSkipSx || false;\n let shouldForwardPropOption = shouldForwardProp;\n\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n if (componentSlot === 'Root' || componentSlot === 'root') {\n shouldForwardPropOption = rootShouldForwardProp;\n } else if (componentSlot) {\n // any other slot specified\n shouldForwardPropOption = slotShouldForwardProp;\n } else if (isStringTag(tag)) {\n // for string (html) tag, preserve the behavior in emotion & styled-components.\n shouldForwardPropOption = undefined;\n }\n const defaultStyledResolver = styledEngineStyled(tag, {\n shouldForwardProp: shouldForwardPropOption,\n label: generateStyledLabel(componentName, componentSlot),\n ...options\n });\n const transformStyle = style => {\n // On the server Emotion doesn't use React.forwardRef for creating components, so the created\n // component stays as a function. This condition makes sure that we do not interpolate functions\n // which are basically components used as a selectors.\n if (typeof style === 'function' && style.__emotion_real !== style) {\n return function styleFunctionProcessor(props) {\n return processStyle(props, style);\n };\n }\n if (isPlainObject(style)) {\n const serialized = preprocessStyles(style);\n if (!serialized.variants) {\n return serialized.style;\n }\n return function styleObjectProcessor(props) {\n return processStyle(props, serialized);\n };\n }\n return style;\n };\n const muiStyledResolver = (...expressionsInput) => {\n const expressionsHead = [];\n const expressionsBody = expressionsInput.map(transformStyle);\n const expressionsTail = [];\n\n // Preprocess `props` to set the scoped theme value.\n // This must run before any other expression.\n expressionsHead.push(styleAttachTheme);\n if (componentName && overridesResolver) {\n expressionsTail.push(function styleThemeOverrides(props) {\n const theme = props.theme;\n const styleOverrides = theme.components?.[componentName]?.styleOverrides;\n if (!styleOverrides) {\n return null;\n }\n const resolvedStyleOverrides = {};\n\n // TODO: v7 remove iteration and use `resolveStyleArg(styleOverrides[slot])` directly\n // eslint-disable-next-line guard-for-in\n for (const slotKey in styleOverrides) {\n resolvedStyleOverrides[slotKey] = processStyle(props, styleOverrides[slotKey]);\n }\n return overridesResolver(props, resolvedStyleOverrides);\n });\n }\n if (componentName && !skipVariantsResolver) {\n expressionsTail.push(function styleThemeVariants(props) {\n const theme = props.theme;\n const themeVariants = theme?.components?.[componentName]?.variants;\n if (!themeVariants) {\n return null;\n }\n return processStyleVariants(props, themeVariants);\n });\n }\n if (!skipSx) {\n expressionsTail.push(styleFunctionSx);\n }\n\n // This function can be called as a tagged template, so the first argument would contain\n // CSS `string[]` values.\n if (Array.isArray(expressionsBody[0])) {\n const inputStrings = expressionsBody.shift();\n\n // We need to add placeholders in the tagged template for the custom functions we have\n // possibly added (attachTheme, overrides, variants, and sx).\n const placeholdersHead = new Array(expressionsHead.length).fill('');\n const placeholdersTail = new Array(expressionsTail.length).fill('');\n let outputStrings;\n // prettier-ignore\n {\n outputStrings = [...placeholdersHead, ...inputStrings, ...placeholdersTail];\n outputStrings.raw = [...placeholdersHead, ...inputStrings.raw, ...placeholdersTail];\n }\n\n // The only case where we put something before `attachTheme`\n expressionsHead.unshift(outputStrings);\n }\n const expressions = [...expressionsHead, ...expressionsBody, ...expressionsTail];\n const Component = defaultStyledResolver(...expressions);\n if (tag.muiName) {\n Component.muiName = tag.muiName;\n }\n if (process.env.NODE_ENV !== 'production') {\n Component.displayName = generateDisplayName(componentName, componentSlot, tag);\n }\n return Component;\n };\n if (defaultStyledResolver.withConfig) {\n muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n }\n return muiStyledResolver;\n };\n return styled;\n}\nfunction generateDisplayName(componentName, componentSlot, tag) {\n if (componentName) {\n return `${componentName}${capitalize(componentSlot || '')}`;\n }\n return `Styled(${getDisplayName(tag)})`;\n}\nfunction generateStyledLabel(componentName, componentSlot) {\n let label;\n if (process.env.NODE_ENV !== 'production') {\n if (componentName) {\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n }\n }\n return label;\n}\nfunction isObjectEmpty(object) {\n // eslint-disable-next-line\n for (const _ in object) {\n return false;\n }\n return true;\n}\n\n// https://github.com/emotion-js/emotion/blob/26ded6109fcd8ca9875cc2ce4564fee678a3f3c5/packages/styled/src/utils.js#L40\nfunction isStringTag(tag) {\n return typeof tag === 'string' &&\n // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96;\n}\nfunction lowercaseFirstLetter(string) {\n if (!string) {\n return string;\n }\n return string.charAt(0).toLowerCase() + string.slice(1);\n}","import createStyled from \"../createStyled/index.js\";\nconst styled = createStyled();\nexport default styled;","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from '@mui/utils/capitalize';\nimport useThemePropsSystem from \"../useThemeProps/index.js\";\nimport systemStyled from \"../styled/index.js\";\nimport createTheme from \"../createTheme/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultTheme = createTheme();\nconst defaultCreateStyledComponent = systemStyled('div', {\n name: 'MuiContainer',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`maxWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fixed && styles.fixed, ownerState.disableGutters && styles.disableGutters];\n }\n});\nconst useThemePropsDefault = inProps => useThemePropsSystem({\n props: inProps,\n name: 'MuiContainer',\n defaultTheme\n});\nconst useUtilityClasses = (ownerState, componentName) => {\n const getContainerUtilityClass = slot => {\n return generateUtilityClass(componentName, slot);\n };\n const {\n classes,\n fixed,\n disableGutters,\n maxWidth\n } = ownerState;\n const slots = {\n root: ['root', maxWidth && `maxWidth${capitalize(String(maxWidth))}`, fixed && 'fixed', disableGutters && 'disableGutters']\n };\n return composeClasses(slots, getContainerUtilityClass, classes);\n};\nexport default function createContainer(options = {}) {\n const {\n // This will allow adding custom styled fn (for example for custom sx style function)\n createStyledComponent = defaultCreateStyledComponent,\n useThemeProps = useThemePropsDefault,\n componentName = 'MuiContainer'\n } = options;\n const ContainerRoot = createStyledComponent(({\n theme,\n ownerState\n }) => ({\n width: '100%',\n marginLeft: 'auto',\n boxSizing: 'border-box',\n marginRight: 'auto',\n ...(!ownerState.disableGutters && {\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n // @ts-ignore module augmentation fails if custom breakpoints are used\n [theme.breakpoints.up('sm')]: {\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3)\n }\n })\n }), ({\n theme,\n ownerState\n }) => ownerState.fixed && Object.keys(theme.breakpoints.values).reduce((acc, breakpointValueKey) => {\n const breakpoint = breakpointValueKey;\n const value = theme.breakpoints.values[breakpoint];\n if (value !== 0) {\n // @ts-ignore\n acc[theme.breakpoints.up(breakpoint)] = {\n maxWidth: `${value}${theme.breakpoints.unit}`\n };\n }\n return acc;\n }, {}), ({\n theme,\n ownerState\n }) => ({\n // @ts-ignore module augmentation fails if custom breakpoints are used\n ...(ownerState.maxWidth === 'xs' && {\n // @ts-ignore module augmentation fails if custom breakpoints are used\n [theme.breakpoints.up('xs')]: {\n // @ts-ignore module augmentation fails if custom breakpoints are used\n maxWidth: Math.max(theme.breakpoints.values.xs, 444)\n }\n }),\n ...(ownerState.maxWidth &&\n // @ts-ignore module augmentation fails if custom breakpoints are used\n ownerState.maxWidth !== 'xs' && {\n // @ts-ignore module augmentation fails if custom breakpoints are used\n [theme.breakpoints.up(ownerState.maxWidth)]: {\n // @ts-ignore module augmentation fails if custom breakpoints are used\n maxWidth: `${theme.breakpoints.values[ownerState.maxWidth]}${theme.breakpoints.unit}`\n }\n })\n }));\n const Container = /*#__PURE__*/React.forwardRef(function Container(inProps, ref) {\n const props = useThemeProps(inProps);\n const {\n className,\n component = 'div',\n disableGutters = false,\n fixed = false,\n maxWidth = 'lg',\n classes: classesProp,\n ...other\n } = props;\n const ownerState = {\n ...props,\n component,\n disableGutters,\n fixed,\n maxWidth\n };\n\n // @ts-ignore module augmentation fails if custom breakpoints are used\n const classes = useUtilityClasses(ownerState, componentName);\n return (\n /*#__PURE__*/\n // @ts-ignore theme is injected by the styled util\n _jsx(ContainerRoot, {\n as: component\n // @ts-ignore module augmentation fails if custom breakpoints are used\n ,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref,\n ...other\n })\n );\n });\n process.env.NODE_ENV !== \"production\" ? Container.propTypes /* remove-proptypes */ = {\n children: PropTypes.node,\n classes: PropTypes.object,\n className: PropTypes.string,\n component: PropTypes.elementType,\n disableGutters: PropTypes.bool,\n fixed: PropTypes.bool,\n maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n } : void 0;\n return Container;\n}","import capitalize from '@mui/utils/capitalize';\nexport default capitalize;","function clamp(val, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n return Math.max(min, Math.min(val, max));\n}\nexport default clamp;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n/* eslint-disable @typescript-eslint/naming-convention */\nimport clamp from '@mui/utils/clamp';\n\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clampWrapper(value, min = 0, max = 1) {\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n }\n }\n return clamp(value, min, max);\n}\n\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nexport function hexToRgb(color) {\n color = color.slice(1);\n const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, 'g');\n let colors = color.match(re);\n if (colors && colors[0].length === 1) {\n colors = colors.map(n => n + n);\n }\n return colors ? `rgb${colors.length === 4 ? 'a' : ''}(${colors.map((n, index) => {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', ')})` : '';\n}\nfunction intToHex(int) {\n const hex = int.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n}\n\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\nexport function decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n const marker = color.indexOf('(');\n const type = color.substring(0, marker);\n if (!['rgb', 'rgba', 'hsl', 'hsla', 'color'].includes(type)) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported \\`${color}\\` color.\\n` + 'The following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().' : _formatMuiErrorMessage(9, color));\n }\n let values = color.substring(marker + 1, color.length - 1);\n let colorSpace;\n if (type === 'color') {\n values = values.split(' ');\n colorSpace = values.shift();\n if (values.length === 4 && values[3].charAt(0) === '/') {\n values[3] = values[3].slice(1);\n }\n if (!['srgb', 'display-p3', 'a98-rgb', 'prophoto-rgb', 'rec-2020'].includes(colorSpace)) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: unsupported \\`${colorSpace}\\` color space.\\n` + 'The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.' : _formatMuiErrorMessage(10, colorSpace));\n }\n } else {\n values = values.split(',');\n }\n values = values.map(value => parseFloat(value));\n return {\n type,\n values,\n colorSpace\n };\n}\n\n/**\n * Returns a channel created from the input color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {string} - The channel for the color, that can be used in rgba or hsla colors\n */\nexport const colorChannel = color => {\n const decomposedColor = decomposeColor(color);\n return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.includes('hsl') && idx !== 0 ? `${val}%` : val).join(' ');\n};\nexport const private_safeColorChannel = (color, warning) => {\n try {\n return colorChannel(color);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n};\n\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla', 'color'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nexport function recomposeColor(color) {\n const {\n type,\n colorSpace\n } = color;\n let {\n values\n } = color;\n if (type.includes('rgb')) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map((n, i) => i < 3 ? parseInt(n, 10) : n);\n } else if (type.includes('hsl')) {\n values[1] = `${values[1]}%`;\n values[2] = `${values[2]}%`;\n }\n if (type.includes('color')) {\n values = `${colorSpace} ${values.join(' ')}`;\n } else {\n values = `${values.join(', ')}`;\n }\n return `${type}(${values})`;\n}\n\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nexport function rgbToHex(color) {\n // Idempotent\n if (color.startsWith('#')) {\n return color;\n }\n const {\n values\n } = decomposeColor(color);\n return `#${values.map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n)).join('')}`;\n}\n\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nexport function hslToRgb(color) {\n color = decomposeColor(color);\n const {\n values\n } = color;\n const h = values[0];\n const s = values[1] / 100;\n const l = values[2] / 100;\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n let type = 'rgb';\n const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n return recomposeColor({\n type,\n values: rgb\n });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nexport function getLuminance(color) {\n color = decomposeColor(color);\n let rgb = color.type === 'hsl' || color.type === 'hsla' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(val => {\n if (color.type !== 'color') {\n val /= 255; // normalized\n }\n return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n });\n\n // Truncate at 3 digits\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nexport function getContrastRatio(foreground, background) {\n const lumA = getLuminance(foreground);\n const lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function alpha(color, value) {\n color = decomposeColor(color);\n value = clampWrapper(value);\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n if (color.type === 'color') {\n color.values[3] = `/${value}`;\n } else {\n color.values[3] = value;\n }\n return recomposeColor(color);\n}\nexport function private_safeAlpha(color, value, warning) {\n try {\n return alpha(color, value);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.includes('hsl')) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.includes('rgb') || color.type.includes('color')) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n return recomposeColor(color);\n}\nexport function private_safeDarken(color, coefficient, warning) {\n try {\n return darken(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.includes('hsl')) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.includes('rgb')) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n } else if (color.type.includes('color')) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (1 - color.values[i]) * coefficient;\n }\n }\n return recomposeColor(color);\n}\nexport function private_safeLighten(color, coefficient, warning) {\n try {\n return lighten(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function emphasize(color, coefficient = 0.15) {\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nexport function private_safeEmphasize(color, coefficient, warning) {\n try {\n return emphasize(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Blend a transparent overlay color with a background color, resulting in a single\n * RGB color.\n * @param {string} background - CSS color\n * @param {string} overlay - CSS color\n * @param {number} opacity - Opacity multiplier in the range 0 - 1\n * @param {number} [gamma=1.0] - Gamma correction factor. For gamma-correct blending, 2.2 is usual.\n */\nexport function blend(background, overlay, opacity, gamma = 1.0) {\n const blendChannel = (b, o) => Math.round((b ** (1 / gamma) * (1 - opacity) + o ** (1 / gamma) * opacity) ** gamma);\n const backgroundColor = decomposeColor(background);\n const overlayColor = decomposeColor(overlay);\n const rgb = [blendChannel(backgroundColor.values[0], overlayColor.values[0]), blendChannel(backgroundColor.values[1], overlayColor.values[1]), blendChannel(backgroundColor.values[2], overlayColor.values[2])];\n return recomposeColor({\n type: 'rgb',\n values: rgb\n });\n}","const common = {\n black: '#000',\n white: '#fff'\n};\nexport default common;","const grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#f5f5f5',\n A200: '#eeeeee',\n A400: '#bdbdbd',\n A700: '#616161'\n};\nexport default grey;","const purple = {\n 50: '#f3e5f5',\n 100: '#e1bee7',\n 200: '#ce93d8',\n 300: '#ba68c8',\n 400: '#ab47bc',\n 500: '#9c27b0',\n 600: '#8e24aa',\n 700: '#7b1fa2',\n 800: '#6a1b9a',\n 900: '#4a148c',\n A100: '#ea80fc',\n A200: '#e040fb',\n A400: '#d500f9',\n A700: '#aa00ff'\n};\nexport default purple;","const red = {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n A100: '#ff8a80',\n A200: '#ff5252',\n A400: '#ff1744',\n A700: '#d50000'\n};\nexport default red;","const orange = {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n A100: '#ffd180',\n A200: '#ffab40',\n A400: '#ff9100',\n A700: '#ff6d00'\n};\nexport default orange;","const blue = {\n 50: '#e3f2fd',\n 100: '#bbdefb',\n 200: '#90caf9',\n 300: '#64b5f6',\n 400: '#42a5f5',\n 500: '#2196f3',\n 600: '#1e88e5',\n 700: '#1976d2',\n 800: '#1565c0',\n 900: '#0d47a1',\n A100: '#82b1ff',\n A200: '#448aff',\n A400: '#2979ff',\n A700: '#2962ff'\n};\nexport default blue;","const lightBlue = {\n 50: '#e1f5fe',\n 100: '#b3e5fc',\n 200: '#81d4fa',\n 300: '#4fc3f7',\n 400: '#29b6f6',\n 500: '#03a9f4',\n 600: '#039be5',\n 700: '#0288d1',\n 800: '#0277bd',\n 900: '#01579b',\n A100: '#80d8ff',\n A200: '#40c4ff',\n A400: '#00b0ff',\n A700: '#0091ea'\n};\nexport default lightBlue;","const green = {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n A100: '#b9f6ca',\n A200: '#69f0ae',\n A400: '#00e676',\n A700: '#00c853'\n};\nexport default green;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nimport deepmerge from '@mui/utils/deepmerge';\nimport { darken, getContrastRatio, lighten } from '@mui/system/colorManipulator';\nimport common from \"../colors/common.js\";\nimport grey from \"../colors/grey.js\";\nimport purple from \"../colors/purple.js\";\nimport red from \"../colors/red.js\";\nimport orange from \"../colors/orange.js\";\nimport blue from \"../colors/blue.js\";\nimport lightBlue from \"../colors/lightBlue.js\";\nimport green from \"../colors/green.js\";\nfunction getLight() {\n return {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: 'rgba(0, 0, 0, 0.87)',\n // Secondary text.\n secondary: 'rgba(0, 0, 0, 0.6)',\n // Disabled text have even lower visual prominence.\n disabled: 'rgba(0, 0, 0, 0.38)'\n },\n // The color used to divide different elements.\n divider: 'rgba(0, 0, 0, 0.12)',\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: common.white,\n default: common.white\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: 'rgba(0, 0, 0, 0.54)',\n // The color of an hovered action.\n hover: 'rgba(0, 0, 0, 0.04)',\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: 'rgba(0, 0, 0, 0.08)',\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: 'rgba(0, 0, 0, 0.26)',\n // The background color of a disabled action.\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(0, 0, 0, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n };\n}\nexport const light = getLight();\nfunction getDark() {\n return {\n text: {\n primary: common.white,\n secondary: 'rgba(255, 255, 255, 0.7)',\n disabled: 'rgba(255, 255, 255, 0.5)',\n icon: 'rgba(255, 255, 255, 0.5)'\n },\n divider: 'rgba(255, 255, 255, 0.12)',\n background: {\n paper: '#121212',\n default: '#121212'\n },\n action: {\n active: common.white,\n hover: 'rgba(255, 255, 255, 0.08)',\n hoverOpacity: 0.08,\n selected: 'rgba(255, 255, 255, 0.16)',\n selectedOpacity: 0.16,\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(255, 255, 255, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n };\n}\nexport const dark = getDark();\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n const tonalOffsetLight = tonalOffset.light || tonalOffset;\n const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = lighten(intent.main, tonalOffsetLight);\n } else if (direction === 'dark') {\n intent.dark = darken(intent.main, tonalOffsetDark);\n }\n }\n}\nfunction getDefaultPrimary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: blue[200],\n light: blue[50],\n dark: blue[400]\n };\n }\n return {\n main: blue[700],\n light: blue[400],\n dark: blue[800]\n };\n}\nfunction getDefaultSecondary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: purple[200],\n light: purple[50],\n dark: purple[400]\n };\n }\n return {\n main: purple[500],\n light: purple[300],\n dark: purple[700]\n };\n}\nfunction getDefaultError(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: red[500],\n light: red[300],\n dark: red[700]\n };\n }\n return {\n main: red[700],\n light: red[400],\n dark: red[800]\n };\n}\nfunction getDefaultInfo(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: lightBlue[400],\n light: lightBlue[300],\n dark: lightBlue[700]\n };\n }\n return {\n main: lightBlue[700],\n light: lightBlue[500],\n dark: lightBlue[900]\n };\n}\nfunction getDefaultSuccess(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: green[400],\n light: green[300],\n dark: green[700]\n };\n }\n return {\n main: green[800],\n light: green[500],\n dark: green[900]\n };\n}\nfunction getDefaultWarning(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: orange[400],\n light: orange[300],\n dark: orange[700]\n };\n }\n return {\n main: '#ed6c02',\n // closest to orange[800] that pass 3:1.\n light: orange[500],\n dark: orange[900]\n };\n}\nexport default function createPalette(palette) {\n const {\n mode = 'light',\n contrastThreshold = 3,\n tonalOffset = 0.2,\n ...other\n } = palette;\n const primary = palette.primary || getDefaultPrimary(mode);\n const secondary = palette.secondary || getDefaultSecondary(mode);\n const error = palette.error || getDefaultError(mode);\n const info = palette.info || getDefaultInfo(mode);\n const success = palette.success || getDefaultSuccess(mode);\n const warning = palette.warning || getDefaultWarning(mode);\n\n // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n function getContrastText(background) {\n const contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n if (process.env.NODE_ENV !== 'production') {\n const contrast = getContrastRatio(background, contrastText);\n if (contrast < 3) {\n console.error([`MUI: The contrast ratio of ${contrast}:1 for ${contrastText} on ${background}`, 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n }\n }\n return contrastText;\n }\n const augmentColor = ({\n color,\n name,\n mainShade = 500,\n lightShade = 300,\n darkShade = 700\n }) => {\n color = {\n ...color\n };\n if (!color.main && color[mainShade]) {\n color.main = color[mainShade];\n }\n if (!color.hasOwnProperty('main')) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\\n` + `The color object needs to have a \\`main\\` property or a \\`${mainShade}\\` property.` : _formatMuiErrorMessage(11, name ? ` (${name})` : '', mainShade));\n }\n if (typeof color.main !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\\n` + `\\`color.main\\` should be a string, but \\`${JSON.stringify(color.main)}\\` was provided instead.\\n` + '\\n' + 'Did you intend to use one of the following approaches?\\n' + '\\n' + 'import { green } from \"@mui/material/colors\";\\n' + '\\n' + 'const theme1 = createTheme({ palette: {\\n' + ' primary: green,\\n' + '} });\\n' + '\\n' + 'const theme2 = createTheme({ palette: {\\n' + ' primary: { main: green[500] },\\n' + '} });' : _formatMuiErrorMessage(12, name ? ` (${name})` : '', JSON.stringify(color.main)));\n }\n addLightOrDark(color, 'light', lightShade, tonalOffset);\n addLightOrDark(color, 'dark', darkShade, tonalOffset);\n if (!color.contrastText) {\n color.contrastText = getContrastText(color.main);\n }\n return color;\n };\n let modeHydrated;\n if (mode === 'light') {\n modeHydrated = getLight();\n } else if (mode === 'dark') {\n modeHydrated = getDark();\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!modeHydrated) {\n console.error(`MUI: The palette mode \\`${mode}\\` is not supported.`);\n }\n }\n const paletteOutput = deepmerge({\n // A collection of common colors.\n common: {\n ...common\n },\n // prevent mutable object.\n // The palette mode, can be light or dark.\n mode,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor({\n color: primary,\n name: 'primary'\n }),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor({\n color: secondary,\n name: 'secondary',\n mainShade: 'A400',\n lightShade: 'A200',\n darkShade: 'A700'\n }),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor({\n color: error,\n name: 'error'\n }),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor({\n color: warning,\n name: 'warning'\n }),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor({\n color: info,\n name: 'info'\n }),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor({\n color: success,\n name: 'success'\n }),\n // The grey colors.\n grey,\n // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold,\n // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText,\n // Generate a rich color object.\n augmentColor,\n // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset,\n // The light and dark mode object.\n ...modeHydrated\n }, other);\n return paletteOutput;\n}","/**\n * The benefit of this function is to help developers get CSS var from theme without specifying the whole variable\n * and they does not need to remember the prefix (defined once).\n */\nexport default function createGetCssVar(prefix = '') {\n function appendVar(...vars) {\n if (!vars.length) {\n return '';\n }\n const value = vars[0];\n if (typeof value === 'string' && !value.match(/(#|\\(|\\)|(-?(\\d*\\.)?\\d+)(px|em|%|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc))|^(-?(\\d*\\.)?\\d+)$|(\\d+ \\d+ \\d+)/)) {\n return `, var(--${prefix ? `${prefix}-` : ''}${value}${appendVar(...vars.slice(1))})`;\n }\n return `, ${value}`;\n }\n\n // AdditionalVars makes `getCssVar` less strict, so it can be use like this `getCssVar('non-mui-variable')` without type error.\n const getCssVar = (field, ...fallbacks) => {\n return `var(--${prefix ? `${prefix}-` : ''}${field}${appendVar(...fallbacks)})`;\n };\n return getCssVar;\n}","export default function prepareTypographyVars(typography) {\n const vars = {};\n const entries = Object.entries(typography);\n entries.forEach(entry => {\n const [key, value] = entry;\n if (typeof value === 'object') {\n vars[key] = `${value.fontStyle ? `${value.fontStyle} ` : ''}${value.fontVariant ? `${value.fontVariant} ` : ''}${value.fontWeight ? `${value.fontWeight} ` : ''}${value.fontStretch ? `${value.fontStretch} ` : ''}${value.fontSize || ''}${value.lineHeight ? `/${value.lineHeight} ` : ''}${value.fontFamily || ''}`;\n }\n });\n return vars;\n}","/**\n * This function create an object from keys, value and then assign to target\n *\n * @param {Object} obj : the target object to be assigned\n * @param {string[]} keys\n * @param {string | number} value\n *\n * @example\n * const source = {}\n * assignNestedKeys(source, ['palette', 'primary'], 'var(--palette-primary)')\n * console.log(source) // { palette: { primary: 'var(--palette-primary)' } }\n *\n * @example\n * const source = { palette: { primary: 'var(--palette-primary)' } }\n * assignNestedKeys(source, ['palette', 'secondary'], 'var(--palette-secondary)')\n * console.log(source) // { palette: { primary: 'var(--palette-primary)', secondary: 'var(--palette-secondary)' } }\n */\nexport const assignNestedKeys = (obj, keys, value, arrayKeys = []) => {\n let temp = obj;\n keys.forEach((k, index) => {\n if (index === keys.length - 1) {\n if (Array.isArray(temp)) {\n temp[Number(k)] = value;\n } else if (temp && typeof temp === 'object') {\n temp[k] = value;\n }\n } else if (temp && typeof temp === 'object') {\n if (!temp[k]) {\n temp[k] = arrayKeys.includes(k) ? [] : {};\n }\n temp = temp[k];\n }\n });\n};\n\n/**\n *\n * @param {Object} obj : source object\n * @param {Function} callback : a function that will be called when\n * - the deepest key in source object is reached\n * - the value of the deepest key is NOT `undefined` | `null`\n *\n * @example\n * walkObjectDeep({ palette: { primary: { main: '#000000' } } }, console.log)\n * // ['palette', 'primary', 'main'] '#000000'\n */\nexport const walkObjectDeep = (obj, callback, shouldSkipPaths) => {\n function recurse(object, parentKeys = [], arrayKeys = []) {\n Object.entries(object).forEach(([key, value]) => {\n if (!shouldSkipPaths || shouldSkipPaths && !shouldSkipPaths([...parentKeys, key])) {\n if (value !== undefined && value !== null) {\n if (typeof value === 'object' && Object.keys(value).length > 0) {\n recurse(value, [...parentKeys, key], Array.isArray(value) ? [...arrayKeys, key] : arrayKeys);\n } else {\n callback([...parentKeys, key], value, arrayKeys);\n }\n }\n }\n });\n }\n recurse(obj);\n};\nconst getCssValue = (keys, value) => {\n if (typeof value === 'number') {\n if (['lineHeight', 'fontWeight', 'opacity', 'zIndex'].some(prop => keys.includes(prop))) {\n // CSS property that are unitless\n return value;\n }\n const lastKey = keys[keys.length - 1];\n if (lastKey.toLowerCase().includes('opacity')) {\n // opacity values are unitless\n return value;\n }\n return `${value}px`;\n }\n return value;\n};\n\n/**\n * a function that parse theme and return { css, vars }\n *\n * @param {Object} theme\n * @param {{\n * prefix?: string,\n * shouldSkipGeneratingVar?: (objectPathKeys: Array, value: string | number) => boolean\n * }} options.\n * `prefix`: The prefix of the generated CSS variables. This function does not change the value.\n *\n * @returns {{ css: Object, vars: Object }} `css` is the stylesheet, `vars` is an object to get css variable (same structure as theme).\n *\n * @example\n * const { css, vars } = parser({\n * fontSize: 12,\n * lineHeight: 1.2,\n * palette: { primary: { 500: 'var(--color)' } }\n * }, { prefix: 'foo' })\n *\n * console.log(css) // { '--foo-fontSize': '12px', '--foo-lineHeight': 1.2, '--foo-palette-primary-500': 'var(--color)' }\n * console.log(vars) // { fontSize: 'var(--foo-fontSize)', lineHeight: 'var(--foo-lineHeight)', palette: { primary: { 500: 'var(--foo-palette-primary-500)' } } }\n */\nexport default function cssVarsParser(theme, options) {\n const {\n prefix,\n shouldSkipGeneratingVar\n } = options || {};\n const css = {};\n const vars = {};\n const varsWithDefaults = {};\n walkObjectDeep(theme, (keys, value, arrayKeys) => {\n if (typeof value === 'string' || typeof value === 'number') {\n if (!shouldSkipGeneratingVar || !shouldSkipGeneratingVar(keys, value)) {\n // only create css & var if `shouldSkipGeneratingVar` return false\n const cssVar = `--${prefix ? `${prefix}-` : ''}${keys.join('-')}`;\n const resolvedValue = getCssValue(keys, value);\n Object.assign(css, {\n [cssVar]: resolvedValue\n });\n assignNestedKeys(vars, keys, `var(${cssVar})`, arrayKeys);\n assignNestedKeys(varsWithDefaults, keys, `var(${cssVar}, ${resolvedValue})`, arrayKeys);\n }\n }\n }, keys => keys[0] === 'vars' // skip 'vars/*' paths\n );\n return {\n css,\n vars,\n varsWithDefaults\n };\n}","import deepmerge from '@mui/utils/deepmerge';\nimport cssVarsParser from \"./cssVarsParser.js\";\nfunction prepareCssVars(theme, parserConfig = {}) {\n const {\n getSelector = defaultGetSelector,\n disableCssColorScheme,\n colorSchemeSelector: selector\n } = parserConfig;\n // @ts-ignore - ignore components do not exist\n const {\n colorSchemes = {},\n components,\n defaultColorScheme = 'light',\n ...otherTheme\n } = theme;\n const {\n vars: rootVars,\n css: rootCss,\n varsWithDefaults: rootVarsWithDefaults\n } = cssVarsParser(otherTheme, parserConfig);\n let themeVars = rootVarsWithDefaults;\n const colorSchemesMap = {};\n const {\n [defaultColorScheme]: defaultScheme,\n ...otherColorSchemes\n } = colorSchemes;\n Object.entries(otherColorSchemes || {}).forEach(([key, scheme]) => {\n const {\n vars,\n css,\n varsWithDefaults\n } = cssVarsParser(scheme, parserConfig);\n themeVars = deepmerge(themeVars, varsWithDefaults);\n colorSchemesMap[key] = {\n css,\n vars\n };\n });\n if (defaultScheme) {\n // default color scheme vars should be merged last to set as default\n const {\n css,\n vars,\n varsWithDefaults\n } = cssVarsParser(defaultScheme, parserConfig);\n themeVars = deepmerge(themeVars, varsWithDefaults);\n colorSchemesMap[defaultColorScheme] = {\n css,\n vars\n };\n }\n function defaultGetSelector(colorScheme, cssObject) {\n let rule = selector;\n if (selector === 'class') {\n rule = '.%s';\n }\n if (selector === 'data') {\n rule = '[data-%s]';\n }\n if (selector?.startsWith('data-') && !selector.includes('%s')) {\n // 'data-joy-color-scheme' -> '[data-joy-color-scheme=\"%s\"]'\n rule = `[${selector}=\"%s\"]`;\n }\n if (colorScheme) {\n if (rule === 'media') {\n if (theme.defaultColorScheme === colorScheme) {\n return ':root';\n }\n const mode = colorSchemes[colorScheme]?.palette?.mode || colorScheme;\n return {\n [`@media (prefers-color-scheme: ${mode})`]: {\n ':root': cssObject\n }\n };\n }\n if (rule) {\n if (theme.defaultColorScheme === colorScheme) {\n return `:root, ${rule.replace('%s', String(colorScheme))}`;\n }\n return rule.replace('%s', String(colorScheme));\n }\n }\n return ':root';\n }\n const generateThemeVars = () => {\n let vars = {\n ...rootVars\n };\n Object.entries(colorSchemesMap).forEach(([, {\n vars: schemeVars\n }]) => {\n vars = deepmerge(vars, schemeVars);\n });\n return vars;\n };\n const generateStyleSheets = () => {\n const stylesheets = [];\n const colorScheme = theme.defaultColorScheme || 'light';\n function insertStyleSheet(key, css) {\n if (Object.keys(css).length) {\n stylesheets.push(typeof key === 'string' ? {\n [key]: {\n ...css\n }\n } : key);\n }\n }\n insertStyleSheet(getSelector(undefined, {\n ...rootCss\n }), rootCss);\n const {\n [colorScheme]: defaultSchemeVal,\n ...other\n } = colorSchemesMap;\n if (defaultSchemeVal) {\n // default color scheme has to come before other color schemes\n const {\n css\n } = defaultSchemeVal;\n const cssColorSheme = colorSchemes[colorScheme]?.palette?.mode;\n const finalCss = !disableCssColorScheme && cssColorSheme ? {\n colorScheme: cssColorSheme,\n ...css\n } : {\n ...css\n };\n insertStyleSheet(getSelector(colorScheme, {\n ...finalCss\n }), finalCss);\n }\n Object.entries(other).forEach(([key, {\n css\n }]) => {\n const cssColorSheme = colorSchemes[key]?.palette?.mode;\n const finalCss = !disableCssColorScheme && cssColorSheme ? {\n colorScheme: cssColorSheme,\n ...css\n } : {\n ...css\n };\n insertStyleSheet(getSelector(key, {\n ...finalCss\n }), finalCss);\n });\n return stylesheets;\n };\n return {\n vars: themeVars,\n generateThemeVars,\n generateStyleSheets\n };\n}\nexport default prepareCssVars;","export default function createMixins(breakpoints, mixins) {\n return {\n toolbar: {\n minHeight: 56,\n [breakpoints.up('xs')]: {\n '@media (orientation: landscape)': {\n minHeight: 48\n }\n },\n [breakpoints.up('sm')]: {\n minHeight: 64\n }\n },\n ...mixins\n };\n}","import deepmerge from '@mui/utils/deepmerge';\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\nconst caseAllCaps = {\n textTransform: 'uppercase'\n};\nconst defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n\n/**\n * @see @link{https://m2.material.io/design/typography/the-type-system.html}\n * @see @link{https://m2.material.io/design/typography/understanding-typography.html}\n */\nexport default function createTypography(palette, typography) {\n const {\n fontFamily = defaultFontFamily,\n // The default font size of the Material Specification.\n fontSize = 14,\n // px\n fontWeightLight = 300,\n fontWeightRegular = 400,\n fontWeightMedium = 500,\n fontWeightBold = 700,\n // Tell MUI what's the font-size on the html element.\n // 16px is the default font-size used by browsers.\n htmlFontSize = 16,\n // Apply the CSS properties to all the variants.\n allVariants,\n pxToRem: pxToRem2,\n ...other\n } = typeof typography === 'function' ? typography(palette) : typography;\n if (process.env.NODE_ENV !== 'production') {\n if (typeof fontSize !== 'number') {\n console.error('MUI: `fontSize` is required to be a number.');\n }\n if (typeof htmlFontSize !== 'number') {\n console.error('MUI: `htmlFontSize` is required to be a number.');\n }\n }\n const coef = fontSize / 14;\n const pxToRem = pxToRem2 || (size => `${size / htmlFontSize * coef}rem`);\n const buildVariant = (fontWeight, size, lineHeight, letterSpacing, casing) => ({\n fontFamily,\n fontWeight,\n fontSize: pxToRem(size),\n // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight,\n // The letter spacing was designed for the Roboto font-family. Using the same letter-spacing\n // across font-families can cause issues with the kerning.\n ...(fontFamily === defaultFontFamily ? {\n letterSpacing: `${round(letterSpacing / size)}em`\n } : {}),\n ...casing,\n ...allVariants\n });\n const variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps),\n // TODO v6: Remove handling of 'inherit' variant from the theme as it is already handled in Material UI's Typography component. Also, remember to remove the associated types.\n inherit: {\n fontFamily: 'inherit',\n fontWeight: 'inherit',\n fontSize: 'inherit',\n lineHeight: 'inherit',\n letterSpacing: 'inherit'\n }\n };\n return deepmerge({\n htmlFontSize,\n pxToRem,\n fontFamily,\n fontSize,\n fontWeightLight,\n fontWeightRegular,\n fontWeightMedium,\n fontWeightBold,\n ...variants\n }, other, {\n clone: false // No need to clone deep\n });\n}","const shadowKeyUmbraOpacity = 0.2;\nconst shadowKeyPenumbraOpacity = 0.14;\nconst shadowAmbientShadowOpacity = 0.12;\nfunction createShadow(...px) {\n return [`${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`, `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`, `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`].join(',');\n}\n\n// Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\nconst shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport const easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n};\n\n// Follow https://m2.material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\nexport const duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\nfunction formatMs(milliseconds) {\n return `${Math.round(milliseconds)}ms`;\n}\nfunction getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n const constant = height / 36;\n\n // https://www.desmos.com/calculator/vbrp3ggqet\n return Math.min(Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10), 3000);\n}\nexport default function createTransitions(inputTransitions) {\n const mergedEasing = {\n ...easing,\n ...inputTransitions.easing\n };\n const mergedDuration = {\n ...duration,\n ...inputTransitions.duration\n };\n const create = (props = ['all'], options = {}) => {\n const {\n duration: durationOption = mergedDuration.standard,\n easing: easingOption = mergedEasing.easeInOut,\n delay = 0,\n ...other\n } = options;\n if (process.env.NODE_ENV !== 'production') {\n const isString = value => typeof value === 'string';\n const isNumber = value => !Number.isNaN(parseFloat(value));\n if (!isString(props) && !Array.isArray(props)) {\n console.error('MUI: Argument \"props\" must be a string or Array.');\n }\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(`MUI: Argument \"duration\" must be a number or a string but found ${durationOption}.`);\n }\n if (!isString(easingOption)) {\n console.error('MUI: Argument \"easing\" must be a string.');\n }\n if (!isNumber(delay) && !isString(delay)) {\n console.error('MUI: Argument \"delay\" must be a number or a string.');\n }\n if (typeof options !== 'object') {\n console.error(['MUI: Secong argument of transition.create must be an object.', \"Arguments should be either `create('prop1', options)` or `create(['prop1', 'prop2'], options)`\"].join('\\n'));\n }\n if (Object.keys(other).length !== 0) {\n console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(',')}].`);\n }\n }\n return (Array.isArray(props) ? props : [props]).map(animatedProp => `${animatedProp} ${typeof durationOption === 'string' ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === 'string' ? delay : formatMs(delay)}`).join(',');\n };\n return {\n getAutoHeightDuration,\n create,\n ...inputTransitions,\n easing: mergedEasing,\n duration: mergedDuration\n };\n}","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nconst zIndex = {\n mobileStepper: 1000,\n fab: 1050,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nexport default zIndex;","/* eslint-disable import/prefer-default-export */\nimport { isPlainObject } from '@mui/utils/deepmerge';\nfunction isSerializable(val) {\n return isPlainObject(val) || typeof val === 'undefined' || typeof val === 'string' || typeof val === 'boolean' || typeof val === 'number' || Array.isArray(val);\n}\n\n/**\n * `baseTheme` usually comes from `createTheme()` or `extendTheme()`.\n *\n * This function is intended to be used with zero-runtime CSS-in-JS like Pigment CSS\n * For example, in a Next.js project:\n *\n * ```js\n * // next.config.js\n * const { extendTheme } = require('@mui/material/styles');\n *\n * const theme = extendTheme();\n * // `.toRuntimeSource` is Pigment CSS specific to create a theme that is available at runtime.\n * theme.toRuntimeSource = stringifyTheme;\n *\n * module.exports = withPigment({\n * theme,\n * });\n * ```\n */\nexport function stringifyTheme(baseTheme = {}) {\n const serializableTheme = {\n ...baseTheme\n };\n function serializeTheme(object) {\n const array = Object.entries(object);\n // eslint-disable-next-line no-plusplus\n for (let index = 0; index < array.length; index++) {\n const [key, value] = array[index];\n if (!isSerializable(value) || key.startsWith('unstable_')) {\n delete object[key];\n } else if (isPlainObject(value)) {\n object[key] = {\n ...value\n };\n serializeTheme(object[key]);\n }\n }\n }\n serializeTheme(serializableTheme);\n return `import { unstable_createBreakpoints as createBreakpoints, createTransitions } from '@mui/material/styles';\n\nconst theme = ${JSON.stringify(serializableTheme, null, 2)};\n\ntheme.breakpoints = createBreakpoints(theme.breakpoints || {});\ntheme.transitions = createTransitions(theme.transitions || {});\n\nexport default theme;`;\n}","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nimport deepmerge from '@mui/utils/deepmerge';\nimport styleFunctionSx, { unstable_defaultSxConfig as defaultSxConfig } from '@mui/system/styleFunctionSx';\nimport systemCreateTheme from '@mui/system/createTheme';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport createMixins from \"./createMixins.js\";\nimport createPalette from \"./createPalette.js\";\nimport createTypography from \"./createTypography.js\";\nimport shadows from \"./shadows.js\";\nimport createTransitions from \"./createTransitions.js\";\nimport zIndex from \"./zIndex.js\";\nimport { stringifyTheme } from \"./stringifyTheme.js\";\nfunction createThemeNoVars(options = {}, ...args) {\n const {\n breakpoints: breakpointsInput,\n mixins: mixinsInput = {},\n spacing: spacingInput,\n palette: paletteInput = {},\n transitions: transitionsInput = {},\n typography: typographyInput = {},\n shape: shapeInput,\n ...other\n } = options;\n if (options.vars) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'MUI: `vars` is a private field used for CSS variables support.\\n' + 'Please use another name.' : _formatMuiErrorMessage(20));\n }\n const palette = createPalette(paletteInput);\n const systemTheme = systemCreateTheme(options);\n let muiTheme = deepmerge(systemTheme, {\n mixins: createMixins(systemTheme.breakpoints, mixinsInput),\n palette,\n // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol.\n shadows: shadows.slice(),\n typography: createTypography(palette, typographyInput),\n transitions: createTransitions(transitionsInput),\n zIndex: {\n ...zIndex\n }\n });\n muiTheme = deepmerge(muiTheme, other);\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n if (process.env.NODE_ENV !== 'production') {\n // TODO v6: Refactor to use globalStateClassesMapping from @mui/utils once `readOnly` state class is used in Rating component.\n const stateClasses = ['active', 'checked', 'completed', 'disabled', 'error', 'expanded', 'focused', 'focusVisible', 'required', 'selected'];\n const traverse = (node, component) => {\n let key;\n\n // eslint-disable-next-line guard-for-in\n for (key in node) {\n const child = node[key];\n if (stateClasses.includes(key) && Object.keys(child).length > 0) {\n if (process.env.NODE_ENV !== 'production') {\n const stateClass = generateUtilityClass('', key);\n console.error([`MUI: The \\`${component}\\` component increases ` + `the CSS specificity of the \\`${key}\\` internal state.`, 'You can not override it like this: ', JSON.stringify(node, null, 2), '', `Instead, you need to use the '&.${stateClass}' syntax:`, JSON.stringify({\n root: {\n [`&.${stateClass}`]: child\n }\n }, null, 2), '', 'https://mui.com/r/state-classes-guide'].join('\\n'));\n }\n // Remove the style to prevent global conflicts.\n node[key] = {};\n }\n }\n };\n Object.keys(muiTheme.components).forEach(component => {\n const styleOverrides = muiTheme.components[component].styleOverrides;\n if (styleOverrides && component.startsWith('Mui')) {\n traverse(styleOverrides, component);\n }\n });\n }\n muiTheme.unstable_sxConfig = {\n ...defaultSxConfig,\n ...other?.unstable_sxConfig\n };\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n muiTheme.toRuntimeSource = stringifyTheme; // for Pigment CSS integration\n\n return muiTheme;\n}\nlet warnedOnce = false;\nexport function createMuiTheme(...args) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['MUI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@mui/material/styles'`\"].join('\\n'));\n }\n }\n return createThemeNoVars(...args);\n}\nexport default createThemeNoVars;","// Inspired by https://github.com/material-components/material-components-ios/blob/bca36107405594d5b7b16265a5b0ed698f85a5ee/components/Elevation/src/UIColor%2BMaterialElevation.m#L61\nexport default function getOverlayAlpha(elevation) {\n let alphaValue;\n if (elevation < 1) {\n alphaValue = 5.11916 * elevation ** 2;\n } else {\n alphaValue = 4.5 * Math.log(elevation + 1) + 2;\n }\n return Math.round(alphaValue * 10) / 1000;\n}","import createPalette from \"./createPalette.js\";\nimport getOverlayAlpha from \"./getOverlayAlpha.js\";\nconst defaultDarkOverlays = [...Array(25)].map((_, index) => {\n if (index === 0) {\n return 'none';\n }\n const overlay = getOverlayAlpha(index);\n return `linear-gradient(rgba(255 255 255 / ${overlay}), rgba(255 255 255 / ${overlay}))`;\n});\nexport function getOpacity(mode) {\n return {\n inputPlaceholder: mode === 'dark' ? 0.5 : 0.42,\n inputUnderline: mode === 'dark' ? 0.7 : 0.42,\n switchTrackDisabled: mode === 'dark' ? 0.2 : 0.12,\n switchTrack: mode === 'dark' ? 0.3 : 0.38\n };\n}\nexport function getOverlays(mode) {\n return mode === 'dark' ? defaultDarkOverlays : [];\n}\nexport default function createColorScheme(options) {\n const {\n palette: paletteInput = {\n mode: 'light'\n },\n // need to cast to avoid module augmentation test\n opacity,\n overlays,\n ...rest\n } = options;\n const palette = createPalette(paletteInput);\n return {\n palette,\n opacity: {\n ...getOpacity(palette.mode),\n ...opacity\n },\n overlays: overlays || getOverlays(palette.mode),\n ...rest\n };\n}","export default function shouldSkipGeneratingVar(keys) {\n return !!keys[0].match(/(cssVarPrefix|colorSchemeSelector|rootSelector|typography|mixins|breakpoints|direction|transitions)/) || !!keys[0].match(/sxConfig$/) ||\n // ends with sxConfig\n keys[0] === 'palette' && !!keys[1]?.match(/(mode|contrastThreshold|tonalOffset)/);\n}","/**\n * @internal These variables should not appear in the :root stylesheet when the `defaultColorScheme=\"dark\"`\n */\nconst excludeVariablesFromRoot = cssVarPrefix => [...[...Array(25)].map((_, index) => `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}overlays-${index}`), `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}palette-AppBar-darkBg`, `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}palette-AppBar-darkColor`];\nexport default excludeVariablesFromRoot;","import excludeVariablesFromRoot from \"./excludeVariablesFromRoot.js\";\nexport default theme => (colorScheme, css) => {\n const root = theme.rootSelector || ':root';\n const selector = theme.colorSchemeSelector;\n let rule = selector;\n if (selector === 'class') {\n rule = '.%s';\n }\n if (selector === 'data') {\n rule = '[data-%s]';\n }\n if (selector?.startsWith('data-') && !selector.includes('%s')) {\n // 'data-mui-color-scheme' -> '[data-mui-color-scheme=\"%s\"]'\n rule = `[${selector}=\"%s\"]`;\n }\n if (theme.defaultColorScheme === colorScheme) {\n if (colorScheme === 'dark') {\n const excludedVariables = {};\n excludeVariablesFromRoot(theme.cssVarPrefix).forEach(cssVar => {\n excludedVariables[cssVar] = css[cssVar];\n delete css[cssVar];\n });\n if (rule === 'media') {\n return {\n [root]: css,\n [`@media (prefers-color-scheme: dark)`]: {\n [root]: excludedVariables\n }\n };\n }\n if (rule) {\n return {\n [rule.replace('%s', colorScheme)]: excludedVariables,\n [`${root}, ${rule.replace('%s', colorScheme)}`]: css\n };\n }\n return {\n [root]: {\n ...css,\n ...excludedVariables\n }\n };\n }\n if (rule && rule !== 'media') {\n return `${root}, ${rule.replace('%s', String(colorScheme))}`;\n }\n } else if (colorScheme) {\n if (rule === 'media') {\n return {\n [`@media (prefers-color-scheme: ${String(colorScheme)})`]: {\n [root]: css\n }\n };\n }\n if (rule) {\n return rule.replace('%s', String(colorScheme));\n }\n }\n return root;\n};","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nimport deepmerge from '@mui/utils/deepmerge';\nimport { unstable_createGetCssVar as systemCreateGetCssVar, createSpacing } from '@mui/system';\nimport { createUnarySpacing } from '@mui/system/spacing';\nimport { prepareCssVars, prepareTypographyVars, createGetColorSchemeSelector } from '@mui/system/cssVars';\nimport styleFunctionSx, { unstable_defaultSxConfig as defaultSxConfig } from '@mui/system/styleFunctionSx';\nimport { private_safeColorChannel as safeColorChannel, private_safeAlpha as safeAlpha, private_safeDarken as safeDarken, private_safeLighten as safeLighten, private_safeEmphasize as safeEmphasize, hslToRgb } from '@mui/system/colorManipulator';\nimport createThemeNoVars from \"./createThemeNoVars.js\";\nimport createColorScheme, { getOpacity, getOverlays } from \"./createColorScheme.js\";\nimport defaultShouldSkipGeneratingVar from \"./shouldSkipGeneratingVar.js\";\nimport defaultGetSelector from \"./createGetSelector.js\";\nimport { stringifyTheme } from \"./stringifyTheme.js\";\nfunction assignNode(obj, keys) {\n keys.forEach(k => {\n if (!obj[k]) {\n obj[k] = {};\n }\n });\n}\nfunction setColor(obj, key, defaultValue) {\n if (!obj[key] && defaultValue) {\n obj[key] = defaultValue;\n }\n}\nfunction toRgb(color) {\n if (!color || !color.startsWith('hsl')) {\n return color;\n }\n return hslToRgb(color);\n}\nfunction setColorChannel(obj, key) {\n if (!(`${key}Channel` in obj)) {\n // custom channel token is not provided, generate one.\n // if channel token can't be generated, show a warning.\n obj[`${key}Channel`] = safeColorChannel(toRgb(obj[key]), `MUI: Can't create \\`palette.${key}Channel\\` because \\`palette.${key}\\` is not one of these formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` + '\\n' + `To suppress this warning, you need to explicitly provide the \\`palette.${key}Channel\\` as a string (in rgb format, for example \"12 12 12\") or undefined if you want to remove the channel token.`);\n }\n}\nfunction getSpacingVal(spacingInput) {\n if (typeof spacingInput === 'number') {\n return `${spacingInput}px`;\n }\n if (typeof spacingInput === 'string' || typeof spacingInput === 'function' || Array.isArray(spacingInput)) {\n return spacingInput;\n }\n return '8px';\n}\nconst silent = fn => {\n try {\n return fn();\n } catch (error) {\n // ignore error\n }\n return undefined;\n};\nexport const createGetCssVar = (cssVarPrefix = 'mui') => systemCreateGetCssVar(cssVarPrefix);\nfunction attachColorScheme(colorSchemes, scheme, restTheme, colorScheme) {\n if (!scheme) {\n return undefined;\n }\n scheme = scheme === true ? {} : scheme;\n const mode = colorScheme === 'dark' ? 'dark' : 'light';\n if (!restTheme) {\n colorSchemes[colorScheme] = createColorScheme({\n ...scheme,\n palette: {\n mode,\n ...scheme?.palette\n }\n });\n return undefined;\n }\n const {\n palette,\n ...muiTheme\n } = createThemeNoVars({\n ...restTheme,\n palette: {\n mode,\n ...scheme?.palette\n }\n });\n colorSchemes[colorScheme] = {\n ...scheme,\n palette,\n opacity: {\n ...getOpacity(mode),\n ...scheme?.opacity\n },\n overlays: scheme?.overlays || getOverlays(mode)\n };\n return muiTheme;\n}\n\n/**\n * A default `createThemeWithVars` comes with a single color scheme, either `light` or `dark` based on the `defaultColorScheme`.\n * This is better suited for apps that only need a single color scheme.\n *\n * To enable built-in `light` and `dark` color schemes, either:\n * 1. provide a `colorSchemeSelector` to define how the color schemes will change.\n * 2. provide `colorSchemes.dark` will set `colorSchemeSelector: 'media'` by default.\n */\nexport default function createThemeWithVars(options = {}, ...args) {\n const {\n colorSchemes: colorSchemesInput = {\n light: true\n },\n defaultColorScheme: defaultColorSchemeInput,\n disableCssColorScheme = false,\n cssVarPrefix = 'mui',\n shouldSkipGeneratingVar = defaultShouldSkipGeneratingVar,\n colorSchemeSelector: selector = colorSchemesInput.light && colorSchemesInput.dark ? 'media' : undefined,\n rootSelector = ':root',\n ...input\n } = options;\n const firstColorScheme = Object.keys(colorSchemesInput)[0];\n const defaultColorScheme = defaultColorSchemeInput || (colorSchemesInput.light && firstColorScheme !== 'light' ? 'light' : firstColorScheme);\n const getCssVar = createGetCssVar(cssVarPrefix);\n const {\n [defaultColorScheme]: defaultSchemeInput,\n light: builtInLight,\n dark: builtInDark,\n ...customColorSchemes\n } = colorSchemesInput;\n const colorSchemes = {\n ...customColorSchemes\n };\n let defaultScheme = defaultSchemeInput;\n\n // For built-in light and dark color schemes, ensure that the value is valid if they are the default color scheme.\n if (defaultColorScheme === 'dark' && !('dark' in colorSchemesInput) || defaultColorScheme === 'light' && !('light' in colorSchemesInput)) {\n defaultScheme = true;\n }\n if (!defaultScheme) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The \\`colorSchemes.${defaultColorScheme}\\` option is either missing or invalid.` : _formatMuiErrorMessage(21, defaultColorScheme));\n }\n\n // Create the palette for the default color scheme, either `light`, `dark`, or custom color scheme.\n const muiTheme = attachColorScheme(colorSchemes, defaultScheme, input, defaultColorScheme);\n if (builtInLight && !colorSchemes.light) {\n attachColorScheme(colorSchemes, builtInLight, undefined, 'light');\n }\n if (builtInDark && !colorSchemes.dark) {\n attachColorScheme(colorSchemes, builtInDark, undefined, 'dark');\n }\n let theme = {\n defaultColorScheme,\n ...muiTheme,\n cssVarPrefix,\n colorSchemeSelector: selector,\n rootSelector,\n getCssVar,\n colorSchemes,\n font: {\n ...prepareTypographyVars(muiTheme.typography),\n ...muiTheme.font\n },\n spacing: getSpacingVal(input.spacing)\n };\n Object.keys(theme.colorSchemes).forEach(key => {\n const palette = theme.colorSchemes[key].palette;\n const setCssVarColor = cssVar => {\n const tokens = cssVar.split('-');\n const color = tokens[1];\n const colorToken = tokens[2];\n return getCssVar(cssVar, palette[color][colorToken]);\n };\n\n // attach black & white channels to common node\n if (palette.mode === 'light') {\n setColor(palette.common, 'background', '#fff');\n setColor(palette.common, 'onBackground', '#000');\n }\n if (palette.mode === 'dark') {\n setColor(palette.common, 'background', '#000');\n setColor(palette.common, 'onBackground', '#fff');\n }\n\n // assign component variables\n assignNode(palette, ['Alert', 'AppBar', 'Avatar', 'Button', 'Chip', 'FilledInput', 'LinearProgress', 'Skeleton', 'Slider', 'SnackbarContent', 'SpeedDialAction', 'StepConnector', 'StepContent', 'Switch', 'TableCell', 'Tooltip']);\n if (palette.mode === 'light') {\n setColor(palette.Alert, 'errorColor', safeDarken(palette.error.light, 0.6));\n setColor(palette.Alert, 'infoColor', safeDarken(palette.info.light, 0.6));\n setColor(palette.Alert, 'successColor', safeDarken(palette.success.light, 0.6));\n setColor(palette.Alert, 'warningColor', safeDarken(palette.warning.light, 0.6));\n setColor(palette.Alert, 'errorFilledBg', setCssVarColor('palette-error-main'));\n setColor(palette.Alert, 'infoFilledBg', setCssVarColor('palette-info-main'));\n setColor(palette.Alert, 'successFilledBg', setCssVarColor('palette-success-main'));\n setColor(palette.Alert, 'warningFilledBg', setCssVarColor('palette-warning-main'));\n setColor(palette.Alert, 'errorFilledColor', silent(() => palette.getContrastText(palette.error.main)));\n setColor(palette.Alert, 'infoFilledColor', silent(() => palette.getContrastText(palette.info.main)));\n setColor(palette.Alert, 'successFilledColor', silent(() => palette.getContrastText(palette.success.main)));\n setColor(palette.Alert, 'warningFilledColor', silent(() => palette.getContrastText(palette.warning.main)));\n setColor(palette.Alert, 'errorStandardBg', safeLighten(palette.error.light, 0.9));\n setColor(palette.Alert, 'infoStandardBg', safeLighten(palette.info.light, 0.9));\n setColor(palette.Alert, 'successStandardBg', safeLighten(palette.success.light, 0.9));\n setColor(palette.Alert, 'warningStandardBg', safeLighten(palette.warning.light, 0.9));\n setColor(palette.Alert, 'errorIconColor', setCssVarColor('palette-error-main'));\n setColor(palette.Alert, 'infoIconColor', setCssVarColor('palette-info-main'));\n setColor(palette.Alert, 'successIconColor', setCssVarColor('palette-success-main'));\n setColor(palette.Alert, 'warningIconColor', setCssVarColor('palette-warning-main'));\n setColor(palette.AppBar, 'defaultBg', setCssVarColor('palette-grey-100'));\n setColor(palette.Avatar, 'defaultBg', setCssVarColor('palette-grey-400'));\n setColor(palette.Button, 'inheritContainedBg', setCssVarColor('palette-grey-300'));\n setColor(palette.Button, 'inheritContainedHoverBg', setCssVarColor('palette-grey-A100'));\n setColor(palette.Chip, 'defaultBorder', setCssVarColor('palette-grey-400'));\n setColor(palette.Chip, 'defaultAvatarColor', setCssVarColor('palette-grey-700'));\n setColor(palette.Chip, 'defaultIconColor', setCssVarColor('palette-grey-700'));\n setColor(palette.FilledInput, 'bg', 'rgba(0, 0, 0, 0.06)');\n setColor(palette.FilledInput, 'hoverBg', 'rgba(0, 0, 0, 0.09)');\n setColor(palette.FilledInput, 'disabledBg', 'rgba(0, 0, 0, 0.12)');\n setColor(palette.LinearProgress, 'primaryBg', safeLighten(palette.primary.main, 0.62));\n setColor(palette.LinearProgress, 'secondaryBg', safeLighten(palette.secondary.main, 0.62));\n setColor(palette.LinearProgress, 'errorBg', safeLighten(palette.error.main, 0.62));\n setColor(palette.LinearProgress, 'infoBg', safeLighten(palette.info.main, 0.62));\n setColor(palette.LinearProgress, 'successBg', safeLighten(palette.success.main, 0.62));\n setColor(palette.LinearProgress, 'warningBg', safeLighten(palette.warning.main, 0.62));\n setColor(palette.Skeleton, 'bg', `rgba(${setCssVarColor('palette-text-primaryChannel')} / 0.11)`);\n setColor(palette.Slider, 'primaryTrack', safeLighten(palette.primary.main, 0.62));\n setColor(palette.Slider, 'secondaryTrack', safeLighten(palette.secondary.main, 0.62));\n setColor(palette.Slider, 'errorTrack', safeLighten(palette.error.main, 0.62));\n setColor(palette.Slider, 'infoTrack', safeLighten(palette.info.main, 0.62));\n setColor(palette.Slider, 'successTrack', safeLighten(palette.success.main, 0.62));\n setColor(palette.Slider, 'warningTrack', safeLighten(palette.warning.main, 0.62));\n const snackbarContentBackground = safeEmphasize(palette.background.default, 0.8);\n setColor(palette.SnackbarContent, 'bg', snackbarContentBackground);\n setColor(palette.SnackbarContent, 'color', silent(() => palette.getContrastText(snackbarContentBackground)));\n setColor(palette.SpeedDialAction, 'fabHoverBg', safeEmphasize(palette.background.paper, 0.15));\n setColor(palette.StepConnector, 'border', setCssVarColor('palette-grey-400'));\n setColor(palette.StepContent, 'border', setCssVarColor('palette-grey-400'));\n setColor(palette.Switch, 'defaultColor', setCssVarColor('palette-common-white'));\n setColor(palette.Switch, 'defaultDisabledColor', setCssVarColor('palette-grey-100'));\n setColor(palette.Switch, 'primaryDisabledColor', safeLighten(palette.primary.main, 0.62));\n setColor(palette.Switch, 'secondaryDisabledColor', safeLighten(palette.secondary.main, 0.62));\n setColor(palette.Switch, 'errorDisabledColor', safeLighten(palette.error.main, 0.62));\n setColor(palette.Switch, 'infoDisabledColor', safeLighten(palette.info.main, 0.62));\n setColor(palette.Switch, 'successDisabledColor', safeLighten(palette.success.main, 0.62));\n setColor(palette.Switch, 'warningDisabledColor', safeLighten(palette.warning.main, 0.62));\n setColor(palette.TableCell, 'border', safeLighten(safeAlpha(palette.divider, 1), 0.88));\n setColor(palette.Tooltip, 'bg', safeAlpha(palette.grey[700], 0.92));\n }\n if (palette.mode === 'dark') {\n setColor(palette.Alert, 'errorColor', safeLighten(palette.error.light, 0.6));\n setColor(palette.Alert, 'infoColor', safeLighten(palette.info.light, 0.6));\n setColor(palette.Alert, 'successColor', safeLighten(palette.success.light, 0.6));\n setColor(palette.Alert, 'warningColor', safeLighten(palette.warning.light, 0.6));\n setColor(palette.Alert, 'errorFilledBg', setCssVarColor('palette-error-dark'));\n setColor(palette.Alert, 'infoFilledBg', setCssVarColor('palette-info-dark'));\n setColor(palette.Alert, 'successFilledBg', setCssVarColor('palette-success-dark'));\n setColor(palette.Alert, 'warningFilledBg', setCssVarColor('palette-warning-dark'));\n setColor(palette.Alert, 'errorFilledColor', silent(() => palette.getContrastText(palette.error.dark)));\n setColor(palette.Alert, 'infoFilledColor', silent(() => palette.getContrastText(palette.info.dark)));\n setColor(palette.Alert, 'successFilledColor', silent(() => palette.getContrastText(palette.success.dark)));\n setColor(palette.Alert, 'warningFilledColor', silent(() => palette.getContrastText(palette.warning.dark)));\n setColor(palette.Alert, 'errorStandardBg', safeDarken(palette.error.light, 0.9));\n setColor(palette.Alert, 'infoStandardBg', safeDarken(palette.info.light, 0.9));\n setColor(palette.Alert, 'successStandardBg', safeDarken(palette.success.light, 0.9));\n setColor(palette.Alert, 'warningStandardBg', safeDarken(palette.warning.light, 0.9));\n setColor(palette.Alert, 'errorIconColor', setCssVarColor('palette-error-main'));\n setColor(palette.Alert, 'infoIconColor', setCssVarColor('palette-info-main'));\n setColor(palette.Alert, 'successIconColor', setCssVarColor('palette-success-main'));\n setColor(palette.Alert, 'warningIconColor', setCssVarColor('palette-warning-main'));\n setColor(palette.AppBar, 'defaultBg', setCssVarColor('palette-grey-900'));\n setColor(palette.AppBar, 'darkBg', setCssVarColor('palette-background-paper')); // specific for dark mode\n setColor(palette.AppBar, 'darkColor', setCssVarColor('palette-text-primary')); // specific for dark mode\n setColor(palette.Avatar, 'defaultBg', setCssVarColor('palette-grey-600'));\n setColor(palette.Button, 'inheritContainedBg', setCssVarColor('palette-grey-800'));\n setColor(palette.Button, 'inheritContainedHoverBg', setCssVarColor('palette-grey-700'));\n setColor(palette.Chip, 'defaultBorder', setCssVarColor('palette-grey-700'));\n setColor(palette.Chip, 'defaultAvatarColor', setCssVarColor('palette-grey-300'));\n setColor(palette.Chip, 'defaultIconColor', setCssVarColor('palette-grey-300'));\n setColor(palette.FilledInput, 'bg', 'rgba(255, 255, 255, 0.09)');\n setColor(palette.FilledInput, 'hoverBg', 'rgba(255, 255, 255, 0.13)');\n setColor(palette.FilledInput, 'disabledBg', 'rgba(255, 255, 255, 0.12)');\n setColor(palette.LinearProgress, 'primaryBg', safeDarken(palette.primary.main, 0.5));\n setColor(palette.LinearProgress, 'secondaryBg', safeDarken(palette.secondary.main, 0.5));\n setColor(palette.LinearProgress, 'errorBg', safeDarken(palette.error.main, 0.5));\n setColor(palette.LinearProgress, 'infoBg', safeDarken(palette.info.main, 0.5));\n setColor(palette.LinearProgress, 'successBg', safeDarken(palette.success.main, 0.5));\n setColor(palette.LinearProgress, 'warningBg', safeDarken(palette.warning.main, 0.5));\n setColor(palette.Skeleton, 'bg', `rgba(${setCssVarColor('palette-text-primaryChannel')} / 0.13)`);\n setColor(palette.Slider, 'primaryTrack', safeDarken(palette.primary.main, 0.5));\n setColor(palette.Slider, 'secondaryTrack', safeDarken(palette.secondary.main, 0.5));\n setColor(palette.Slider, 'errorTrack', safeDarken(palette.error.main, 0.5));\n setColor(palette.Slider, 'infoTrack', safeDarken(palette.info.main, 0.5));\n setColor(palette.Slider, 'successTrack', safeDarken(palette.success.main, 0.5));\n setColor(palette.Slider, 'warningTrack', safeDarken(palette.warning.main, 0.5));\n const snackbarContentBackground = safeEmphasize(palette.background.default, 0.98);\n setColor(palette.SnackbarContent, 'bg', snackbarContentBackground);\n setColor(palette.SnackbarContent, 'color', silent(() => palette.getContrastText(snackbarContentBackground)));\n setColor(palette.SpeedDialAction, 'fabHoverBg', safeEmphasize(palette.background.paper, 0.15));\n setColor(palette.StepConnector, 'border', setCssVarColor('palette-grey-600'));\n setColor(palette.StepContent, 'border', setCssVarColor('palette-grey-600'));\n setColor(palette.Switch, 'defaultColor', setCssVarColor('palette-grey-300'));\n setColor(palette.Switch, 'defaultDisabledColor', setCssVarColor('palette-grey-600'));\n setColor(palette.Switch, 'primaryDisabledColor', safeDarken(palette.primary.main, 0.55));\n setColor(palette.Switch, 'secondaryDisabledColor', safeDarken(palette.secondary.main, 0.55));\n setColor(palette.Switch, 'errorDisabledColor', safeDarken(palette.error.main, 0.55));\n setColor(palette.Switch, 'infoDisabledColor', safeDarken(palette.info.main, 0.55));\n setColor(palette.Switch, 'successDisabledColor', safeDarken(palette.success.main, 0.55));\n setColor(palette.Switch, 'warningDisabledColor', safeDarken(palette.warning.main, 0.55));\n setColor(palette.TableCell, 'border', safeDarken(safeAlpha(palette.divider, 1), 0.68));\n setColor(palette.Tooltip, 'bg', safeAlpha(palette.grey[700], 0.92));\n }\n\n // MUI X - DataGrid needs this token.\n setColorChannel(palette.background, 'default');\n\n // added for consistency with the `background.default` token\n setColorChannel(palette.background, 'paper');\n setColorChannel(palette.common, 'background');\n setColorChannel(palette.common, 'onBackground');\n setColorChannel(palette, 'divider');\n Object.keys(palette).forEach(color => {\n const colors = palette[color];\n\n // The default palettes (primary, secondary, error, info, success, and warning) errors are handled by the above `createTheme(...)`.\n\n if (colors && typeof colors === 'object') {\n // Silent the error for custom palettes.\n if (colors.main) {\n setColor(palette[color], 'mainChannel', safeColorChannel(toRgb(colors.main)));\n }\n if (colors.light) {\n setColor(palette[color], 'lightChannel', safeColorChannel(toRgb(colors.light)));\n }\n if (colors.dark) {\n setColor(palette[color], 'darkChannel', safeColorChannel(toRgb(colors.dark)));\n }\n if (colors.contrastText) {\n setColor(palette[color], 'contrastTextChannel', safeColorChannel(toRgb(colors.contrastText)));\n }\n if (color === 'text') {\n // Text colors: text.primary, text.secondary\n setColorChannel(palette[color], 'primary');\n setColorChannel(palette[color], 'secondary');\n }\n if (color === 'action') {\n // Action colors: action.active, action.selected\n if (colors.active) {\n setColorChannel(palette[color], 'active');\n }\n if (colors.selected) {\n setColorChannel(palette[color], 'selected');\n }\n }\n }\n });\n });\n theme = args.reduce((acc, argument) => deepmerge(acc, argument), theme);\n const parserConfig = {\n prefix: cssVarPrefix,\n disableCssColorScheme,\n shouldSkipGeneratingVar,\n getSelector: defaultGetSelector(theme)\n };\n const {\n vars,\n generateThemeVars,\n generateStyleSheets\n } = prepareCssVars(theme, parserConfig);\n theme.vars = vars;\n Object.entries(theme.colorSchemes[theme.defaultColorScheme]).forEach(([key, value]) => {\n theme[key] = value;\n });\n theme.generateThemeVars = generateThemeVars;\n theme.generateStyleSheets = generateStyleSheets;\n theme.generateSpacing = function generateSpacing() {\n return createSpacing(input.spacing, createUnarySpacing(this));\n };\n theme.getColorSchemeSelector = createGetColorSchemeSelector(selector);\n theme.spacing = theme.generateSpacing();\n theme.shouldSkipGeneratingVar = shouldSkipGeneratingVar;\n theme.unstable_sxConfig = {\n ...defaultSxConfig,\n ...input?.unstable_sxConfig\n };\n theme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n theme.toRuntimeSource = stringifyTheme; // for Pigment CSS integration\n\n return theme;\n}","/* eslint-disable import/prefer-default-export */\nexport function createGetColorSchemeSelector(selector) {\n return function getColorSchemeSelector(colorScheme) {\n if (selector === 'media') {\n if (process.env.NODE_ENV !== 'production') {\n if (colorScheme !== 'light' && colorScheme !== 'dark') {\n console.error(`MUI: @media (prefers-color-scheme) supports only 'light' or 'dark', but receive '${colorScheme}'.`);\n }\n }\n return `@media (prefers-color-scheme: ${colorScheme})`;\n }\n if (selector) {\n if (selector.startsWith('data-') && !selector.includes('%s')) {\n return `[${selector}=\"${colorScheme}\"] &`;\n }\n if (selector === 'class') {\n return `.${colorScheme} &`;\n }\n if (selector === 'data') {\n return `[data-${colorScheme}] &`;\n }\n return `${selector.replace('%s', colorScheme)} &`;\n }\n return '&';\n };\n}","import createPalette from \"./createPalette.js\";\nimport createThemeWithVars from \"./createThemeWithVars.js\";\nimport createThemeNoVars from \"./createThemeNoVars.js\";\nexport { createMuiTheme } from \"./createThemeNoVars.js\";\n// eslint-disable-next-line consistent-return\nfunction attachColorScheme(theme, scheme, colorScheme) {\n if (!theme.colorSchemes) {\n return undefined;\n }\n if (colorScheme) {\n theme.colorSchemes[scheme] = {\n ...(colorScheme !== true && colorScheme),\n palette: createPalette({\n ...(colorScheme === true ? {} : colorScheme.palette),\n mode: scheme\n }) // cast type to skip module augmentation test\n };\n }\n}\n\n/**\n * Generate a theme base on the options received.\n * @param options Takes an incomplete theme object and adds the missing parts.\n * @param args Deep merge the arguments with the about to be returned theme.\n * @returns A complete, ready-to-use theme object.\n */\nexport default function createTheme(options = {},\n// cast type to skip module augmentation test\n...args) {\n const {\n palette,\n cssVariables = false,\n colorSchemes: initialColorSchemes = !palette ? {\n light: true\n } : undefined,\n defaultColorScheme: initialDefaultColorScheme = palette?.mode,\n ...rest\n } = options;\n const defaultColorSchemeInput = initialDefaultColorScheme || 'light';\n const defaultScheme = initialColorSchemes?.[defaultColorSchemeInput];\n const colorSchemesInput = {\n ...initialColorSchemes,\n ...(palette ? {\n [defaultColorSchemeInput]: {\n ...(typeof defaultScheme !== 'boolean' && defaultScheme),\n palette\n }\n } : undefined)\n };\n if (cssVariables === false) {\n if (!('colorSchemes' in options)) {\n // Behaves exactly as v5\n return createThemeNoVars(options, ...args);\n }\n let paletteOptions = palette;\n if (!('palette' in options)) {\n if (colorSchemesInput[defaultColorSchemeInput]) {\n if (colorSchemesInput[defaultColorSchemeInput] !== true) {\n paletteOptions = colorSchemesInput[defaultColorSchemeInput].palette;\n } else if (defaultColorSchemeInput === 'dark') {\n // @ts-ignore to prevent the module augmentation test from failing\n paletteOptions = {\n mode: 'dark'\n };\n }\n }\n }\n const theme = createThemeNoVars({\n ...options,\n palette: paletteOptions\n }, ...args);\n theme.defaultColorScheme = defaultColorSchemeInput;\n theme.colorSchemes = colorSchemesInput;\n if (theme.palette.mode === 'light') {\n theme.colorSchemes.light = {\n ...(colorSchemesInput.light !== true && colorSchemesInput.light),\n palette: theme.palette\n };\n attachColorScheme(theme, 'dark', colorSchemesInput.dark);\n }\n if (theme.palette.mode === 'dark') {\n theme.colorSchemes.dark = {\n ...(colorSchemesInput.dark !== true && colorSchemesInput.dark),\n palette: theme.palette\n };\n attachColorScheme(theme, 'light', colorSchemesInput.light);\n }\n return theme;\n }\n if (!palette && !('light' in colorSchemesInput) && defaultColorSchemeInput === 'light') {\n colorSchemesInput.light = true;\n }\n return createThemeWithVars({\n ...rest,\n colorSchemes: colorSchemesInput,\n defaultColorScheme: defaultColorSchemeInput,\n ...(typeof cssVariables !== 'boolean' && cssVariables)\n }, ...args);\n}","'use client';\n\nimport createTheme from \"./createTheme.js\";\nconst defaultTheme = createTheme();\nexport default defaultTheme;","export default '$$material';","// copied from @mui/system/createStyled\nfunction slotShouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nexport default slotShouldForwardProp;","import slotShouldForwardProp from \"./slotShouldForwardProp.js\";\nconst rootShouldForwardProp = prop => slotShouldForwardProp(prop) && prop !== 'classes';\nexport default rootShouldForwardProp;","'use client';\n\nimport createStyled from '@mui/system/createStyled';\nimport defaultTheme from \"./defaultTheme.js\";\nimport THEME_ID from \"./identifier.js\";\nimport rootShouldForwardProp from \"./rootShouldForwardProp.js\";\nexport { default as slotShouldForwardProp } from \"./slotShouldForwardProp.js\";\nexport { default as rootShouldForwardProp } from \"./rootShouldForwardProp.js\";\nconst styled = createStyled({\n themeId: THEME_ID,\n defaultTheme,\n rootShouldForwardProp\n});\nexport default styled;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport resolveProps from '@mui/utils/resolveProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PropsContext = /*#__PURE__*/React.createContext(undefined);\nfunction DefaultPropsProvider({\n value,\n children\n}) {\n return /*#__PURE__*/_jsx(PropsContext.Provider, {\n value: value,\n children: children\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? DefaultPropsProvider.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * @ignore\n */\n value: PropTypes.object\n} : void 0;\nfunction getThemeProps(params) {\n const {\n theme,\n name,\n props\n } = params;\n if (!theme || !theme.components || !theme.components[name]) {\n return props;\n }\n const config = theme.components[name];\n if (config.defaultProps) {\n // compatible with v5 signature\n return resolveProps(config.defaultProps, props);\n }\n if (!config.styleOverrides && !config.variants) {\n // v6 signature, no property 'defaultProps'\n return resolveProps(config, props);\n }\n return props;\n}\nexport function useDefaultProps({\n props,\n name\n}) {\n const ctx = React.useContext(PropsContext);\n return getThemeProps({\n props,\n name,\n theme: {\n components: ctx\n }\n });\n}\nexport default DefaultPropsProvider;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport SystemDefaultPropsProvider, { useDefaultProps as useSystemDefaultProps } from '@mui/system/DefaultPropsProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction DefaultPropsProvider(props) {\n return /*#__PURE__*/_jsx(SystemDefaultPropsProvider, {\n ...props\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? DefaultPropsProvider.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * @ignore\n */\n value: PropTypes.object.isRequired\n} : void 0;\nexport default DefaultPropsProvider;\nexport function useDefaultProps(params) {\n return useSystemDefaultProps(params);\n}","'use client';\n\nimport PropTypes from 'prop-types';\nimport { createContainer } from '@mui/system';\nimport capitalize from \"../utils/capitalize.js\";\nimport styled from \"../styles/styled.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nconst Container = createContainer({\n createStyledComponent: styled('div', {\n name: 'MuiContainer',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`maxWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fixed && styles.fixed, ownerState.disableGutters && styles.disableGutters];\n }\n }),\n useThemeProps: inProps => useDefaultProps({\n props: inProps,\n name: 'MuiContainer'\n })\n});\nprocess.env.NODE_ENV !== \"production\" ? Container.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the left and right padding is removed.\n * @default false\n */\n disableGutters: PropTypes.bool,\n /**\n * Set the max-width to match the min-width of the current breakpoint.\n * This is useful if you'd prefer to design for a fixed set of sizes\n * instead of trying to accommodate a fully fluid viewport.\n * It's fluid by default.\n * @default false\n */\n fixed: PropTypes.bool,\n /**\n * Determine the max-width of the container.\n * The container width grows with the size of the screen.\n * Set to `false` to disable `maxWidth`.\n * @default 'lg'\n */\n maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Container;","import { isPlainObject } from '@mui/utils/deepmerge';\nimport defaultSxConfig from \"./defaultSxConfig.js\";\nconst splitProps = props => {\n const result = {\n systemProps: {},\n otherProps: {}\n };\n const config = props?.theme?.unstable_sxConfig ?? defaultSxConfig;\n Object.keys(props).forEach(prop => {\n if (config[prop]) {\n result.systemProps[prop] = props[prop];\n } else {\n result.otherProps[prop] = props[prop];\n }\n });\n return result;\n};\nexport default function extendSxProp(props) {\n const {\n sx: inSx,\n ...other\n } = props;\n const {\n systemProps,\n otherProps\n } = splitProps(other);\n let finalSx;\n if (Array.isArray(inSx)) {\n finalSx = [systemProps, ...inSx];\n } else if (typeof inSx === 'function') {\n finalSx = (...args) => {\n const result = inSx(...args);\n if (!isPlainObject(result)) {\n return systemProps;\n }\n return {\n ...systemProps,\n ...result\n };\n };\n } else {\n finalSx = {\n ...systemProps,\n ...inSx\n };\n }\n return {\n ...otherProps,\n sx: finalSx\n };\n}","import generateUtilityClass from \"../generateUtilityClass/index.js\";\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n });\n return result;\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nconst boxClasses = generateUtilityClasses('MuiBox', ['root']);\nexport default boxClasses;","'use client';\n\nimport { createBox } from '@mui/system';\nimport PropTypes from 'prop-types';\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from \"../className/index.js\";\nimport { createTheme } from \"../styles/index.js\";\nimport THEME_ID from \"../styles/identifier.js\";\nimport boxClasses from \"./boxClasses.js\";\nconst defaultTheme = createTheme();\nconst Box = createBox({\n themeId: THEME_ID,\n defaultTheme,\n defaultClassName: boxClasses.root,\n generateClassName: ClassNameGenerator.generate\n});\nprocess.env.NODE_ENV !== \"production\" ? Box.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Box;","'use client';\n\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport styled from '@mui/styled-engine';\nimport styleFunctionSx, { extendSxProp } from \"../styleFunctionSx/index.js\";\nimport useTheme from \"../useTheme/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createBox(options = {}) {\n const {\n themeId,\n defaultTheme,\n defaultClassName = 'MuiBox-root',\n generateClassName\n } = options;\n const BoxRoot = styled('div', {\n shouldForwardProp: prop => prop !== 'theme' && prop !== 'sx' && prop !== 'as'\n })(styleFunctionSx);\n const Box = /*#__PURE__*/React.forwardRef(function Box(inProps, ref) {\n const theme = useTheme(defaultTheme);\n const {\n className,\n component = 'div',\n ...other\n } = extendSxProp(inProps);\n return /*#__PURE__*/_jsx(BoxRoot, {\n as: component,\n ref: ref,\n className: clsx(className, generateClassName ? generateClassName(defaultClassName) : defaultClassName),\n theme: themeId ? theme[themeId] || theme : theme,\n ...other\n });\n });\n return Box;\n}","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst RtlContext = /*#__PURE__*/React.createContext();\nfunction RtlProvider({\n value,\n ...props\n}) {\n return /*#__PURE__*/_jsx(RtlContext.Provider, {\n value: value ?? true,\n ...props\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? RtlProvider.propTypes = {\n children: PropTypes.node,\n value: PropTypes.bool\n} : void 0;\nexport const useRtl = () => {\n const value = React.useContext(RtlContext);\n return value ?? false;\n};\nexport default RtlProvider;","/**\n * TODO v5: consider making it private\n *\n * passes {value} to {ref}\n *\n * WARNING: Be sure to only call this inside a callback that is passed as a ref.\n * Otherwise, make sure to cleanup the previous {ref} if it changes. See\n * https://github.com/mui/material-ui/issues/13539\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","'use client';\n\nimport * as React from 'react';\nimport setRef from \"../setRef/index.js\";\nexport default function useForkRef(...refs) {\n /**\n * This will create a new function if the refs passed to this hook change and are all defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior.\n */\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return instance => {\n refs.forEach(ref => {\n setRef(ref, instance);\n });\n };\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler -- intentionally ignoring that the dependency array must be an array literal\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}","/**\n * Determines if a given element is a DOM element name (i.e. not a React component).\n */\nfunction isHostComponent(element) {\n return typeof element === 'string';\n}\nexport default isHostComponent;","import isHostComponent from \"../isHostComponent/index.js\";\n\n/**\n * Type of the ownerState based on the type of an element it applies to.\n * This resolves to the provided OwnerState for React components and `undefined` for host components.\n * Falls back to `OwnerState | undefined` when the exact type can't be determined in development time.\n */\n\n/**\n * Appends the ownerState object to the props, merging with the existing one if necessary.\n *\n * @param elementType Type of the element that owns the `existingProps`. If the element is a DOM node or undefined, `ownerState` is not applied.\n * @param otherProps Props of the element.\n * @param ownerState\n */\nfunction appendOwnerState(elementType, otherProps, ownerState) {\n if (elementType === undefined || isHostComponent(elementType)) {\n return otherProps;\n }\n return {\n ...otherProps,\n ownerState: {\n ...otherProps.ownerState,\n ...ownerState\n }\n };\n}\nexport default appendOwnerState;","/**\n * Extracts event handlers from a given object.\n * A prop is considered an event handler if it is a function and its name starts with `on`.\n *\n * @param object An object to extract event handlers from.\n * @param excludeKeys An array of keys to exclude from the returned object.\n */\nfunction extractEventHandlers(object, excludeKeys = []) {\n if (object === undefined) {\n return {};\n }\n const result = {};\n Object.keys(object).filter(prop => prop.match(/^on[A-Z]/) && typeof object[prop] === 'function' && !excludeKeys.includes(prop)).forEach(prop => {\n result[prop] = object[prop];\n });\n return result;\n}\nexport default extractEventHandlers;","/**\n * Removes event handlers from the given object.\n * A field is considered an event handler if it is a function with a name beginning with `on`.\n *\n * @param object Object to remove event handlers from.\n * @returns Object with event handlers removed.\n */\nfunction omitEventHandlers(object) {\n if (object === undefined) {\n return {};\n }\n const result = {};\n Object.keys(object).filter(prop => !(prop.match(/^on[A-Z]/) && typeof object[prop] === 'function')).forEach(prop => {\n result[prop] = object[prop];\n });\n return result;\n}\nexport default omitEventHandlers;","import clsx from 'clsx';\nimport extractEventHandlers from \"../extractEventHandlers/index.js\";\nimport omitEventHandlers from \"../omitEventHandlers/index.js\";\n/**\n * Merges the slot component internal props (usually coming from a hook)\n * with the externally provided ones.\n *\n * The merge order is (the latter overrides the former):\n * 1. The internal props (specified as a getter function to work with get*Props hook result)\n * 2. Additional props (specified internally on a Base UI component)\n * 3. External props specified on the owner component. These should only be used on a root slot.\n * 4. External props specified in the `slotProps.*` prop.\n * 5. The `className` prop - combined from all the above.\n * @param parameters\n * @returns\n */\nfunction mergeSlotProps(parameters) {\n const {\n getSlotProps,\n additionalProps,\n externalSlotProps,\n externalForwardedProps,\n className\n } = parameters;\n if (!getSlotProps) {\n // The simpler case - getSlotProps is not defined, so no internal event handlers are defined,\n // so we can simply merge all the props without having to worry about extracting event handlers.\n const joinedClasses = clsx(additionalProps?.className, className, externalForwardedProps?.className, externalSlotProps?.className);\n const mergedStyle = {\n ...additionalProps?.style,\n ...externalForwardedProps?.style,\n ...externalSlotProps?.style\n };\n const props = {\n ...additionalProps,\n ...externalForwardedProps,\n ...externalSlotProps\n };\n if (joinedClasses.length > 0) {\n props.className = joinedClasses;\n }\n if (Object.keys(mergedStyle).length > 0) {\n props.style = mergedStyle;\n }\n return {\n props,\n internalRef: undefined\n };\n }\n\n // In this case, getSlotProps is responsible for calling the external event handlers.\n // We don't need to include them in the merged props because of this.\n\n const eventHandlers = extractEventHandlers({\n ...externalForwardedProps,\n ...externalSlotProps\n });\n const componentsPropsWithoutEventHandlers = omitEventHandlers(externalSlotProps);\n const otherPropsWithoutEventHandlers = omitEventHandlers(externalForwardedProps);\n const internalSlotProps = getSlotProps(eventHandlers);\n\n // The order of classes is important here.\n // Emotion (that we use in libraries consuming Base UI) depends on this order\n // to properly override style. It requires the most important classes to be last\n // (see https://github.com/mui/material-ui/pull/33205) for the related discussion.\n const joinedClasses = clsx(internalSlotProps?.className, additionalProps?.className, className, externalForwardedProps?.className, externalSlotProps?.className);\n const mergedStyle = {\n ...internalSlotProps?.style,\n ...additionalProps?.style,\n ...externalForwardedProps?.style,\n ...externalSlotProps?.style\n };\n const props = {\n ...internalSlotProps,\n ...additionalProps,\n ...otherPropsWithoutEventHandlers,\n ...componentsPropsWithoutEventHandlers\n };\n if (joinedClasses.length > 0) {\n props.className = joinedClasses;\n }\n if (Object.keys(mergedStyle).length > 0) {\n props.style = mergedStyle;\n }\n return {\n props,\n internalRef: internalSlotProps.ref\n };\n}\nexport default mergeSlotProps;","/**\n * If `componentProps` is a function, calls it with the provided `ownerState`.\n * Otherwise, just returns `componentProps`.\n */\nfunction resolveComponentProps(componentProps, ownerState, slotState) {\n if (typeof componentProps === 'function') {\n return componentProps(ownerState, slotState);\n }\n return componentProps;\n}\nexport default resolveComponentProps;","'use client';\n\nimport useForkRef from \"../useForkRef/index.js\";\nimport appendOwnerState from \"../appendOwnerState/index.js\";\nimport mergeSlotProps from \"../mergeSlotProps/index.js\";\nimport resolveComponentProps from \"../resolveComponentProps/index.js\";\n/**\n * @ignore - do not document.\n * Builds the props to be passed into the slot of an unstyled component.\n * It merges the internal props of the component with the ones supplied by the user, allowing to customize the behavior.\n * If the slot component is not a host component, it also merges in the `ownerState`.\n *\n * @param parameters.getSlotProps - A function that returns the props to be passed to the slot component.\n */\nfunction useSlotProps(parameters) {\n const {\n elementType,\n externalSlotProps,\n ownerState,\n skipResolvingSlotProps = false,\n ...other\n } = parameters;\n const resolvedComponentsProps = skipResolvingSlotProps ? {} : resolveComponentProps(externalSlotProps, ownerState);\n const {\n props: mergedProps,\n internalRef\n } = mergeSlotProps({\n ...other,\n externalSlotProps: resolvedComponentsProps\n });\n const ref = useForkRef(internalRef, resolvedComponentsProps?.ref, parameters.additionalProps?.ref);\n const props = appendOwnerState(elementType, {\n ...mergedProps,\n ref\n }, ownerState);\n return props;\n}\nexport default useSlotProps;","'use client';\n\nimport * as React from 'react';\nimport { useTheme as useThemeSystem } from '@mui/system';\nimport defaultTheme from \"./defaultTheme.js\";\nimport THEME_ID from \"./identifier.js\";\nexport default function useTheme() {\n const theme = useThemeSystem(defaultTheme);\n if (process.env.NODE_ENV !== 'production') {\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n return theme[THEME_ID] || theme;\n}","import preprocessStyles from \"./preprocessStyles.js\";\n\n/* eslint-disable @typescript-eslint/naming-convention */\n\n// We need to pass an argument as `{ theme }` for PigmentCSS, but we don't want to\n// allocate more objects.\nconst arg = {\n theme: undefined\n};\n\n/**\n * Memoize style function on theme.\n * Intended to be used in styled() calls that only need access to the theme.\n */\nexport default function unstable_memoTheme(styleFn) {\n let lastValue;\n let lastTheme;\n return function styleMemoized(props) {\n let value = lastValue;\n if (value === undefined || props.theme !== lastTheme) {\n arg.theme = props.theme;\n value = preprocessStyles(styleFn(arg));\n lastValue = value;\n lastTheme = props.theme;\n }\n return value;\n };\n}","import { unstable_memoTheme } from '@mui/system';\nconst memoTheme = unstable_memoTheme;\nexport default memoTheme;","// Corresponds to 10 frames at 60 Hz.\n// A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\nexport default function debounce(func, wait = 166) {\n let timeout;\n function debounced(...args) {\n const later = () => {\n // @ts-ignore\n func.apply(this, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n }\n debounced.clear = () => {\n clearTimeout(timeout);\n };\n return debounced;\n}","import debounce from '@mui/utils/debounce';\nexport default debounce;","function easeInOutSin(time) {\n return (1 + Math.sin(Math.PI * time - Math.PI / 2)) / 2;\n}\nexport default function animate(property, element, to, options = {}, cb = () => {}) {\n const {\n ease = easeInOutSin,\n duration = 300 // standard\n } = options;\n let start = null;\n const from = element[property];\n let cancelled = false;\n const cancel = () => {\n cancelled = true;\n };\n const step = timestamp => {\n if (cancelled) {\n cb(new Error('Animation cancelled'));\n return;\n }\n if (start === null) {\n start = timestamp;\n }\n const time = Math.min(1, (timestamp - start) / duration);\n element[property] = ease(time) * (to - from) + from;\n if (time >= 1) {\n requestAnimationFrame(() => {\n cb(null);\n });\n return;\n }\n requestAnimationFrame(step);\n };\n if (from === to) {\n cb(new Error('Element already at target position'));\n return cancel;\n }\n requestAnimationFrame(step);\n return cancel;\n}","'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","'use client';\n\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nexport default useEnhancedEffect;","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","import ownerDocument from \"../ownerDocument/index.js\";\nexport default function ownerWindow(node) {\n const doc = ownerDocument(node);\n return doc.defaultView || window;\n}","import ownerWindow from '@mui/utils/ownerWindow';\nexport default ownerWindow;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from \"../utils/debounce.js\";\nimport { ownerWindow, unstable_useEnhancedEffect as useEnhancedEffect } from \"../utils/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst styles = {\n width: 99,\n height: 99,\n position: 'absolute',\n top: -9999,\n overflow: 'scroll'\n};\n\n/**\n * @ignore - internal component.\n * The component originates from https://github.com/STORIS/react-scrollbar-size.\n * It has been moved into the core in order to minimize the bundle size.\n */\nexport default function ScrollbarSize(props) {\n const {\n onChange,\n ...other\n } = props;\n const scrollbarHeight = React.useRef();\n const nodeRef = React.useRef(null);\n const setMeasurements = () => {\n scrollbarHeight.current = nodeRef.current.offsetHeight - nodeRef.current.clientHeight;\n };\n useEnhancedEffect(() => {\n const handleResize = debounce(() => {\n const prevHeight = scrollbarHeight.current;\n setMeasurements();\n if (prevHeight !== scrollbarHeight.current) {\n onChange(scrollbarHeight.current);\n }\n });\n const containerWindow = ownerWindow(nodeRef.current);\n containerWindow.addEventListener('resize', handleResize);\n return () => {\n handleResize.clear();\n containerWindow.removeEventListener('resize', handleResize);\n };\n }, [onChange]);\n React.useEffect(() => {\n setMeasurements();\n onChange(scrollbarHeight.current);\n }, [onChange]);\n return /*#__PURE__*/_jsx(\"div\", {\n style: styles,\n ref: nodeRef,\n ...other\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? ScrollbarSize.propTypes = {\n onChange: PropTypes.func.isRequired\n} : void 0;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSvgIconUtilityClass(slot) {\n return generateUtilityClass('MuiSvgIcon', slot);\n}\nconst svgIconClasses = generateUtilityClasses('MuiSvgIcon', ['root', 'colorPrimary', 'colorSecondary', 'colorAction', 'colorError', 'colorDisabled', 'fontSizeInherit', 'fontSizeSmall', 'fontSizeMedium', 'fontSizeLarge']);\nexport default svgIconClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from \"../utils/capitalize.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { getSvgIconUtilityClass } from \"./svgIconClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n color,\n fontSize,\n classes\n } = ownerState;\n const slots = {\n root: ['root', color !== 'inherit' && `color${capitalize(color)}`, `fontSize${capitalize(fontSize)}`]\n };\n return composeClasses(slots, getSvgIconUtilityClass, classes);\n};\nconst SvgIconRoot = styled('svg', {\n name: 'MuiSvgIcon',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.color !== 'inherit' && styles[`color${capitalize(ownerState.color)}`], styles[`fontSize${capitalize(ownerState.fontSize)}`]];\n }\n})(memoTheme(({\n theme\n}) => ({\n userSelect: 'none',\n width: '1em',\n height: '1em',\n display: 'inline-block',\n flexShrink: 0,\n transition: theme.transitions?.create?.('fill', {\n duration: (theme.vars ?? theme).transitions?.duration?.shorter\n }),\n variants: [{\n props: props => !props.hasSvgAsChild,\n style: {\n // the will define the property that has `currentColor`\n // for example heroicons uses fill=\"none\" and stroke=\"currentColor\"\n fill: 'currentColor'\n }\n }, {\n props: {\n fontSize: 'inherit'\n },\n style: {\n fontSize: 'inherit'\n }\n }, {\n props: {\n fontSize: 'small'\n },\n style: {\n fontSize: theme.typography?.pxToRem?.(20) || '1.25rem'\n }\n }, {\n props: {\n fontSize: 'medium'\n },\n style: {\n fontSize: theme.typography?.pxToRem?.(24) || '1.5rem'\n }\n }, {\n props: {\n fontSize: 'large'\n },\n style: {\n fontSize: theme.typography?.pxToRem?.(35) || '2.1875rem'\n }\n },\n // TODO v5 deprecate color prop, v6 remove for sx\n ...Object.entries((theme.vars ?? theme).palette).filter(([, value]) => value && value.main).map(([color]) => ({\n props: {\n color\n },\n style: {\n color: (theme.vars ?? theme).palette?.[color]?.main\n }\n })), {\n props: {\n color: 'action'\n },\n style: {\n color: (theme.vars ?? theme).palette?.action?.active\n }\n }, {\n props: {\n color: 'disabled'\n },\n style: {\n color: (theme.vars ?? theme).palette?.action?.disabled\n }\n }, {\n props: {\n color: 'inherit'\n },\n style: {\n color: undefined\n }\n }]\n})));\nconst SvgIcon = /*#__PURE__*/React.forwardRef(function SvgIcon(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiSvgIcon'\n });\n const {\n children,\n className,\n color = 'inherit',\n component = 'svg',\n fontSize = 'medium',\n htmlColor,\n inheritViewBox = false,\n titleAccess,\n viewBox = '0 0 24 24',\n ...other\n } = props;\n const hasSvgAsChild = /*#__PURE__*/React.isValidElement(children) && children.type === 'svg';\n const ownerState = {\n ...props,\n color,\n component,\n fontSize,\n instanceFontSize: inProps.fontSize,\n inheritViewBox,\n viewBox,\n hasSvgAsChild\n };\n const more = {};\n if (!inheritViewBox) {\n more.viewBox = viewBox;\n }\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(SvgIconRoot, {\n as: component,\n className: clsx(classes.root, className),\n focusable: \"false\",\n color: htmlColor,\n \"aria-hidden\": titleAccess ? undefined : true,\n role: titleAccess ? 'img' : undefined,\n ref: ref,\n ...more,\n ...other,\n ...(hasSvgAsChild && children.props),\n ownerState: ownerState,\n children: [hasSvgAsChild ? children.props.children : children, titleAccess ? /*#__PURE__*/_jsx(\"title\", {\n children: titleAccess\n }) : null]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? SvgIcon.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Node passed into the SVG element.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * You can use the `htmlColor` prop to apply a color attribute to the SVG element.\n * @default 'inherit'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'action', 'disabled', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.\n * @default 'medium'\n */\n fontSize: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'large', 'medium', 'small']), PropTypes.string]),\n /**\n * Applies a color attribute to the SVG element.\n */\n htmlColor: PropTypes.string,\n /**\n * If `true`, the root node will inherit the custom `component`'s viewBox and the `viewBox`\n * prop will be ignored.\n * Useful when you want to reference a custom `component` and have `SvgIcon` pass that\n * `component`'s viewBox to the root node.\n * @default false\n */\n inheritViewBox: PropTypes.bool,\n /**\n * The shape-rendering attribute. The behavior of the different options is described on the\n * [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering).\n * If you are having issues with blurry icons you should investigate this prop.\n */\n shapeRendering: PropTypes.string,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Provides a human-readable title for the element that contains it.\n * https://www.w3.org/TR/SVG-access/#Equivalent\n */\n titleAccess: PropTypes.string,\n /**\n * Allows you to redefine what the coordinates without units mean inside an SVG element.\n * For example, if the SVG element is 500 (width) by 200 (height),\n * and you pass viewBox=\"0 0 50 20\",\n * this means that the coordinates inside the SVG will go from the top left corner (0,0)\n * to bottom right (50,20) and each unit will be worth 10px.\n * @default '0 0 24 24'\n */\n viewBox: PropTypes.string\n} : void 0;\nif (SvgIcon) {\n SvgIcon.muiName = 'SvgIcon';\n}\nexport default SvgIcon;","'use client';\n\nimport * as React from 'react';\nimport SvgIcon from \"../SvgIcon/index.js\";\n\n/**\n * Private module reserved for @mui packages.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createSvgIcon(path, displayName) {\n function Component(props, ref) {\n return /*#__PURE__*/_jsx(SvgIcon, {\n \"data-testid\": `${displayName}Icon`,\n ref: ref,\n ...props,\n children: path\n });\n }\n if (process.env.NODE_ENV !== 'production') {\n // Need to set `displayName` on the inner component for React.memo.\n // React prior to 16.14 ignores `displayName` on the wrapper.\n Component.displayName = `${displayName}Icon`;\n }\n Component.muiName = SvgIcon.muiName;\n return /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(Component));\n}","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z\"\n}), 'KeyboardArrowLeft');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z\"\n}), 'KeyboardArrowRight');","/**\n * Returns a boolean indicating if the event's target has :focus-visible\n */\nexport default function isFocusVisible(element) {\n try {\n return element.matches(':focus-visible');\n } catch (error) {\n // Do not warn on jsdom tests, otherwise all tests that rely on focus have to be skipped\n // Tests that rely on `:focus-visible` will still have to be skipped in jsdom\n if (process.env.NODE_ENV !== 'production' && !/jsdom/.test(window.navigator.userAgent)) {\n console.warn(['MUI: The `:focus-visible` pseudo class is not supported in this browser.', 'Some components rely on this feature to work properly.'].join('\\n'));\n }\n }\n return false;\n}","'use client';\n\nimport useForkRef from '@mui/utils/useForkRef';\nexport default useForkRef;","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from \"../useEnhancedEffect/index.js\";\n\n/**\n * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892\n * See RFC in https://github.com/reactjs/rfcs/pull/220\n */\n\nfunction useEventCallback(fn) {\n const ref = React.useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return React.useRef((...args) =>\n // @ts-expect-error hide `this`\n (0, ref.current)(...args)).current;\n}\nexport default useEventCallback;","'use client';\n\nimport useEventCallback from '@mui/utils/useEventCallback';\nexport default useEventCallback;","'use client';\n\nimport * as React from 'react';\nconst UNINITIALIZED = {};\n\n/**\n * A React.useRef() that is initialized lazily with a function. Note that it accepts an optional\n * initialization argument, so the initialization function doesn't need to be an inline closure.\n *\n * @usage\n * const ref = useLazyRef(sortColumns, columns)\n */\nexport default function useLazyRef(init, initArg) {\n const ref = React.useRef(UNINITIALIZED);\n if (ref.current === UNINITIALIZED) {\n ref.current = init(initArg);\n }\n return ref;\n}","'use client';\n\nimport * as React from 'react';\nimport useLazyRef from '@mui/utils/useLazyRef';\n/**\n * Lazy initialization container for the Ripple instance. This improves\n * performance by delaying mounting the ripple until it's needed.\n */\nexport class LazyRipple {\n /** React ref to the ripple instance */\n\n /** If the ripple component should be mounted */\n\n /** Promise that resolves when the ripple component is mounted */\n\n /** If the ripple component has been mounted */\n\n /** React state hook setter */\n\n static create() {\n return new LazyRipple();\n }\n static use() {\n /* eslint-disable */\n const ripple = useLazyRef(LazyRipple.create).current;\n const [shouldMount, setShouldMount] = React.useState(false);\n ripple.shouldMount = shouldMount;\n ripple.setShouldMount = setShouldMount;\n React.useEffect(ripple.mountEffect, [shouldMount]);\n /* eslint-enable */\n\n return ripple;\n }\n constructor() {\n this.ref = {\n current: null\n };\n this.mounted = null;\n this.didMount = false;\n this.shouldMount = false;\n this.setShouldMount = null;\n }\n mount() {\n if (!this.mounted) {\n this.mounted = createControlledPromise();\n this.shouldMount = true;\n this.setShouldMount(this.shouldMount);\n }\n return this.mounted;\n }\n mountEffect = () => {\n if (this.shouldMount && !this.didMount) {\n if (this.ref.current !== null) {\n this.didMount = true;\n this.mounted.resolve();\n }\n }\n };\n\n /* Ripple API */\n\n start(...args) {\n this.mount().then(() => this.ref.current?.start(...args));\n }\n stop(...args) {\n this.mount().then(() => this.ref.current?.stop(...args));\n }\n pulsate(...args) {\n this.mount().then(() => this.ref.current?.pulsate(...args));\n }\n}\nexport default function useLazyRipple() {\n return LazyRipple.use();\n}\nfunction createControlledPromise() {\n let resolve;\n let reject;\n const p = new Promise((resolveFn, rejectFn) => {\n resolve = resolveFn;\n reject = rejectFn;\n });\n p.resolve = resolve;\n p.reject = reject;\n return p;\n}","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","import React from 'react';\nexport default React.createContext(null);","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nexport { _assertThisInitialized as default };","'use client';\n\nimport * as React from 'react';\nconst EMPTY = [];\n\n/**\n * A React.useEffect equivalent that runs once, when the component is mounted.\n */\nexport default function useOnMount(fn) {\n // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler -- no need to put `fn` in the dependency array\n /* eslint-disable react-hooks/exhaustive-deps */\n React.useEffect(fn, EMPTY);\n /* eslint-enable react-hooks/exhaustive-deps */\n}","'use client';\n\nimport useLazyRef from \"../useLazyRef/useLazyRef.js\";\nimport useOnMount from \"../useOnMount/useOnMount.js\";\nexport class Timeout {\n static create() {\n return new Timeout();\n }\n currentId = null;\n\n /**\n * Executes `fn` after `delay`, clearing any previously scheduled call.\n */\n start(delay, fn) {\n this.clear();\n this.currentId = setTimeout(() => {\n this.currentId = null;\n fn();\n }, delay);\n }\n clear = () => {\n if (this.currentId !== null) {\n clearTimeout(this.currentId);\n this.currentId = null;\n }\n };\n disposeEffect = () => {\n return this.clear;\n };\n}\nexport default function useTimeout() {\n const timeout = useLazyRef(Timeout.create).current;\n useOnMount(timeout.disposeEffect);\n return timeout;\n}","import { h as hasOwn, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isDevelopment } from './emotion-element-5486c51c.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-5486c51c.browser.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\n\nvar jsx\n/*: typeof React.createElement */\n= function jsx\n/*: typeof React.createElement */\n(type\n/*: React.ElementType */\n, props\n/*: Object */\n) {\n var args = arguments;\n\n if (props == null || !hasOwn.call(props, 'css')) {\n return React.createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n }\n\n return React.createElement.apply(null, createElementArgArray);\n};\n\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global\n/*: React.AbstractComponent<\nGlobalProps\n> */\n= /* #__PURE__ */withEmotionCache(function (props\n/*: GlobalProps */\n, cache) {\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n\n var sheetRef = React.useRef();\n useInsertionEffectWithLayoutFallback(function () {\n var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n var sheet = new cache.sheet.constructor({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false;\n var node\n /*: HTMLStyleElement | null*/\n = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useInsertionEffectWithLayoutFallback(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\n/* import type { Interpolation, SerializedStyles } from '@emotion/utils' */\n\nfunction css()\n/*: SerializedStyles */\n{\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\n/*\ntype Keyframes = {|\n name: string,\n styles: string,\n anim: 1,\n toString: () => string\n|} & string\n*/\n\nvar keyframes = function\n /*: Keyframes */\nkeyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name;\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\n/*\ntype ClassNameArg =\n | string\n | boolean\n | { [key: string]: boolean }\n | Array\n | null\n | void\n*/\n\nvar classnames = function\n /*: string */\nclassnames(args\n/*: Array */\n) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered\n/*: Object */\n, css\n/*: (...args: Array) => string */\n, className\n/*: string */\n) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serializedArr = _ref.serializedArr;\n useInsertionEffectAlwaysWithSyncFallback(function () {\n\n for (var i = 0; i < serializedArr.length; i++) {\n insertStyles(cache, serializedArr[i], false);\n }\n });\n\n return null;\n};\n/*\ntype Props = {\n children: ({\n css: (...args: any) => string,\n cx: (...args: Array) => string,\n theme: Object\n }) => React.Node\n} */\n\n\nvar ClassNames\n/*: React.AbstractComponent*/\n= /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n\n var css = function css() {\n if (hasRendered && isDevelopment) {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n registerStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && isDevelopment) {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: React.useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serializedArr: serializedArr\n }), ele);\n});\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction Ripple(props) {\n const {\n className,\n classes,\n pulsate = false,\n rippleX,\n rippleY,\n rippleSize,\n in: inProp,\n onExited,\n timeout\n } = props;\n const [leaving, setLeaving] = React.useState(false);\n const rippleClassName = clsx(className, classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);\n const rippleStyles = {\n width: rippleSize,\n height: rippleSize,\n top: -(rippleSize / 2) + rippleY,\n left: -(rippleSize / 2) + rippleX\n };\n const childClassName = clsx(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);\n if (!inProp && !leaving) {\n setLeaving(true);\n }\n React.useEffect(() => {\n if (!inProp && onExited != null) {\n // react-transition-group#onExited\n const timeoutId = setTimeout(onExited, timeout);\n return () => {\n clearTimeout(timeoutId);\n };\n }\n return undefined;\n }, [onExited, inProp, timeout]);\n return /*#__PURE__*/_jsx(\"span\", {\n className: rippleClassName,\n style: rippleStyles,\n children: /*#__PURE__*/_jsx(\"span\", {\n className: childClassName\n })\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? Ripple.propTypes /* remove-proptypes */ = {\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n /**\n * @ignore - injected from TransitionGroup\n */\n in: PropTypes.bool,\n /**\n * @ignore - injected from TransitionGroup\n */\n onExited: PropTypes.func,\n /**\n * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element.\n */\n pulsate: PropTypes.bool,\n /**\n * Diameter of the ripple.\n */\n rippleSize: PropTypes.number,\n /**\n * Horizontal position of the ripple center.\n */\n rippleX: PropTypes.number,\n /**\n * Vertical position of the ripple center.\n */\n rippleY: PropTypes.number,\n /**\n * exit delay\n */\n timeout: PropTypes.number.isRequired\n} : void 0;\nexport default Ripple;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTouchRippleUtilityClass(slot) {\n return generateUtilityClass('MuiTouchRipple', slot);\n}\nconst touchRippleClasses = generateUtilityClasses('MuiTouchRipple', ['root', 'ripple', 'rippleVisible', 'ripplePulsate', 'child', 'childLeaving', 'childPulsate']);\nexport default touchRippleClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\nimport useTimeout from '@mui/utils/useTimeout';\nimport { keyframes, styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport Ripple from \"./Ripple.js\";\nimport touchRippleClasses from \"./touchRippleClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DURATION = 550;\nexport const DELAY_RIPPLE = 80;\nconst enterKeyframe = keyframes`\n 0% {\n transform: scale(0);\n opacity: 0.1;\n }\n\n 100% {\n transform: scale(1);\n opacity: 0.3;\n }\n`;\nconst exitKeyframe = keyframes`\n 0% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n`;\nconst pulsateKeyframe = keyframes`\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(0.92);\n }\n\n 100% {\n transform: scale(1);\n }\n`;\nexport const TouchRippleRoot = styled('span', {\n name: 'MuiTouchRipple',\n slot: 'Root'\n})({\n overflow: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: 0,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: 'inherit'\n});\n\n// This `styled()` function invokes keyframes. `styled-components` only supports keyframes\n// in string templates. Do not convert these styles in JS object as it will break.\nexport const TouchRippleRipple = styled(Ripple, {\n name: 'MuiTouchRipple',\n slot: 'Ripple'\n})`\n opacity: 0;\n position: absolute;\n\n &.${touchRippleClasses.rippleVisible} {\n opacity: 0.3;\n transform: scale(1);\n animation-name: ${enterKeyframe};\n animation-duration: ${DURATION}ms;\n animation-timing-function: ${({\n theme\n}) => theme.transitions.easing.easeInOut};\n }\n\n &.${touchRippleClasses.ripplePulsate} {\n animation-duration: ${({\n theme\n}) => theme.transitions.duration.shorter}ms;\n }\n\n & .${touchRippleClasses.child} {\n opacity: 1;\n display: block;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: currentColor;\n }\n\n & .${touchRippleClasses.childLeaving} {\n opacity: 0;\n animation-name: ${exitKeyframe};\n animation-duration: ${DURATION}ms;\n animation-timing-function: ${({\n theme\n}) => theme.transitions.easing.easeInOut};\n }\n\n & .${touchRippleClasses.childPulsate} {\n position: absolute;\n /* @noflip */\n left: 0px;\n top: 0;\n animation-name: ${pulsateKeyframe};\n animation-duration: 2500ms;\n animation-timing-function: ${({\n theme\n}) => theme.transitions.easing.easeInOut};\n animation-iteration-count: infinite;\n animation-delay: 200ms;\n }\n`;\n\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\nconst TouchRipple = /*#__PURE__*/React.forwardRef(function TouchRipple(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiTouchRipple'\n });\n const {\n center: centerProp = false,\n classes = {},\n className,\n ...other\n } = props;\n const [ripples, setRipples] = React.useState([]);\n const nextKey = React.useRef(0);\n const rippleCallback = React.useRef(null);\n React.useEffect(() => {\n if (rippleCallback.current) {\n rippleCallback.current();\n rippleCallback.current = null;\n }\n }, [ripples]);\n\n // Used to filter out mouse emulated events on mobile.\n const ignoringMouseDown = React.useRef(false);\n // We use a timer in order to only show the ripples for touch \"click\" like events.\n // We don't want to display the ripple for touch scroll events.\n const startTimer = useTimeout();\n\n // This is the hook called once the previous timeout is ready.\n const startTimerCommit = React.useRef(null);\n const container = React.useRef(null);\n const startCommit = React.useCallback(params => {\n const {\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n } = params;\n setRipples(oldRipples => [...oldRipples, /*#__PURE__*/_jsx(TouchRippleRipple, {\n classes: {\n ripple: clsx(classes.ripple, touchRippleClasses.ripple),\n rippleVisible: clsx(classes.rippleVisible, touchRippleClasses.rippleVisible),\n ripplePulsate: clsx(classes.ripplePulsate, touchRippleClasses.ripplePulsate),\n child: clsx(classes.child, touchRippleClasses.child),\n childLeaving: clsx(classes.childLeaving, touchRippleClasses.childLeaving),\n childPulsate: clsx(classes.childPulsate, touchRippleClasses.childPulsate)\n },\n timeout: DURATION,\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize\n }, nextKey.current)]);\n nextKey.current += 1;\n rippleCallback.current = cb;\n }, [classes]);\n const start = React.useCallback((event = {}, options = {}, cb = () => {}) => {\n const {\n pulsate = false,\n center = centerProp || options.pulsate,\n fakeElement = false // For test purposes\n } = options;\n if (event?.type === 'mousedown' && ignoringMouseDown.current) {\n ignoringMouseDown.current = false;\n return;\n }\n if (event?.type === 'touchstart') {\n ignoringMouseDown.current = true;\n }\n const element = fakeElement ? null : container.current;\n const rect = element ? element.getBoundingClientRect() : {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n };\n\n // Get the size of the ripple\n let rippleX;\n let rippleY;\n let rippleSize;\n if (center || event === undefined || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n rippleX = Math.round(rect.width / 2);\n rippleY = Math.round(rect.height / 2);\n } else {\n const {\n clientX,\n clientY\n } = event.touches && event.touches.length > 0 ? event.touches[0] : event;\n rippleX = Math.round(clientX - rect.left);\n rippleY = Math.round(clientY - rect.top);\n }\n if (center) {\n rippleSize = Math.sqrt((2 * rect.width ** 2 + rect.height ** 2) / 3);\n\n // For some reason the animation is broken on Mobile Chrome if the size is even.\n if (rippleSize % 2 === 0) {\n rippleSize += 1;\n }\n } else {\n const sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n const sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n rippleSize = Math.sqrt(sizeX ** 2 + sizeY ** 2);\n }\n\n // Touche devices\n if (event?.touches) {\n // check that this isn't another touchstart due to multitouch\n // otherwise we will only clear a single timer when unmounting while two\n // are running\n if (startTimerCommit.current === null) {\n // Prepare the ripple effect.\n startTimerCommit.current = () => {\n startCommit({\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n });\n };\n // Delay the execution of the ripple effect.\n // We have to make a tradeoff with this delay value.\n startTimer.start(DELAY_RIPPLE, () => {\n if (startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n }\n });\n }\n } else {\n startCommit({\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n });\n }\n }, [centerProp, startCommit, startTimer]);\n const pulsate = React.useCallback(() => {\n start({}, {\n pulsate: true\n });\n }, [start]);\n const stop = React.useCallback((event, cb) => {\n startTimer.clear();\n\n // The touch interaction occurs too quickly.\n // We still want to show ripple effect.\n if (event?.type === 'touchend' && startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n startTimer.start(0, () => {\n stop(event, cb);\n });\n return;\n }\n startTimerCommit.current = null;\n setRipples(oldRipples => {\n if (oldRipples.length > 0) {\n return oldRipples.slice(1);\n }\n return oldRipples;\n });\n rippleCallback.current = cb;\n }, [startTimer]);\n React.useImperativeHandle(ref, () => ({\n pulsate,\n start,\n stop\n }), [pulsate, start, stop]);\n return /*#__PURE__*/_jsx(TouchRippleRoot, {\n className: clsx(touchRippleClasses.root, classes.root, className),\n ref: container,\n ...other,\n children: /*#__PURE__*/_jsx(TransitionGroup, {\n component: null,\n exit: true,\n children: ripples\n })\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? TouchRipple.propTypes /* remove-proptypes */ = {\n /**\n * If `true`, the ripple starts at the center of the component\n * rather than at the point of interaction.\n */\n center: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string\n} : void 0;\nexport default TouchRipple;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getButtonBaseUtilityClass(slot) {\n return generateUtilityClass('MuiButtonBase', slot);\n}\nconst buttonBaseClasses = generateUtilityClasses('MuiButtonBase', ['root', 'disabled', 'focusVisible']);\nexport default buttonBaseClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport isFocusVisible from '@mui/utils/isFocusVisible';\nimport { styled } from \"../zero-styled/index.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport useEventCallback from \"../utils/useEventCallback.js\";\nimport useLazyRipple from \"../useLazyRipple/index.js\";\nimport TouchRipple from \"./TouchRipple.js\";\nimport buttonBaseClasses, { getButtonBaseUtilityClass } from \"./buttonBaseClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n disabled,\n focusVisible,\n focusVisibleClassName,\n classes\n } = ownerState;\n const slots = {\n root: ['root', disabled && 'disabled', focusVisible && 'focusVisible']\n };\n const composedClasses = composeClasses(slots, getButtonBaseUtilityClass, classes);\n if (focusVisible && focusVisibleClassName) {\n composedClasses.root += ` ${focusVisibleClassName}`;\n }\n return composedClasses;\n};\nexport const ButtonBaseRoot = styled('button', {\n name: 'MuiButtonBase',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n boxSizing: 'border-box',\n WebkitTapHighlightColor: 'transparent',\n backgroundColor: 'transparent',\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: 'pointer',\n userSelect: 'none',\n verticalAlign: 'middle',\n MozAppearance: 'none',\n // Reset\n WebkitAppearance: 'none',\n // Reset\n textDecoration: 'none',\n // So we take precedent over the style of a native element.\n color: 'inherit',\n '&::-moz-focus-inner': {\n borderStyle: 'none' // Remove Firefox dotted outline.\n },\n [`&.${buttonBaseClasses.disabled}`]: {\n pointerEvents: 'none',\n // Disable link interactions\n cursor: 'default'\n },\n '@media print': {\n colorAdjust: 'exact'\n }\n});\n\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\nconst ButtonBase = /*#__PURE__*/React.forwardRef(function ButtonBase(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiButtonBase'\n });\n const {\n action,\n centerRipple = false,\n children,\n className,\n component = 'button',\n disabled = false,\n disableRipple = false,\n disableTouchRipple = false,\n focusRipple = false,\n focusVisibleClassName,\n LinkComponent = 'a',\n onBlur,\n onClick,\n onContextMenu,\n onDragLeave,\n onFocus,\n onFocusVisible,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n onMouseLeave,\n onMouseUp,\n onTouchEnd,\n onTouchMove,\n onTouchStart,\n tabIndex = 0,\n TouchRippleProps,\n touchRippleRef,\n type,\n ...other\n } = props;\n const buttonRef = React.useRef(null);\n const ripple = useLazyRipple();\n const handleRippleRef = useForkRef(ripple.ref, touchRippleRef);\n const [focusVisible, setFocusVisible] = React.useState(false);\n if (disabled && focusVisible) {\n setFocusVisible(false);\n }\n React.useImperativeHandle(action, () => ({\n focusVisible: () => {\n setFocusVisible(true);\n buttonRef.current.focus();\n }\n }), []);\n const enableTouchRipple = ripple.shouldMount && !disableRipple && !disabled;\n React.useEffect(() => {\n if (focusVisible && focusRipple && !disableRipple) {\n ripple.pulsate();\n }\n }, [disableRipple, focusRipple, focusVisible, ripple]);\n function useRippleHandler(rippleAction, eventCallback, skipRippleAction = disableTouchRipple) {\n return useEventCallback(event => {\n if (eventCallback) {\n eventCallback(event);\n }\n const ignore = skipRippleAction;\n if (!ignore) {\n ripple[rippleAction](event);\n }\n return true;\n });\n }\n const handleMouseDown = useRippleHandler('start', onMouseDown);\n const handleContextMenu = useRippleHandler('stop', onContextMenu);\n const handleDragLeave = useRippleHandler('stop', onDragLeave);\n const handleMouseUp = useRippleHandler('stop', onMouseUp);\n const handleMouseLeave = useRippleHandler('stop', event => {\n if (focusVisible) {\n event.preventDefault();\n }\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n });\n const handleTouchStart = useRippleHandler('start', onTouchStart);\n const handleTouchEnd = useRippleHandler('stop', onTouchEnd);\n const handleTouchMove = useRippleHandler('stop', onTouchMove);\n const handleBlur = useRippleHandler('stop', event => {\n if (!isFocusVisible(event.target)) {\n setFocusVisible(false);\n }\n if (onBlur) {\n onBlur(event);\n }\n }, false);\n const handleFocus = useEventCallback(event => {\n // Fix for https://github.com/facebook/react/issues/7769\n if (!buttonRef.current) {\n buttonRef.current = event.currentTarget;\n }\n if (isFocusVisible(event.target)) {\n setFocusVisible(true);\n if (onFocusVisible) {\n onFocusVisible(event);\n }\n }\n if (onFocus) {\n onFocus(event);\n }\n });\n const isNonNativeButton = () => {\n const button = buttonRef.current;\n return component && component !== 'button' && !(button.tagName === 'A' && button.href);\n };\n const handleKeyDown = useEventCallback(event => {\n // Check if key is already down to avoid repeats being counted as multiple activations\n if (focusRipple && !event.repeat && focusVisible && event.key === ' ') {\n ripple.stop(event, () => {\n ripple.start(event);\n });\n }\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === ' ') {\n event.preventDefault();\n }\n if (onKeyDown) {\n onKeyDown(event);\n }\n\n // Keyboard accessibility for non interactive elements\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === 'Enter' && !disabled) {\n event.preventDefault();\n if (onClick) {\n onClick(event);\n }\n }\n });\n const handleKeyUp = useEventCallback(event => {\n // calling preventDefault in keyUp on a \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","export const reflow = node => node.scrollTop;\nexport function getTransitionProps(props, options) {\n const {\n timeout,\n easing,\n style = {}\n } = props;\n return {\n duration: style.transitionDuration ?? (typeof timeout === 'number' ? timeout : timeout[options.mode] || 0),\n easing: style.transitionTimingFunction ?? (typeof easing === 'object' ? easing[options.mode] : easing),\n delay: style.transitionDelay\n };\n}","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport useTimeout from '@mui/utils/useTimeout';\nimport elementAcceptingRef from '@mui/utils/elementAcceptingRef';\nimport getReactElementRef from '@mui/utils/getReactElementRef';\nimport { Transition } from 'react-transition-group';\nimport { useTheme } from \"../zero-styled/index.js\";\nimport { getTransitionProps, reflow } from \"../transitions/utils.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getScale(value) {\n return `scale(${value}, ${value ** 2})`;\n}\nconst styles = {\n entering: {\n opacity: 1,\n transform: getScale(1)\n },\n entered: {\n opacity: 1,\n transform: 'none'\n }\n};\n\n/*\n TODO v6: remove\n Conditionally apply a workaround for the CSS transition bug in Safari 15.4 / WebKit browsers.\n */\nconst isWebKit154 = typeof navigator !== 'undefined' && /^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent) && /(os |version\\/)15(.|_)4/i.test(navigator.userAgent);\n\n/**\n * The Grow transition is used by the [Tooltip](/material-ui/react-tooltip/) and\n * [Popover](/material-ui/react-popover/) components.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Grow = /*#__PURE__*/React.forwardRef(function Grow(props, ref) {\n const {\n addEndListener,\n appear = true,\n children,\n easing,\n in: inProp,\n onEnter,\n onEntered,\n onEntering,\n onExit,\n onExited,\n onExiting,\n style,\n timeout = 'auto',\n // eslint-disable-next-line react/prop-types\n TransitionComponent = Transition,\n ...other\n } = props;\n const timer = useTimeout();\n const autoTimeout = React.useRef();\n const theme = useTheme();\n const nodeRef = React.useRef(null);\n const handleRef = useForkRef(nodeRef, getReactElementRef(children), ref);\n const normalizedTransitionCallback = callback => maybeIsAppearing => {\n if (callback) {\n const node = nodeRef.current;\n\n // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n if (maybeIsAppearing === undefined) {\n callback(node);\n } else {\n callback(node, maybeIsAppearing);\n }\n }\n };\n const handleEntering = normalizedTransitionCallback(onEntering);\n const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n reflow(node); // So the animation always start from the start.\n\n const {\n duration: transitionDuration,\n delay,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'enter'\n });\n let duration;\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n node.style.transition = [theme.transitions.create('opacity', {\n duration,\n delay\n }), theme.transitions.create('transform', {\n duration: isWebKit154 ? duration : duration * 0.666,\n delay,\n easing: transitionTimingFunction\n })].join(',');\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n const handleEntered = normalizedTransitionCallback(onEntered);\n const handleExiting = normalizedTransitionCallback(onExiting);\n const handleExit = normalizedTransitionCallback(node => {\n const {\n duration: transitionDuration,\n delay,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'exit'\n });\n let duration;\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n node.style.transition = [theme.transitions.create('opacity', {\n duration,\n delay\n }), theme.transitions.create('transform', {\n duration: isWebKit154 ? duration : duration * 0.666,\n delay: isWebKit154 ? delay : delay || duration * 0.333,\n easing: transitionTimingFunction\n })].join(',');\n node.style.opacity = 0;\n node.style.transform = getScale(0.75);\n if (onExit) {\n onExit(node);\n }\n });\n const handleExited = normalizedTransitionCallback(onExited);\n const handleAddEndListener = next => {\n if (timeout === 'auto') {\n timer.start(autoTimeout.current || 0, next);\n }\n if (addEndListener) {\n // Old call signature before `react-transition-group` implemented `nodeRef`\n addEndListener(nodeRef.current, next);\n }\n };\n return /*#__PURE__*/_jsx(TransitionComponent, {\n appear: appear,\n in: inProp,\n nodeRef: nodeRef,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n timeout: timeout === 'auto' ? null : timeout,\n ...other,\n children: (state, childProps) => {\n return /*#__PURE__*/React.cloneElement(children, {\n style: {\n opacity: 0,\n transform: getScale(0.75),\n visibility: state === 'exited' && !inProp ? 'hidden' : undefined,\n ...styles[state],\n ...style,\n ...children.props.style\n },\n ref: handleRef,\n ...childProps\n });\n }\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Grow.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Add a custom transition end trigger. Called with the transitioning DOM\n * node and a done callback. Allows for more fine grained transition end\n * logic. Note: Timeouts are still used as a fallback if provided.\n */\n addEndListener: PropTypes.func,\n /**\n * Perform the enter transition when it first mounts if `in` is also `true`.\n * Set this to `false` to disable this behavior.\n * @default true\n */\n appear: PropTypes.bool,\n /**\n * A single child content element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * The transition timing function.\n * You may specify a single easing or a object containing enter and exit values.\n */\n easing: PropTypes.oneOfType([PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string\n }), PropTypes.string]),\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n *\n * Set to 'auto' to automatically calculate transition time based on height.\n * @default 'auto'\n */\n timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nif (Grow) {\n Grow.muiSupportAuto = true;\n}\nexport default Grow;","'use client';\n\n/* eslint-disable consistent-return, jsx-a11y/no-noninteractive-tabindex */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp, elementAcceptingRef, unstable_useForkRef as useForkRef, unstable_ownerDocument as ownerDocument, unstable_getReactElementRef as getReactElementRef } from '@mui/utils';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n// Inspired by https://github.com/focus-trap/tabbable\nconst candidatesSelector = ['input', 'select', 'textarea', 'a[href]', 'button', '[tabindex]', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])'].join(',');\nfunction getTabIndex(node) {\n const tabindexAttr = parseInt(node.getAttribute('tabindex') || '', 10);\n if (!Number.isNaN(tabindexAttr)) {\n return tabindexAttr;\n }\n\n // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n // https://issues.chromium.org/issues/41283952\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n // in Chrome,
,