{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///CognitiveServices.js","webpack:///webpack/bootstrap 59c932d69982b330865c","webpack:///./~/microsoft-speech-browser-sdk/src/common/Exports.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common/Error.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common/Guid.ts","webpack:///./~/tslib/tslib.es6.js","webpack:///./~/microsoft-speech-browser-sdk/src/common.browser/Exports.ts","webpack:///./~/microsoft-speech-browser-sdk/src/sdk/speech/Exports.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common/PlatformEvent.ts","webpack:///./~/microsoft-speech-browser-sdk/src/sdk/speech/IAuthentication.ts","webpack:///./~/microsoft-speech-browser-sdk/src/sdk/speech/RecognitionEvents.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common.browser/WebsocketMessageAdapter.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common/ConnectionMessage.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common/EventSource.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common/InMemoryStorage.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common/List.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common/Promise.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common/Queue.ts","webpack:///./~/microsoft-speech-browser-sdk/src/sdk/speech.browser/SpeechConnectionFactory.ts","webpack:///./~/microsoft-speech-browser-sdk/src/sdk/speech/RecognizerConfig.ts","webpack:///./src/Konsole.ts","webpack:///./src/CognitiveServices/SpeechRecognition.ts","webpack:///./src/CognitiveServices/SpeechSynthesis.ts","webpack:///./~/microsoft-speech-browser-sdk/Speech.Browser.Sdk.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common.browser/ConsoleLoggingListener.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common.browser/FileAudioSource.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common.browser/LocalStorage.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common.browser/MicAudioSource.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common.browser/OpusRecorder.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common.browser/PCMRecorder.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common.browser/SessionStorage.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common.browser/Timer.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common.browser/WebsocketConnection.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common/AudioSourceEvents.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common/ConnectionEvents.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common/ConnectionOpenResponse.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common/Events.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common/IConnection.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common/RawWebsocketMessage.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common/RiffPcmEncoder.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common/Storage.ts","webpack:///./~/microsoft-speech-browser-sdk/src/common/Stream.ts","webpack:///./~/microsoft-speech-browser-sdk/src/sdk/speech.browser/Exports.ts","webpack:///./~/microsoft-speech-browser-sdk/src/sdk/speech.browser/Recognizer.ts","webpack:///./~/microsoft-speech-browser-sdk/src/sdk/speech/CognitiveSubscriptionKeyAuthentication.ts","webpack:///./~/microsoft-speech-browser-sdk/src/sdk/speech/CognitiveTokenAuthentication.ts","webpack:///./~/microsoft-speech-browser-sdk/src/sdk/speech/Recognizer.ts","webpack:///./~/microsoft-speech-browser-sdk/src/sdk/speech/ServiceTelemetryListener.Internal.ts","webpack:///./~/microsoft-speech-browser-sdk/src/sdk/speech/SpeechConnectionMessage.Internal.ts","webpack:///./~/microsoft-speech-browser-sdk/src/sdk/speech/SpeechResults.ts","webpack:///./~/microsoft-speech-browser-sdk/src/sdk/speech/WebsocketMessageFormatter.ts","webpack:///./src/CognitiveServices/lib.ts","webpack:///./~/simple-update-in/lib/index.js","webpack:///(webpack)/buildin/system.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","value","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","__export","tslib_1","ArgumentNullError","_super","argumentName","_this","message","__extends","Error","InvalidOperationError","error","ObjectDisposedError","objectName","CreateGuid","Date","getTime","replace","r","Math","random","floor","toString","CreateNoDashGuid","RegExp","toUpperCase","__webpack_exports__","b","__","constructor","extendStatics","create","__rest","e","t","indexOf","getOwnPropertySymbols","length","__decorate","decorators","target","key","desc","arguments","getOwnPropertyDescriptor","Reflect","decorate","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","throw","result","done","then","apply","__generator","body","verb","v","op","f","TypeError","_","y","label","ops","pop","trys","push","g","sent","return","Symbol","iterator","__exportStar","__values","__read","ar","__spread","concat","__await","__asyncGenerator","a","q","resume","settle","fulfill","shift","asyncIterator","__asyncDelegator","__asyncValues","__assign","setPrototypeOf","__proto__","Array","assign","Guid_1","EventType","PlatformEvent","eventName","eventType","eventId","eventTime","toISOString","AuthInfo","headerName","token","Exports_1","SpeechRecognitionEvent","requestId","Info","SpeechRecognitionResultEvent","RecognitionTriggeredEvent","audioSourceId","audioNodeId","ListeningStartedEvent","ConnectingToServiceEvent","authFetchEventid","connectionId","RecognitionStartedEvent","authFetchEventId","SpeechStartDetectedEvent","SpeechHypothesisEvent","SpeechFragmentEvent","SpeechEndDetectedEvent","SpeechSimplePhraseEvent","SpeechDetailedPhraseEvent","RecognitionCompletionStatus","RecognitionEndedEvent","serviceTag","status","Success","WebsocketMessageAdapter","uri","messageFormatter","Open","connectionState","ConnectionState","Disconnected","PromiseHelper","FromError","connectionEstablishDeferral","Deferred","Connecting","websocketClient","WebSocket","binaryType","receivingMessageQueue","Queue","disconnectDeferral","sendMessageQueue","ProcessSendQueue","OnEvent","ConnectionStartEvent","onopen","Connected","ConnectionEstablishedEvent","Resolve","ConnectionOpenResponse","onerror","onclose","ConnectionEstablishErrorEvent","code","reason","ConnectionClosedEvent","OnClose","onmessage","networkReceivedTime","deferred_1","EnqueueFromPromise","data","ArrayBuffer","rawMessage","RawWebsocketMessage","MessageType","Binary","ToConnectionMessage","On","connectionMessage","ConnectionMessageReceivedEvent","Reject","Text","Send","messageSendStatusDeferral","messageSendDeferral","FromConnectionMessage","Message","SendStatusDeferral","Read","Dequeue","Close","deferral","close","SendRawMessage","sendItem","ConnectionMessageSentEvent","send","Payload","FromResult","closeReason","Dispose","DrainAndDispose","pendingReceiveItem","pendingSendItem","sendError","event","connectionEvents","Events","Instance","EventSource","None","Error_1","ConnectionMessage","messageType","headers","id","eventListeners","isDisposed","IsDisposed","Metadata","paramName","Attach","onEventCallback","Detach","AttachListener","listener","InMemoryStorage","store","Get","GetOrAdd","valueToAdd","undefined","Set","Remove","List","list","subscriptionIdCounter","addSubscriptions","removeSubscriptions","disposedSubscriptions","disposeReason","itemIndex","ThrowIfDisposed","First","Last","Length","Add","item","InsertAt","index","unshift","splice","TriggerSubscriptions","RemoveFirst","RemoveAt","RemoveLast","count","removedElements","Clear","OnAdded","addedCallback","subscriptionId","OnRemoved","removedCallback","OnDisposed","disposedCallback","Join","seperator","join","ToArray","cloneCopy","forEach","val","Any","callback","Where","All","ForEach","Select","selectList","filteredList","OrderBy","compareFn","sort","OrderByDesc","Clone","Concat","ConcatArray","array","subscriptions","_i","list_1","PromiseState","PromiseResult","promiseResultEventSource","ThrowIfError","IsError","isCompleted","isError","PromiseResultEventSource","SetResult","onSetResult","SetError","onSetError","WhenAll","promises","deferred","errors","completedPromises","checkForCompletion","promises_1","sink","Result","ContinueWith","continuationCallback","continuationDeferral","on","continuationResult","OnSuccessContinueWith","ContinueWithPromise","continuationPromise","OnSuccessContinueWithPromise","successCallback","errorCallback","Finally","callbackWrapper","State","promise","Sink","state","promiseResult","promiseResultEvents","successHandlers","errorHandlers","Resolved","ExecuteSuccessCallback","DetachHandlers","Rejected","_a","errorHandler","ExecuteErrorCallback","SubscriberType","List_1","Promise_1","promiseStore","isDrainInProgress","isDisposing","Enqueue","ThrowIfDispose","IsCompleted","deferredSubscriber","subscribers","type","Drain","Peek","pendingItemProcessor","detachables","subscriber","dequeuedItem","Exports_2","Exports_3","TestHooksParamName","ConnectionIdHeader","SpeechConnectionFactory","Create","config","authInfo","Storage","Local","endpoint","RecognitionMode","Conversation","Host","ConversationRelativeUri","Dictation","DictationRelativeUri","InteractiveRelativeUri","queryParams","format","SpeechResultFormat","Format","toLowerCase","language","Language","IsDebugModeEnabled","HeaderName","Token","WebsocketConnection","WebsocketMessageFormatter","RecognitionAPI","EndpointId","System","RecognizerConfig","platformConfig","recognitionMode","recognitionAPI","endpointId","Interactive","Simple","speechConfig","SpeechConfig","Context","recognitionActivityTimeout","context","Serialize","JSON","stringify","replacement","k","charAt","substring","os","device","system","version","OS","platform","Device","manufacturer","model","log","optionalParams","window","console","konsole","CognitiveSpeech","simple_update_in_1","SpeechRecognizer","properties","audioStreamStartInitiated","isStreamingToService","onIntermediateResult","onFinalResult","onAudioStreamingToService","onRecognitionFailed","locale","actualRecognizer","grammars","authentication","BingSpeech","recognizerConfig","navigator","userAgent","subscriptionKey","CognitiveSubscriptionKeyAuthentication","fetchCallback","fetchOnExpiryCallback","CognitiveTokenAuthentication","err","getUserMedia","CreateRecognizer","warmup","setGrammars","startRecognizing","eventhandler","speechContext","Name","hypothesisEvent","simplePhraseEvent","RecognitionStatus","DisplayText","referenceGrammarId","default","groups","Type","Hints","ReferenceGrammar","Items","map","grammar","Recognize","speechIsAvailable","stopRecognizing","AudioSource","TurnOff","SynthesisGender","SpeechSynthesizer","_requestQueue","_isPlaying","_helper","CognitiveServicesHelper","_properties","speak","text","lang","onSpeakingStarted","onSpeakingFinished","isReadyToPlay","getSpeechData","playAudio","stopSpeaking","_audioElement","top","webkitAudioContext","AudioContext","decodeAudioData","buffer","source","createBufferSource","connect","destination","start","onended","slice","ex","setTimeout","latest","fetchSpeechData","props","_customVoiceTokenURL","_outputFormat","_tokenURL","_synthesisURL","_femaleVoiceMap","ar-eg","ca-es","da-dk","de-de","en-au","en-ca","en-gb","en-in","en-us","es-es","es-mx","fi-fi","fr-ca","fr-fr","hi-in","ja-jp","ko-kr","nb-no","nl-nl","pl-pl","pt-br","pt-pt","ru-ru","sv-se","tr-tr","zh-cn","zh-hk","zh-tw","_maleVoiceMap","ar-sa","cs-cz","de-at","de-ch","el-gr","en-ie","fr-ch","he-il","hu-hu","id-id","it-it","ro-ro","sk-sk","th-th","customVoiceEndpointUrl","_tokenCallback","fetchSpeechToken","_tokenExpiredCallback","synthesisProperties","SSML","makeSSML","cbAfterToken","_lastTokenTime","now","optionalHeaders","makeHttpCall","processSSML","ssml","gender","voiceName","fetchVoiceName","Female","encodeHTML","processDone","match","exec","parser","DOMParser","dom","parseFromString","nodes","documentElement","childNodes","nodeName","j","attributes","nodeValue","Male","attribute","createAttribute","setNamedItem","serializer","XMLSerializer","voiceNode","createElement","appendChild","firstChild","serializeToString","apiKey","actionType","url","isArrayBuffer","dataToSend","xhr","XMLHttpRequest","responseType","onreadystatechange","readyState","response","responseText","open","header","setRequestHeader","localeLowerCase","ConsoleLoggingListener","logLevelFilter","Warning","ToString","Debug","debug","info","warn","logFragments","EventTime","prop","valueToLog","FileAudioSource","file","streams","TurnOn","FileReader","errorMsg","AudioSourceErrorEvent","lastIndexOf","size","MAX_SIZE","AudioSourceInitializingEvent","AudioSourceReadyEvent","Id","AudioStreamNodeAttachingEvent","Upload","streamReader","AudioStreamNodeAttachedEvent","AudioStreamNodeDetachedEvent","streamId","stream","IsClosed","AudioSourceOffEvent","Stream","reader","startOffset","endOffset","CHUNK_SIZE","lastWriteTimestamp","processNextChunk","delay","UPLOAD_INTERVAL","Timer","Write","min","chunk_1","readAsArrayBuffer","onload","AudioStreamNodeErrorEvent","chunk","GetReader","events","SAMPLE_RATE","LocalStorage","localStorage","getItem","setItem","removeItem","MicAudioSource","recorder","initializeDeferral","CreateAudioContext","nav","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","mediaDevices","constraints","catch","audio","video","mediaStream","tmp","Listen","DestroyAudioContext","Record","ReleaseMediaResources","suspend","OpusRecorder","options","outputStream","mediaRecorder","MediaRecorder","mediaRecorderOptions","ondataavailable","dataAvailableEvent","reader_1","onloadend","mediaResources","stop","getTracks","track","PcmRecorder","scriptNode","bufferSize","createScriptProcessor","audioSampleRate","sampleRate","waveStreamEncoder","RiffPcmEncoder","needHeader","onaudioprocess","inputFrame","inputBuffer","getChannelData","waveFrame","Encode","micInput","createMediaStreamSource","scriptProcessorNode","disconnect","SessionStorage","sessionStorage","delayInMillisec","params","timerId","clearTimeout","WebsocketMessageAdapter_1","queryParameters","connectionMessageAdapter","CustomSpeech","encodeURIComponent","PlatformEvent_1","AudioSourceEvent","AudioStreamNodeEvent","ConnectionEvent","statusCode","statuscode","networkReceivedTimeISO","networkSentTimeISO","networkSentTime","EventSource_1","instance","SetEventSource","eventSource","ConnectionMessage_1","payload","actualSampleRate","desiredSampleRate","channelCount","actualAudioFrame","audioFrame","DownSampleAudioFrame","audioLength","buffer_1","view_1","DataView","FloatTo16BitPCM","view","SetString","setUint32","setUint16","bitsPerSample","offset","str","setUint8","charCodeAt","input","max","setInt16","srcFrame","srcRate","dstRate","ratio","dstLength","round","dstFrame","Float32Array","srcOffset","dstOffset","nextSrcOffset","accum","InMemoryStorage_1","SetSessionStorage","SetLocalStorage","Queue_1","readerIdCounter","isEnded","ThrowIfClosed","WriteStreamChunk","Buffer","IsEnd","readerId","readerQueue","currentLength","streambuffer","readerQueues","StreamReader","streamChunk","onClose","isClosed","SpeechConnectionFactory_1","CreateRecognizerWithPcmRecorder","CreateRecognizerWithCustomAudioSource","CreateRecognizerWithFileAudioSource","audioSource","Recognizer","IAuthentication_1","AuthHeader","Fetch","FetchOnExpiry","RecognitionEvents_1","RecognizerConfig_1","ServiceTelemetryListener_Internal_1","SpeechConnectionMessage_Internal_1","connectionFactory","speechContextJson","requestSession","RequestSession","ListenForServiceTelemetry","AudioNodeId","OnAudioSourceAttachCompleted","audioNode","FetchConnection","connection","messageRetrievalPromise","ReceiveMessage","messageSendPromise","SendSpeechConfig","RequestId","SendSpeechContext","SendAudio","completionPromise","SendTelemetryData","GetTelemetry","CompletionPromise","isUnAuthorized","connectionFetchPromise","OnPreConnectionStart","OnConnectionEstablishCompleted","authPromise","OnAuthCompleted","StatusCode","Reason","SpeechConnectionMessage","Path","OnServiceTurnStartResponse","parse","TextBody","OnServiceSpeechStartDetectedResponse","OnServiceSpeechHypothesisResponse","OnServiceSpeechFragmentResponse","OnServiceSpeechEndDetectedResponse","IsContinuousRecognition","OnServiceSimpleSpeechPhraseResponse","OnServiceDetailedSpeechPhraseResponse","OnServiceTurnEndResponse","speechConfigJson","speechConfigConnectionId","telemetryData","audioStreamNode","readAndUploadCycle","audioStreamChunk","IsSpeechEnded","uploaded","isAudioNodeDetached","OnComplete","AudioSourceError","AuthTokenFetchError","UnAuthorized","ConnectError","DetachAudioNode","OnConnectionError","UnknownError","serviceTelemetryListener","requestCompletionDeferral","ServiceTelemetryListener","listeningTriggerMetric","micMetric","connectionEstablishMetric","End","Start","AudioSourceId","micStartTime","ConnectionId","connectionStartTime","GetConnectionError","Headers","path","receivedMessages","NetworkReceivedTime","metrics","telemetry","Metrics","ReceivedMessages","json","PathHeaderName","ContentTypeHeaderName","RequestIdHeaderName","RequestTimestampHeaderName","contentType","additionalHeaders","Body","CRLF","textMessage","TextContent","headerBodySplit","split","ParseHeaders","binaryMessage","BinaryContent","byteLength","dataView","headerLength","getInt16","headersString","String","fromCharCode","getInt8","MakeHeaders","content","BinaryBody","headerInt8Array","Int8Array","StringToArrayBuffer","setInt8","bodyInt8Array","headerMatches","headerMatches_1","separatorIndex","substr","trim","headerValue","SpeechRecognition_1","SpeechSynthesis_1","_defineProperty","obj","writable","_toConsumableArray","arr","isArray","arr2","from","setIn","updater","accessor","nextObj","_typeof","nextValue","_nextValue","_extends","import"],"mappings":"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","file":"./CognitiveServices.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"CognitiveServices\"] = factory();\n\telse\n\t\troot[\"CognitiveServices\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"CognitiveServices\"] = factory();\n\telse\n\t\troot[\"CognitiveServices\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 59);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nfunction __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__export(__webpack_require__(32));\r\n__export(__webpack_require__(33));\r\n__export(__webpack_require__(10));\r\n__export(__webpack_require__(34));\r\n__export(__webpack_require__(1));\r\n__export(__webpack_require__(35));\r\n__export(__webpack_require__(11));\r\n__export(__webpack_require__(2));\r\n__export(__webpack_require__(36));\r\n__export(__webpack_require__(37));\r\n__export(__webpack_require__(38));\r\n__export(__webpack_require__(39));\r\n__export(__webpack_require__(40));\r\n__export(__webpack_require__(41));\r\n__export(__webpack_require__(42));\r\n__export(__webpack_require__(12));\r\n__export(__webpack_require__(43));\r\n__export(__webpack_require__(44));\r\n__export(__webpack_require__(13));\r\n__export(__webpack_require__(6));\r\n__export(__webpack_require__(14));\r\n__export(__webpack_require__(15));\r\n__export(__webpack_require__(45));\r\n__export(__webpack_require__(46));\r\n__export(__webpack_require__(47));\r\n__export(__webpack_require__(48));\r\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(3);\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\nvar ArgumentNullError = (function (_super) {\r\n tslib_1.__extends(ArgumentNullError, _super);\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 function ArgumentNullError(argumentName) {\r\n var _this = _super.call(this, argumentName) || this;\r\n _this.name = \"ArgumentNull\";\r\n _this.message = argumentName;\r\n return _this;\r\n }\r\n return ArgumentNullError;\r\n}(Error));\r\nexports.ArgumentNullError = ArgumentNullError;\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\n// tslint:disable-next-line:max-classes-per-file\r\nvar InvalidOperationError = (function (_super) {\r\n tslib_1.__extends(InvalidOperationError, _super);\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 function InvalidOperationError(error) {\r\n var _this = _super.call(this, error) || this;\r\n _this.name = \"InvalidOperation\";\r\n _this.message = error;\r\n return _this;\r\n }\r\n return InvalidOperationError;\r\n}(Error));\r\nexports.InvalidOperationError = InvalidOperationError;\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\n// tslint:disable-next-line:max-classes-per-file\r\nvar ObjectDisposedError = (function (_super) {\r\n tslib_1.__extends(ObjectDisposedError, _super);\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 function ObjectDisposedError(objectName, error) {\r\n var _this = _super.call(this, error) || this;\r\n _this.name = objectName + \"ObjectDisposed\";\r\n _this.message = error;\r\n return _this;\r\n }\r\n return ObjectDisposedError;\r\n}(Error));\r\nexports.ObjectDisposedError = ObjectDisposedError;\r\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar CreateGuid = function () {\r\n var d = new Date().getTime();\r\n var guid = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\r\n var r = (d + Math.random() * 16) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n return (c === \"x\" ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n return guid;\r\n};\r\nexports.CreateGuid = CreateGuid;\r\nvar CreateNoDashGuid = function () {\r\n return CreateGuid().replace(new RegExp(\"-\", \"g\"), \"\").toUpperCase();\r\n};\r\nexports.CreateNoDashGuid = CreateNoDashGuid;\r\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (immutable) */ __webpack_exports__[\"__extends\"] = __extends;\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"__assign\", function() { return __assign; });\n/* harmony export (immutable) */ __webpack_exports__[\"__rest\"] = __rest;\n/* harmony export (immutable) */ __webpack_exports__[\"__decorate\"] = __decorate;\n/* harmony export (immutable) */ __webpack_exports__[\"__param\"] = __param;\n/* harmony export (immutable) */ __webpack_exports__[\"__metadata\"] = __metadata;\n/* harmony export (immutable) */ __webpack_exports__[\"__awaiter\"] = __awaiter;\n/* harmony export (immutable) */ __webpack_exports__[\"__generator\"] = __generator;\n/* harmony export (immutable) */ __webpack_exports__[\"__exportStar\"] = __exportStar;\n/* harmony export (immutable) */ __webpack_exports__[\"__values\"] = __values;\n/* harmony export (immutable) */ __webpack_exports__[\"__read\"] = __read;\n/* harmony export (immutable) */ __webpack_exports__[\"__spread\"] = __spread;\n/* harmony export (immutable) */ __webpack_exports__[\"__await\"] = __await;\n/* harmony export (immutable) */ __webpack_exports__[\"__asyncGenerator\"] = __asyncGenerator;\n/* harmony export (immutable) */ __webpack_exports__[\"__asyncDelegator\"] = __asyncDelegator;\n/* harmony export (immutable) */ __webpack_exports__[\"__asyncValues\"] = __asyncValues;\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nfunction __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nfunction __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nfunction __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nfunction __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nfunction __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nfunction __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { if (o[n]) i[n] = function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; }; }\r\n}\r\n\r\nfunction __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator];\r\n return m ? m.call(o) : typeof __values === \"function\" ? __values(o) : o[Symbol.iterator]();\r\n}\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nfunction __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__export(__webpack_require__(22));\r\n__export(__webpack_require__(24));\r\n__export(__webpack_require__(25));\r\n__export(__webpack_require__(26));\r\n__export(__webpack_require__(23));\r\n__export(__webpack_require__(27));\r\n__export(__webpack_require__(28));\r\n__export(__webpack_require__(29));\r\n__export(__webpack_require__(30));\r\n__export(__webpack_require__(31));\r\n__export(__webpack_require__(9));\r\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n// IMPORTANT - Dont publish internal modules.\r\nfunction __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__export(__webpack_require__(51));\r\n__export(__webpack_require__(52));\r\n__export(__webpack_require__(7));\r\n__export(__webpack_require__(53));\r\n__export(__webpack_require__(8));\r\n__export(__webpack_require__(54));\r\n__export(__webpack_require__(17));\r\n__export(__webpack_require__(57));\r\n__export(__webpack_require__(58));\r\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Guid_1 = __webpack_require__(2);\r\nvar EventType;\r\n(function (EventType) {\r\n EventType[EventType[\"Debug\"] = 0] = \"Debug\";\r\n EventType[EventType[\"Info\"] = 1] = \"Info\";\r\n EventType[EventType[\"Warning\"] = 2] = \"Warning\";\r\n EventType[EventType[\"Error\"] = 3] = \"Error\";\r\n})(EventType = exports.EventType || (exports.EventType = {}));\r\nvar PlatformEvent = (function () {\r\n function PlatformEvent(eventName, eventType) {\r\n this.name = eventName;\r\n this.eventId = Guid_1.CreateNoDashGuid();\r\n this.eventTime = new Date().toISOString();\r\n this.eventType = eventType;\r\n this.metadata = {};\r\n }\r\n Object.defineProperty(PlatformEvent.prototype, \"Name\", {\r\n get: function () {\r\n return this.name;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PlatformEvent.prototype, \"EventId\", {\r\n get: function () {\r\n return this.eventId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PlatformEvent.prototype, \"EventTime\", {\r\n get: function () {\r\n return this.eventTime;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PlatformEvent.prototype, \"EventType\", {\r\n get: function () {\r\n return this.eventType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PlatformEvent.prototype, \"Metadata\", {\r\n get: function () {\r\n return this.metadata;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return PlatformEvent;\r\n}());\r\nexports.PlatformEvent = PlatformEvent;\r\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar AuthInfo = (function () {\r\n function AuthInfo(headerName, token) {\r\n this.headerName = headerName;\r\n this.token = token;\r\n }\r\n Object.defineProperty(AuthInfo.prototype, \"HeaderName\", {\r\n get: function () {\r\n return this.headerName;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AuthInfo.prototype, \"Token\", {\r\n get: function () {\r\n return this.token;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AuthInfo;\r\n}());\r\nexports.AuthInfo = AuthInfo;\r\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(3);\r\nvar Exports_1 = __webpack_require__(0);\r\nvar SpeechRecognitionEvent = (function (_super) {\r\n tslib_1.__extends(SpeechRecognitionEvent, _super);\r\n function SpeechRecognitionEvent(eventName, requestId, eventType) {\r\n if (eventType === void 0) { eventType = Exports_1.EventType.Info; }\r\n var _this = _super.call(this, eventName, eventType) || this;\r\n _this.requestId = requestId;\r\n return _this;\r\n }\r\n Object.defineProperty(SpeechRecognitionEvent.prototype, \"RequestId\", {\r\n get: function () {\r\n return this.requestId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return SpeechRecognitionEvent;\r\n}(Exports_1.PlatformEvent));\r\nexports.SpeechRecognitionEvent = SpeechRecognitionEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar SpeechRecognitionResultEvent = (function (_super) {\r\n tslib_1.__extends(SpeechRecognitionResultEvent, _super);\r\n function SpeechRecognitionResultEvent(eventName, requestId, result) {\r\n var _this = _super.call(this, eventName, requestId) || this;\r\n _this.result = result;\r\n return _this;\r\n }\r\n Object.defineProperty(SpeechRecognitionResultEvent.prototype, \"Result\", {\r\n get: function () {\r\n return this.result;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return SpeechRecognitionResultEvent;\r\n}(SpeechRecognitionEvent));\r\nexports.SpeechRecognitionResultEvent = SpeechRecognitionResultEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar RecognitionTriggeredEvent = (function (_super) {\r\n tslib_1.__extends(RecognitionTriggeredEvent, _super);\r\n function RecognitionTriggeredEvent(requestId, audioSourceId, audioNodeId) {\r\n var _this = _super.call(this, \"RecognitionTriggeredEvent\", requestId) || this;\r\n _this.audioSourceId = audioSourceId;\r\n _this.audioNodeId = audioNodeId;\r\n return _this;\r\n }\r\n Object.defineProperty(RecognitionTriggeredEvent.prototype, \"AudioSourceId\", {\r\n get: function () {\r\n return this.audioSourceId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RecognitionTriggeredEvent.prototype, \"AudioNodeId\", {\r\n get: function () {\r\n return this.audioNodeId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return RecognitionTriggeredEvent;\r\n}(SpeechRecognitionEvent));\r\nexports.RecognitionTriggeredEvent = RecognitionTriggeredEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar ListeningStartedEvent = (function (_super) {\r\n tslib_1.__extends(ListeningStartedEvent, _super);\r\n function ListeningStartedEvent(requestId, audioSourceId, audioNodeId) {\r\n var _this = _super.call(this, \"ListeningStartedEvent\", requestId) || this;\r\n _this.audioSourceId = audioSourceId;\r\n _this.audioNodeId = audioNodeId;\r\n return _this;\r\n }\r\n Object.defineProperty(ListeningStartedEvent.prototype, \"AudioSourceId\", {\r\n get: function () {\r\n return this.audioSourceId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ListeningStartedEvent.prototype, \"AudioNodeId\", {\r\n get: function () {\r\n return this.audioNodeId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ListeningStartedEvent;\r\n}(SpeechRecognitionEvent));\r\nexports.ListeningStartedEvent = ListeningStartedEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar ConnectingToServiceEvent = (function (_super) {\r\n tslib_1.__extends(ConnectingToServiceEvent, _super);\r\n function ConnectingToServiceEvent(requestId, authFetchEventid, connectionId) {\r\n var _this = _super.call(this, \"ConnectingToServiceEvent\", requestId) || this;\r\n _this.authFetchEventid = authFetchEventid;\r\n _this.connectionId = connectionId;\r\n return _this;\r\n }\r\n Object.defineProperty(ConnectingToServiceEvent.prototype, \"AuthFetchEventid\", {\r\n get: function () {\r\n return this.authFetchEventid;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ConnectingToServiceEvent.prototype, \"ConnectionId\", {\r\n get: function () {\r\n return this.connectionId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ConnectingToServiceEvent;\r\n}(SpeechRecognitionEvent));\r\nexports.ConnectingToServiceEvent = ConnectingToServiceEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar RecognitionStartedEvent = (function (_super) {\r\n tslib_1.__extends(RecognitionStartedEvent, _super);\r\n function RecognitionStartedEvent(requestId, audioSourceId, audioNodeId, authFetchEventId, connectionId) {\r\n var _this = _super.call(this, \"RecognitionStartedEvent\", requestId) || this;\r\n _this.audioSourceId = audioSourceId;\r\n _this.audioNodeId = audioNodeId;\r\n _this.authFetchEventId = authFetchEventId;\r\n _this.connectionId = connectionId;\r\n return _this;\r\n }\r\n Object.defineProperty(RecognitionStartedEvent.prototype, \"AudioSourceId\", {\r\n get: function () {\r\n return this.audioSourceId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RecognitionStartedEvent.prototype, \"AudioNodeId\", {\r\n get: function () {\r\n return this.audioNodeId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RecognitionStartedEvent.prototype, \"AuthFetchEventId\", {\r\n get: function () {\r\n return this.authFetchEventId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RecognitionStartedEvent.prototype, \"ConnectionId\", {\r\n get: function () {\r\n return this.connectionId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return RecognitionStartedEvent;\r\n}(SpeechRecognitionEvent));\r\nexports.RecognitionStartedEvent = RecognitionStartedEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar SpeechStartDetectedEvent = (function (_super) {\r\n tslib_1.__extends(SpeechStartDetectedEvent, _super);\r\n function SpeechStartDetectedEvent(requestId, result) {\r\n return _super.call(this, \"SpeechStartDetectedEvent\", requestId, result) || this;\r\n }\r\n return SpeechStartDetectedEvent;\r\n}(SpeechRecognitionResultEvent));\r\nexports.SpeechStartDetectedEvent = SpeechStartDetectedEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar SpeechHypothesisEvent = (function (_super) {\r\n tslib_1.__extends(SpeechHypothesisEvent, _super);\r\n function SpeechHypothesisEvent(requestId, result) {\r\n return _super.call(this, \"SpeechHypothesisEvent\", requestId, result) || this;\r\n }\r\n return SpeechHypothesisEvent;\r\n}(SpeechRecognitionResultEvent));\r\nexports.SpeechHypothesisEvent = SpeechHypothesisEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar SpeechFragmentEvent = (function (_super) {\r\n tslib_1.__extends(SpeechFragmentEvent, _super);\r\n function SpeechFragmentEvent(requestId, result) {\r\n return _super.call(this, \"SpeechFragmentEvent\", requestId, result) || this;\r\n }\r\n return SpeechFragmentEvent;\r\n}(SpeechRecognitionResultEvent));\r\nexports.SpeechFragmentEvent = SpeechFragmentEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar SpeechEndDetectedEvent = (function (_super) {\r\n tslib_1.__extends(SpeechEndDetectedEvent, _super);\r\n function SpeechEndDetectedEvent(requestId, result) {\r\n return _super.call(this, \"SpeechEndDetectedEvent\", requestId, result) || this;\r\n }\r\n return SpeechEndDetectedEvent;\r\n}(SpeechRecognitionResultEvent));\r\nexports.SpeechEndDetectedEvent = SpeechEndDetectedEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar SpeechSimplePhraseEvent = (function (_super) {\r\n tslib_1.__extends(SpeechSimplePhraseEvent, _super);\r\n function SpeechSimplePhraseEvent(requestId, result) {\r\n return _super.call(this, \"SpeechSimplePhraseEvent\", requestId, result) || this;\r\n }\r\n return SpeechSimplePhraseEvent;\r\n}(SpeechRecognitionResultEvent));\r\nexports.SpeechSimplePhraseEvent = SpeechSimplePhraseEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar SpeechDetailedPhraseEvent = (function (_super) {\r\n tslib_1.__extends(SpeechDetailedPhraseEvent, _super);\r\n function SpeechDetailedPhraseEvent(requestId, result) {\r\n return _super.call(this, \"SpeechDetailedPhraseEvent\", requestId, result) || this;\r\n }\r\n return SpeechDetailedPhraseEvent;\r\n}(SpeechRecognitionResultEvent));\r\nexports.SpeechDetailedPhraseEvent = SpeechDetailedPhraseEvent;\r\nvar RecognitionCompletionStatus;\r\n(function (RecognitionCompletionStatus) {\r\n RecognitionCompletionStatus[RecognitionCompletionStatus[\"Success\"] = 0] = \"Success\";\r\n RecognitionCompletionStatus[RecognitionCompletionStatus[\"AudioSourceError\"] = 1] = \"AudioSourceError\";\r\n RecognitionCompletionStatus[RecognitionCompletionStatus[\"AudioSourceTimeout\"] = 2] = \"AudioSourceTimeout\";\r\n RecognitionCompletionStatus[RecognitionCompletionStatus[\"AuthTokenFetchError\"] = 3] = \"AuthTokenFetchError\";\r\n RecognitionCompletionStatus[RecognitionCompletionStatus[\"AuthTokenFetchTimeout\"] = 4] = \"AuthTokenFetchTimeout\";\r\n RecognitionCompletionStatus[RecognitionCompletionStatus[\"UnAuthorized\"] = 5] = \"UnAuthorized\";\r\n RecognitionCompletionStatus[RecognitionCompletionStatus[\"ConnectTimeout\"] = 6] = \"ConnectTimeout\";\r\n RecognitionCompletionStatus[RecognitionCompletionStatus[\"ConnectError\"] = 7] = \"ConnectError\";\r\n RecognitionCompletionStatus[RecognitionCompletionStatus[\"ClientRecognitionActivityTimeout\"] = 8] = \"ClientRecognitionActivityTimeout\";\r\n RecognitionCompletionStatus[RecognitionCompletionStatus[\"UnknownError\"] = 9] = \"UnknownError\";\r\n})(RecognitionCompletionStatus = exports.RecognitionCompletionStatus || (exports.RecognitionCompletionStatus = {}));\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar RecognitionEndedEvent = (function (_super) {\r\n tslib_1.__extends(RecognitionEndedEvent, _super);\r\n function RecognitionEndedEvent(requestId, audioSourceId, audioNodeId, authFetchEventId, connectionId, serviceTag, status, error) {\r\n var _this = _super.call(this, \"RecognitionEndedEvent\", requestId, status === RecognitionCompletionStatus.Success ? Exports_1.EventType.Info : Exports_1.EventType.Error) || this;\r\n _this.audioSourceId = audioSourceId;\r\n _this.audioNodeId = audioNodeId;\r\n _this.connectionId = connectionId;\r\n _this.authFetchEventId = authFetchEventId;\r\n _this.status = status;\r\n _this.error = error;\r\n _this.serviceTag = serviceTag;\r\n return _this;\r\n }\r\n Object.defineProperty(RecognitionEndedEvent.prototype, \"AudioSourceId\", {\r\n get: function () {\r\n return this.audioSourceId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RecognitionEndedEvent.prototype, \"AudioNodeId\", {\r\n get: function () {\r\n return this.audioNodeId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RecognitionEndedEvent.prototype, \"AuthFetchEventId\", {\r\n get: function () {\r\n return this.authFetchEventId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RecognitionEndedEvent.prototype, \"ConnectionId\", {\r\n get: function () {\r\n return this.connectionId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RecognitionEndedEvent.prototype, \"ServiceTag\", {\r\n get: function () {\r\n return this.serviceTag;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RecognitionEndedEvent.prototype, \"Status\", {\r\n get: function () {\r\n return this.status;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RecognitionEndedEvent.prototype, \"Error\", {\r\n get: function () {\r\n return this.error;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return RecognitionEndedEvent;\r\n}(SpeechRecognitionEvent));\r\nexports.RecognitionEndedEvent = RecognitionEndedEvent;\r\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Exports_1 = __webpack_require__(0);\r\nvar WebsocketMessageAdapter = (function () {\r\n function WebsocketMessageAdapter(uri, connectionId, messageFormatter) {\r\n var _this = this;\r\n this.Open = function () {\r\n if (_this.connectionState === Exports_1.ConnectionState.Disconnected) {\r\n return Exports_1.PromiseHelper.FromError(\"Cannot open a connection that is in \" + _this.connectionState + \" state\");\r\n }\r\n if (_this.connectionEstablishDeferral) {\r\n return _this.connectionEstablishDeferral.Promise();\r\n }\r\n _this.connectionEstablishDeferral = new Exports_1.Deferred();\r\n _this.connectionState = Exports_1.ConnectionState.Connecting;\r\n _this.websocketClient = new WebSocket(_this.uri);\r\n _this.websocketClient.binaryType = \"arraybuffer\";\r\n _this.receivingMessageQueue = new Exports_1.Queue();\r\n _this.disconnectDeferral = new Exports_1.Deferred();\r\n _this.sendMessageQueue = new Exports_1.Queue();\r\n _this.ProcessSendQueue();\r\n _this.OnEvent(new Exports_1.ConnectionStartEvent(_this.connectionId, _this.uri));\r\n _this.websocketClient.onopen = function (e) {\r\n _this.connectionState = Exports_1.ConnectionState.Connected;\r\n _this.OnEvent(new Exports_1.ConnectionEstablishedEvent(_this.connectionId));\r\n _this.connectionEstablishDeferral.Resolve(new Exports_1.ConnectionOpenResponse(200, \"\"));\r\n };\r\n _this.websocketClient.onerror = function (e) {\r\n // TODO: Understand what this is error is. Will we still get onClose ?\r\n if (_this.connectionState !== Exports_1.ConnectionState.Connecting) {\r\n // TODO: Is this required ?\r\n // this.OnEvent(new ConnectionErrorEvent(errorMsg, connectionId));\r\n }\r\n };\r\n _this.websocketClient.onclose = function (e) {\r\n if (_this.connectionState === Exports_1.ConnectionState.Connecting) {\r\n _this.connectionState = Exports_1.ConnectionState.Disconnected;\r\n _this.OnEvent(new Exports_1.ConnectionEstablishErrorEvent(_this.connectionId, e.code, e.reason));\r\n _this.connectionEstablishDeferral.Resolve(new Exports_1.ConnectionOpenResponse(e.code, e.reason));\r\n }\r\n else {\r\n _this.OnEvent(new Exports_1.ConnectionClosedEvent(_this.connectionId, e.code, e.reason));\r\n }\r\n _this.OnClose(e.code, e.reason);\r\n };\r\n _this.websocketClient.onmessage = function (e) {\r\n var networkReceivedTime = new Date().toISOString();\r\n if (_this.connectionState === Exports_1.ConnectionState.Connected) {\r\n var deferred_1 = new Exports_1.Deferred();\r\n // let id = ++this.idCounter;\r\n _this.receivingMessageQueue.EnqueueFromPromise(deferred_1.Promise());\r\n if (e.data instanceof ArrayBuffer) {\r\n var rawMessage = new Exports_1.RawWebsocketMessage(Exports_1.MessageType.Binary, e.data);\r\n _this.messageFormatter\r\n .ToConnectionMessage(rawMessage)\r\n .On(function (connectionMessage) {\r\n _this.OnEvent(new Exports_1.ConnectionMessageReceivedEvent(_this.connectionId, networkReceivedTime, connectionMessage));\r\n deferred_1.Resolve(connectionMessage);\r\n }, function (error) {\r\n // TODO: Events for these ?\r\n deferred_1.Reject(\"Invalid binary message format. Error: \" + error);\r\n });\r\n }\r\n else {\r\n var rawMessage = new Exports_1.RawWebsocketMessage(Exports_1.MessageType.Text, e.data);\r\n _this.messageFormatter\r\n .ToConnectionMessage(rawMessage)\r\n .On(function (connectionMessage) {\r\n _this.OnEvent(new Exports_1.ConnectionMessageReceivedEvent(_this.connectionId, networkReceivedTime, connectionMessage));\r\n deferred_1.Resolve(connectionMessage);\r\n }, function (error) {\r\n // TODO: Events for these ?\r\n deferred_1.Reject(\"Invalid text message format. Error: \" + error);\r\n });\r\n }\r\n }\r\n };\r\n return _this.connectionEstablishDeferral.Promise();\r\n };\r\n this.Send = function (message) {\r\n if (_this.connectionState !== Exports_1.ConnectionState.Connected) {\r\n return Exports_1.PromiseHelper.FromError(\"Cannot send on connection that is in \" + _this.connectionState + \" state\");\r\n }\r\n var messageSendStatusDeferral = new Exports_1.Deferred();\r\n var messageSendDeferral = new Exports_1.Deferred();\r\n _this.sendMessageQueue.EnqueueFromPromise(messageSendDeferral.Promise());\r\n _this.messageFormatter\r\n .FromConnectionMessage(message)\r\n .On(function (rawMessage) {\r\n messageSendDeferral.Resolve({\r\n Message: message,\r\n RawWebsocketMessage: rawMessage,\r\n SendStatusDeferral: messageSendStatusDeferral,\r\n });\r\n }, function (error) {\r\n messageSendDeferral.Reject(\"Error formatting the message. \" + error);\r\n });\r\n return messageSendStatusDeferral.Promise();\r\n };\r\n this.Read = function () {\r\n if (_this.connectionState !== Exports_1.ConnectionState.Connected) {\r\n return Exports_1.PromiseHelper.FromError(\"Cannot read on connection that is in \" + _this.connectionState + \" state\");\r\n }\r\n return _this.receivingMessageQueue.Dequeue();\r\n };\r\n this.Close = function (reason) {\r\n if (_this.websocketClient) {\r\n if (_this.connectionState !== Exports_1.ConnectionState.Connected) {\r\n _this.websocketClient.close(1000, reason ? reason : \"Normal closure by client\");\r\n }\r\n }\r\n else {\r\n var deferral = new Exports_1.Deferred();\r\n deferral.Resolve(true);\r\n return deferral.Promise();\r\n }\r\n return _this.disconnectDeferral.Promise();\r\n };\r\n this.SendRawMessage = function (sendItem) {\r\n try {\r\n _this.OnEvent(new Exports_1.ConnectionMessageSentEvent(_this.connectionId, new Date().toISOString(), sendItem.Message));\r\n _this.websocketClient.send(sendItem.RawWebsocketMessage.Payload);\r\n return Exports_1.PromiseHelper.FromResult(true);\r\n }\r\n catch (e) {\r\n return Exports_1.PromiseHelper.FromError(\"websocket send error: \" + e);\r\n }\r\n };\r\n this.OnClose = function (code, reason) {\r\n var closeReason = \"Connection closed. \" + code + \": \" + reason;\r\n _this.connectionState = Exports_1.ConnectionState.Disconnected;\r\n _this.disconnectDeferral.Resolve(true);\r\n _this.receivingMessageQueue.Dispose(reason);\r\n _this.receivingMessageQueue.DrainAndDispose(function (pendingReceiveItem) {\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 _this.sendMessageQueue.DrainAndDispose(function (pendingSendItem) {\r\n pendingSendItem.SendStatusDeferral.Reject(closeReason);\r\n }, closeReason);\r\n };\r\n this.ProcessSendQueue = function () {\r\n _this.sendMessageQueue\r\n .Dequeue()\r\n .On(function (sendItem) {\r\n _this.SendRawMessage(sendItem)\r\n .On(function (result) {\r\n sendItem.SendStatusDeferral.Resolve(result);\r\n _this.ProcessSendQueue();\r\n }, function (sendError) {\r\n sendItem.SendStatusDeferral.Reject(sendError);\r\n _this.ProcessSendQueue();\r\n });\r\n }, function (error) {\r\n // do nothing\r\n });\r\n };\r\n this.OnEvent = function (event) {\r\n _this.connectionEvents.OnEvent(event);\r\n Exports_1.Events.Instance.OnEvent(event);\r\n };\r\n if (!uri) {\r\n throw new Exports_1.ArgumentNullError(\"uri\");\r\n }\r\n if (!messageFormatter) {\r\n throw new Exports_1.ArgumentNullError(\"messageFormatter\");\r\n }\r\n this.connectionEvents = new Exports_1.EventSource();\r\n this.connectionId = connectionId;\r\n this.messageFormatter = messageFormatter;\r\n this.connectionState = Exports_1.ConnectionState.None;\r\n this.uri = uri;\r\n }\r\n Object.defineProperty(WebsocketMessageAdapter.prototype, \"State\", {\r\n get: function () {\r\n return this.connectionState;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebsocketMessageAdapter.prototype, \"Events\", {\r\n get: function () {\r\n return this.connectionEvents;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return WebsocketMessageAdapter;\r\n}());\r\nexports.WebsocketMessageAdapter = WebsocketMessageAdapter;\r\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Error_1 = __webpack_require__(1);\r\nvar Guid_1 = __webpack_require__(2);\r\nvar MessageType;\r\n(function (MessageType) {\r\n MessageType[MessageType[\"Text\"] = 0] = \"Text\";\r\n MessageType[MessageType[\"Binary\"] = 1] = \"Binary\";\r\n})(MessageType = exports.MessageType || (exports.MessageType = {}));\r\nvar ConnectionMessage = (function () {\r\n function ConnectionMessage(messageType, body, headers, id) {\r\n this.body = null;\r\n if (messageType === MessageType.Text && body && !(typeof (body) === \"string\")) {\r\n throw new Error_1.InvalidOperationError(\"Payload must be a string\");\r\n }\r\n if (messageType === MessageType.Binary && body && !(body instanceof ArrayBuffer)) {\r\n throw new Error_1.InvalidOperationError(\"Payload must be ArrayBuffer\");\r\n }\r\n this.messageType = messageType;\r\n this.body = body;\r\n this.headers = headers ? headers : {};\r\n this.id = id ? id : Guid_1.CreateNoDashGuid();\r\n }\r\n Object.defineProperty(ConnectionMessage.prototype, \"MessageType\", {\r\n get: function () {\r\n return this.messageType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ConnectionMessage.prototype, \"Headers\", {\r\n get: function () {\r\n return this.headers;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ConnectionMessage.prototype, \"Body\", {\r\n get: function () {\r\n return this.body;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ConnectionMessage.prototype, \"TextBody\", {\r\n get: function () {\r\n if (this.messageType === MessageType.Binary) {\r\n throw new Error_1.InvalidOperationError(\"Not supported for binary message\");\r\n }\r\n return this.body;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ConnectionMessage.prototype, \"BinaryBody\", {\r\n get: function () {\r\n if (this.messageType === MessageType.Text) {\r\n throw new Error_1.InvalidOperationError(\"Not supported for text message\");\r\n }\r\n return this.body;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ConnectionMessage.prototype, \"Id\", {\r\n get: function () {\r\n return this.id;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ConnectionMessage;\r\n}());\r\nexports.ConnectionMessage = ConnectionMessage;\r\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Error_1 = __webpack_require__(1);\r\nvar Guid_1 = __webpack_require__(2);\r\nvar EventSource = (function () {\r\n function EventSource(metadata) {\r\n var _this = this;\r\n this.eventListeners = {};\r\n this.isDisposed = false;\r\n this.OnEvent = function (event) {\r\n if (_this.IsDisposed()) {\r\n throw (new Error_1.ObjectDisposedError(\"EventSource\"));\r\n }\r\n if (_this.Metadata) {\r\n for (var 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 for (var eventId in _this.eventListeners) {\r\n if (eventId && _this.eventListeners[eventId]) {\r\n _this.eventListeners[eventId](event);\r\n }\r\n }\r\n };\r\n this.Attach = function (onEventCallback) {\r\n var id = Guid_1.CreateNoDashGuid();\r\n _this.eventListeners[id] = onEventCallback;\r\n return {\r\n Detach: function () {\r\n delete _this.eventListeners[id];\r\n },\r\n };\r\n };\r\n this.AttachListener = function (listener) {\r\n return _this.Attach(listener.OnEvent);\r\n };\r\n this.IsDisposed = function () {\r\n return _this.isDisposed;\r\n };\r\n this.Dispose = function () {\r\n _this.eventListeners = null;\r\n _this.isDisposed = true;\r\n };\r\n this.metadata = metadata;\r\n }\r\n Object.defineProperty(EventSource.prototype, \"Metadata\", {\r\n get: function () {\r\n return this.metadata;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return EventSource;\r\n}());\r\nexports.EventSource = EventSource;\r\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Error_1 = __webpack_require__(1);\r\nvar InMemoryStorage = (function () {\r\n function InMemoryStorage() {\r\n var _this = this;\r\n this.store = {};\r\n this.Get = function (key) {\r\n if (!key) {\r\n throw new Error_1.ArgumentNullError(\"key\");\r\n }\r\n return _this.store[key];\r\n };\r\n this.GetOrAdd = function (key, valueToAdd) {\r\n if (!key) {\r\n throw new Error_1.ArgumentNullError(\"key\");\r\n }\r\n if (_this.store[key] === undefined) {\r\n _this.store[key] = valueToAdd;\r\n }\r\n return _this.store[key];\r\n };\r\n this.Set = function (key, value) {\r\n if (!key) {\r\n throw new Error_1.ArgumentNullError(\"key\");\r\n }\r\n _this.store[key] = value;\r\n };\r\n this.Remove = function (key) {\r\n if (!key) {\r\n throw new Error_1.ArgumentNullError(\"key\");\r\n }\r\n if (_this.store[key] !== undefined) {\r\n delete _this.store[key];\r\n }\r\n };\r\n }\r\n return InMemoryStorage;\r\n}());\r\nexports.InMemoryStorage = InMemoryStorage;\r\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Error_1 = __webpack_require__(1);\r\nvar List = (function () {\r\n function List(list) {\r\n var _this = this;\r\n this.subscriptionIdCounter = 0;\r\n this.addSubscriptions = {};\r\n this.removeSubscriptions = {};\r\n this.disposedSubscriptions = {};\r\n this.disposeReason = null;\r\n this.Get = function (itemIndex) {\r\n _this.ThrowIfDisposed();\r\n return _this.list[itemIndex];\r\n };\r\n this.First = function () {\r\n return _this.Get(0);\r\n };\r\n this.Last = function () {\r\n return _this.Get(_this.Length() - 1);\r\n };\r\n this.Add = function (item) {\r\n _this.ThrowIfDisposed();\r\n _this.InsertAt(_this.list.length, item);\r\n };\r\n this.InsertAt = function (index, item) {\r\n _this.ThrowIfDisposed();\r\n if (index === 0) {\r\n _this.list.unshift(item);\r\n }\r\n else if (index === _this.list.length) {\r\n _this.list.push(item);\r\n }\r\n else {\r\n _this.list.splice(index, 0, item);\r\n }\r\n _this.TriggerSubscriptions(_this.addSubscriptions);\r\n };\r\n this.RemoveFirst = function () {\r\n _this.ThrowIfDisposed();\r\n return _this.RemoveAt(0);\r\n };\r\n this.RemoveLast = function () {\r\n _this.ThrowIfDisposed();\r\n return _this.RemoveAt(_this.Length() - 1);\r\n };\r\n this.RemoveAt = function (index) {\r\n _this.ThrowIfDisposed();\r\n return _this.Remove(index, 1)[0];\r\n };\r\n this.Remove = function (index, count) {\r\n _this.ThrowIfDisposed();\r\n var removedElements = _this.list.splice(index, count);\r\n _this.TriggerSubscriptions(_this.removeSubscriptions);\r\n return removedElements;\r\n };\r\n this.Clear = function () {\r\n _this.ThrowIfDisposed();\r\n _this.Remove(0, _this.Length());\r\n };\r\n this.Length = function () {\r\n _this.ThrowIfDisposed();\r\n return _this.list.length;\r\n };\r\n this.OnAdded = function (addedCallback) {\r\n _this.ThrowIfDisposed();\r\n var subscriptionId = _this.subscriptionIdCounter++;\r\n _this.addSubscriptions[subscriptionId] = addedCallback;\r\n return {\r\n Detach: function () {\r\n delete _this.addSubscriptions[subscriptionId];\r\n },\r\n };\r\n };\r\n this.OnRemoved = function (removedCallback) {\r\n _this.ThrowIfDisposed();\r\n var subscriptionId = _this.subscriptionIdCounter++;\r\n _this.removeSubscriptions[subscriptionId] = removedCallback;\r\n return {\r\n Detach: function () {\r\n delete _this.removeSubscriptions[subscriptionId];\r\n },\r\n };\r\n };\r\n this.OnDisposed = function (disposedCallback) {\r\n _this.ThrowIfDisposed();\r\n var subscriptionId = _this.subscriptionIdCounter++;\r\n _this.disposedSubscriptions[subscriptionId] = disposedCallback;\r\n return {\r\n Detach: function () {\r\n delete _this.disposedSubscriptions[subscriptionId];\r\n },\r\n };\r\n };\r\n this.Join = function (seperator) {\r\n _this.ThrowIfDisposed();\r\n return _this.list.join(seperator);\r\n };\r\n this.ToArray = function () {\r\n var cloneCopy = Array();\r\n _this.list.forEach(function (val) {\r\n cloneCopy.push(val);\r\n });\r\n return cloneCopy;\r\n };\r\n this.Any = function (callback) {\r\n _this.ThrowIfDisposed();\r\n if (callback) {\r\n return _this.Where(callback).Length() > 0;\r\n }\r\n else {\r\n return _this.Length() > 0;\r\n }\r\n };\r\n this.All = function (callback) {\r\n _this.ThrowIfDisposed();\r\n return _this.Where(callback).Length() === _this.Length();\r\n };\r\n this.ForEach = function (callback) {\r\n _this.ThrowIfDisposed();\r\n for (var i = 0; i < _this.Length(); i++) {\r\n callback(_this.list[i], i);\r\n }\r\n };\r\n this.Select = function (callback) {\r\n _this.ThrowIfDisposed();\r\n var selectList = [];\r\n for (var i = 0; i < _this.list.length; i++) {\r\n selectList.push(callback(_this.list[i], i));\r\n }\r\n return new List(selectList);\r\n };\r\n this.Where = function (callback) {\r\n _this.ThrowIfDisposed();\r\n var filteredList = new List();\r\n for (var i = 0; i < _this.list.length; i++) {\r\n if (callback(_this.list[i], i)) {\r\n filteredList.Add(_this.list[i]);\r\n }\r\n }\r\n return filteredList;\r\n };\r\n this.OrderBy = function (compareFn) {\r\n _this.ThrowIfDisposed();\r\n var clonedArray = _this.ToArray();\r\n var orderedArray = clonedArray.sort(compareFn);\r\n return new List(orderedArray);\r\n };\r\n this.OrderByDesc = function (compareFn) {\r\n _this.ThrowIfDisposed();\r\n return _this.OrderBy(function (a, b) { return compareFn(b, a); });\r\n };\r\n this.Clone = function () {\r\n _this.ThrowIfDisposed();\r\n return new List(_this.ToArray());\r\n };\r\n this.Concat = function (list) {\r\n _this.ThrowIfDisposed();\r\n return new List(_this.list.concat(list.ToArray()));\r\n };\r\n this.ConcatArray = function (array) {\r\n _this.ThrowIfDisposed();\r\n return new List(_this.list.concat(array));\r\n };\r\n this.IsDisposed = function () {\r\n return _this.list == null;\r\n };\r\n this.Dispose = function (reason) {\r\n if (!_this.IsDisposed()) {\r\n _this.disposeReason = reason;\r\n _this.list = null;\r\n _this.addSubscriptions = null;\r\n _this.removeSubscriptions = null;\r\n _this.TriggerSubscriptions(_this.disposedSubscriptions);\r\n }\r\n };\r\n this.ThrowIfDisposed = function () {\r\n if (_this.IsDisposed()) {\r\n throw new Error_1.ObjectDisposedError(\"List\", _this.disposeReason);\r\n }\r\n };\r\n this.TriggerSubscriptions = function (subscriptions) {\r\n if (subscriptions) {\r\n for (var subscriptionId in subscriptions) {\r\n if (subscriptionId) {\r\n subscriptions[subscriptionId]();\r\n }\r\n }\r\n }\r\n };\r\n this.list = [];\r\n // copy the list rather than taking as is.\r\n if (list) {\r\n for (var _i = 0, list_1 = list; _i < list_1.length; _i++) {\r\n var item = list_1[_i];\r\n this.list.push(item);\r\n }\r\n }\r\n }\r\n return List;\r\n}());\r\nexports.List = List;\r\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Error_1 = __webpack_require__(1);\r\nvar PromiseState;\r\n(function (PromiseState) {\r\n PromiseState[PromiseState[\"None\"] = 0] = \"None\";\r\n PromiseState[PromiseState[\"Resolved\"] = 1] = \"Resolved\";\r\n PromiseState[PromiseState[\"Rejected\"] = 2] = \"Rejected\";\r\n})(PromiseState = exports.PromiseState || (exports.PromiseState = {}));\r\nvar PromiseResult = (function () {\r\n function PromiseResult(promiseResultEventSource) {\r\n var _this = this;\r\n this.ThrowIfError = function () {\r\n if (_this.IsError) {\r\n throw _this.Error;\r\n }\r\n };\r\n promiseResultEventSource.On(function (result) {\r\n if (!_this.isCompleted) {\r\n _this.isCompleted = true;\r\n _this.isError = false;\r\n _this.result = result;\r\n }\r\n }, function (error) {\r\n if (!_this.isCompleted) {\r\n _this.isCompleted = true;\r\n _this.isError = true;\r\n _this.error = error;\r\n }\r\n });\r\n }\r\n Object.defineProperty(PromiseResult.prototype, \"IsCompleted\", {\r\n get: function () {\r\n return this.isCompleted;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PromiseResult.prototype, \"IsError\", {\r\n get: function () {\r\n return this.isError;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PromiseResult.prototype, \"Error\", {\r\n get: function () {\r\n return this.error;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PromiseResult.prototype, \"Result\", {\r\n get: function () {\r\n return this.result;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return PromiseResult;\r\n}());\r\nexports.PromiseResult = PromiseResult;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar PromiseResultEventSource = (function () {\r\n function PromiseResultEventSource() {\r\n var _this = this;\r\n this.SetResult = function (result) {\r\n _this.onSetResult(result);\r\n };\r\n this.SetError = function (error) {\r\n _this.onSetError(error);\r\n };\r\n this.On = function (onSetResult, onSetError) {\r\n _this.onSetResult = onSetResult;\r\n _this.onSetError = onSetError;\r\n };\r\n }\r\n return PromiseResultEventSource;\r\n}());\r\nexports.PromiseResultEventSource = PromiseResultEventSource;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar PromiseHelper = (function () {\r\n function PromiseHelper() {\r\n }\r\n return PromiseHelper;\r\n}());\r\nPromiseHelper.WhenAll = function (promises) {\r\n if (!promises || promises.length === 0) {\r\n throw new Error_1.ArgumentNullError(\"promises\");\r\n }\r\n var deferred = new Deferred();\r\n var errors = [];\r\n var completedPromises = 0;\r\n var checkForCompletion = function () {\r\n completedPromises++;\r\n if (completedPromises === promises.length) {\r\n if (errors.length === 0) {\r\n deferred.Resolve(true);\r\n }\r\n else {\r\n deferred.Reject(errors.join(\", \"));\r\n }\r\n }\r\n };\r\n for (var _i = 0, promises_1 = promises; _i < promises_1.length; _i++) {\r\n var promise = promises_1[_i];\r\n promise.On(function (r) {\r\n checkForCompletion();\r\n }, function (e) {\r\n errors.push(e);\r\n checkForCompletion();\r\n });\r\n }\r\n return deferred.Promise();\r\n};\r\nPromiseHelper.FromResult = function (result) {\r\n var deferred = new Deferred();\r\n deferred.Resolve(result);\r\n return deferred.Promise();\r\n};\r\nPromiseHelper.FromError = function (error) {\r\n var deferred = new Deferred();\r\n deferred.Reject(error);\r\n return deferred.Promise();\r\n};\r\nexports.PromiseHelper = PromiseHelper;\r\n// TODO: replace with ES6 promises\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar Promise = (function () {\r\n function Promise(sink) {\r\n var _this = this;\r\n this.Result = function () {\r\n return _this.sink.Result;\r\n };\r\n this.ContinueWith = function (continuationCallback) {\r\n if (!continuationCallback) {\r\n throw new Error_1.ArgumentNullError(\"continuationCallback\");\r\n }\r\n var continuationDeferral = new Deferred();\r\n _this.sink.on(function (r) {\r\n try {\r\n var continuationResult = continuationCallback(_this.sink.Result);\r\n continuationDeferral.Resolve(continuationResult);\r\n }\r\n catch (e) {\r\n continuationDeferral.Reject(\"'Unhandled callback error: \" + e + \"'\");\r\n }\r\n }, function (error) {\r\n try {\r\n var continuationResult = continuationCallback(_this.sink.Result);\r\n continuationDeferral.Resolve(continuationResult);\r\n }\r\n catch (e) {\r\n continuationDeferral.Reject(\"'Unhandled callback error: \" + e + \". InnerError: \" + error + \"'\");\r\n }\r\n });\r\n return continuationDeferral.Promise();\r\n };\r\n this.OnSuccessContinueWith = function (continuationCallback) {\r\n if (!continuationCallback) {\r\n throw new Error_1.ArgumentNullError(\"continuationCallback\");\r\n }\r\n var continuationDeferral = new Deferred();\r\n _this.sink.on(function (r) {\r\n try {\r\n var continuationResult = continuationCallback(r);\r\n continuationDeferral.Resolve(continuationResult);\r\n }\r\n catch (e) {\r\n continuationDeferral.Reject(\"'Unhandled callback error: \" + e + \"'\");\r\n }\r\n }, function (error) {\r\n continuationDeferral.Reject(\"'Unhandled callback error: \" + error + \"'\");\r\n });\r\n return continuationDeferral.Promise();\r\n };\r\n this.ContinueWithPromise = function (continuationCallback) {\r\n if (!continuationCallback) {\r\n throw new Error_1.ArgumentNullError(\"continuationCallback\");\r\n }\r\n var continuationDeferral = new Deferred();\r\n _this.sink.on(function (r) {\r\n try {\r\n var continuationPromise = continuationCallback(_this.sink.Result);\r\n if (!continuationPromise) {\r\n throw new Error(\"'Continuation callback did not return promise'\");\r\n }\r\n continuationPromise.On(function (continuationResult) {\r\n continuationDeferral.Resolve(continuationResult);\r\n }, function (e) {\r\n continuationDeferral.Reject(e);\r\n });\r\n }\r\n catch (e) {\r\n continuationDeferral.Reject(\"'Unhandled callback error: \" + e + \"'\");\r\n }\r\n }, function (error) {\r\n try {\r\n var continuationPromise = continuationCallback(_this.sink.Result);\r\n if (!continuationPromise) {\r\n throw new Error(\"Continuation callback did not return promise\");\r\n }\r\n continuationPromise.On(function (continuationResult) {\r\n continuationDeferral.Resolve(continuationResult);\r\n }, function (e) {\r\n continuationDeferral.Reject(e);\r\n });\r\n }\r\n catch (e) {\r\n continuationDeferral.Reject(\"'Unhandled callback error: \" + e + \". InnerError: \" + error + \"'\");\r\n }\r\n });\r\n return continuationDeferral.Promise();\r\n };\r\n this.OnSuccessContinueWithPromise = function (continuationCallback) {\r\n if (!continuationCallback) {\r\n throw new Error_1.ArgumentNullError(\"continuationCallback\");\r\n }\r\n var continuationDeferral = new Deferred();\r\n _this.sink.on(function (r) {\r\n try {\r\n var continuationPromise = continuationCallback(r);\r\n if (!continuationPromise) {\r\n throw new Error(\"Continuation callback did not return promise\");\r\n }\r\n continuationPromise.On(function (continuationResult) {\r\n continuationDeferral.Resolve(continuationResult);\r\n }, function (e) {\r\n continuationDeferral.Reject(e);\r\n });\r\n }\r\n catch (e) {\r\n continuationDeferral.Reject(\"'Unhandled callback error: \" + e + \"'\");\r\n }\r\n }, function (error) {\r\n continuationDeferral.Reject(\"'Unhandled callback error: \" + error + \".'\");\r\n });\r\n return continuationDeferral.Promise();\r\n };\r\n this.On = function (successCallback, errorCallback) {\r\n if (!successCallback) {\r\n throw new Error_1.ArgumentNullError(\"successCallback\");\r\n }\r\n if (!errorCallback) {\r\n throw new Error_1.ArgumentNullError(\"errorCallback\");\r\n }\r\n _this.sink.on(successCallback, errorCallback);\r\n return _this;\r\n };\r\n this.Finally = function (callback) {\r\n if (!callback) {\r\n throw new Error_1.ArgumentNullError(\"callback\");\r\n }\r\n var callbackWrapper = function (_) {\r\n callback();\r\n };\r\n return _this.On(callbackWrapper, callbackWrapper);\r\n };\r\n this.sink = sink;\r\n }\r\n return Promise;\r\n}());\r\nexports.Promise = Promise;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar Deferred = (function () {\r\n function Deferred() {\r\n var _this = this;\r\n this.State = function () {\r\n return _this.sink.State;\r\n };\r\n this.Promise = function () {\r\n return _this.promise;\r\n };\r\n this.Resolve = function (result) {\r\n _this.sink.Resolve(result);\r\n return _this;\r\n };\r\n this.Reject = function (error) {\r\n _this.sink.Reject(error);\r\n return _this;\r\n };\r\n this.sink = new Sink();\r\n this.promise = new Promise(this.sink);\r\n }\r\n return Deferred;\r\n}());\r\nexports.Deferred = Deferred;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar Sink = (function () {\r\n function Sink() {\r\n var _this = this;\r\n this.state = PromiseState.None;\r\n this.promiseResult = null;\r\n this.promiseResultEvents = null;\r\n this.successHandlers = [];\r\n this.errorHandlers = [];\r\n this.Resolve = function (result) {\r\n if (_this.state !== PromiseState.None) {\r\n throw new Error(\"'Cannot resolve a completed promise'\");\r\n }\r\n _this.state = PromiseState.Resolved;\r\n _this.promiseResultEvents.SetResult(result);\r\n for (var i = 0; i < _this.successHandlers.length; i++) {\r\n _this.ExecuteSuccessCallback(result, _this.successHandlers[i], _this.errorHandlers[i]);\r\n }\r\n _this.DetachHandlers();\r\n };\r\n this.Reject = function (error) {\r\n if (_this.state !== PromiseState.None) {\r\n throw new Error(\"'Cannot reject a completed promise'\");\r\n }\r\n _this.state = PromiseState.Rejected;\r\n _this.promiseResultEvents.SetError(error);\r\n for (var _i = 0, _a = _this.errorHandlers; _i < _a.length; _i++) {\r\n var errorHandler = _a[_i];\r\n _this.ExecuteErrorCallback(error, errorHandler);\r\n }\r\n _this.DetachHandlers();\r\n };\r\n this.on = function (successCallback, errorCallback) {\r\n if (successCallback == null) {\r\n successCallback = function (r) { return; };\r\n }\r\n if (_this.state === PromiseState.None) {\r\n _this.successHandlers.push(successCallback);\r\n _this.errorHandlers.push(errorCallback);\r\n }\r\n else {\r\n if (_this.state === PromiseState.Resolved) {\r\n _this.ExecuteSuccessCallback(_this.promiseResult.Result, successCallback, errorCallback);\r\n }\r\n else if (_this.state === PromiseState.Rejected) {\r\n _this.ExecuteErrorCallback(_this.promiseResult.Error, errorCallback);\r\n }\r\n _this.DetachHandlers();\r\n }\r\n };\r\n this.ExecuteSuccessCallback = function (result, successCallback, errorCallback) {\r\n try {\r\n successCallback(result);\r\n }\r\n catch (e) {\r\n _this.ExecuteErrorCallback(\"'Unhandled callback error: \" + e + \"'\", errorCallback);\r\n }\r\n };\r\n this.ExecuteErrorCallback = function (error, errorCallback) {\r\n if (errorCallback) {\r\n try {\r\n errorCallback(error);\r\n }\r\n catch (e) {\r\n throw new Error(\"'Unhandled callback error: \" + e + \". InnerError: \" + error + \"'\");\r\n }\r\n }\r\n else {\r\n throw new Error(\"'Unhandled error: \" + error + \"'\");\r\n }\r\n };\r\n this.DetachHandlers = function () {\r\n _this.errorHandlers = [];\r\n _this.successHandlers = [];\r\n };\r\n this.promiseResultEvents = new PromiseResultEventSource();\r\n this.promiseResult = new PromiseResult(this.promiseResultEvents);\r\n }\r\n Object.defineProperty(Sink.prototype, \"State\", {\r\n get: function () {\r\n return this.state;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Sink.prototype, \"Result\", {\r\n get: function () {\r\n return this.promiseResult;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Sink;\r\n}());\r\nexports.Sink = Sink;\r\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Error_1 = __webpack_require__(1);\r\nvar List_1 = __webpack_require__(13);\r\nvar Promise_1 = __webpack_require__(14);\r\nvar SubscriberType;\r\n(function (SubscriberType) {\r\n SubscriberType[SubscriberType[\"Dequeue\"] = 0] = \"Dequeue\";\r\n SubscriberType[SubscriberType[\"Peek\"] = 1] = \"Peek\";\r\n})(SubscriberType || (SubscriberType = {}));\r\nvar Queue = (function () {\r\n function Queue(list) {\r\n var _this = this;\r\n this.promiseStore = new List_1.List();\r\n this.isDrainInProgress = false;\r\n this.isDisposing = false;\r\n this.disposeReason = null;\r\n this.Enqueue = function (item) {\r\n _this.ThrowIfDispose();\r\n _this.EnqueueFromPromise(Promise_1.PromiseHelper.FromResult(item));\r\n };\r\n this.EnqueueFromPromise = function (promise) {\r\n _this.ThrowIfDispose();\r\n _this.promiseStore.Add(promise);\r\n promise.Finally(function () {\r\n while (_this.promiseStore.Length() > 0) {\r\n if (!_this.promiseStore.First().Result().IsCompleted) {\r\n break;\r\n }\r\n else {\r\n var p = _this.promiseStore.RemoveFirst();\r\n if (!p.Result().IsError) {\r\n _this.list.Add(p.Result().Result);\r\n }\r\n else {\r\n // TODO: Log as warning.\r\n }\r\n }\r\n }\r\n });\r\n };\r\n this.Dequeue = function () {\r\n _this.ThrowIfDispose();\r\n var deferredSubscriber = new Promise_1.Deferred();\r\n _this.subscribers.Add({ deferral: deferredSubscriber, type: SubscriberType.Dequeue });\r\n _this.Drain();\r\n return deferredSubscriber.Promise();\r\n };\r\n this.Peek = function () {\r\n _this.ThrowIfDispose();\r\n var deferredSubscriber = new Promise_1.Deferred();\r\n _this.subscribers.Add({ deferral: deferredSubscriber, type: SubscriberType.Peek });\r\n _this.Drain();\r\n return deferredSubscriber.Promise();\r\n };\r\n this.Length = function () {\r\n _this.ThrowIfDispose();\r\n return _this.list.Length();\r\n };\r\n this.IsDisposed = function () {\r\n return _this.subscribers == null;\r\n };\r\n this.DrainAndDispose = function (pendingItemProcessor, reason) {\r\n if (!_this.IsDisposed() && !_this.isDisposing) {\r\n _this.disposeReason = reason;\r\n _this.isDisposing = true;\r\n while (_this.subscribers.Length() > 0) {\r\n var subscriber = _this.subscribers.RemoveFirst();\r\n // TODO: this needs work (Resolve(null) instead?).\r\n subscriber.deferral.Reject(\"Disposed\");\r\n }\r\n for (var _i = 0, _a = _this.detachables; _i < _a.length; _i++) {\r\n var detachable = _a[_i];\r\n detachable.Detach();\r\n }\r\n if (_this.promiseStore.Length() > 0 && pendingItemProcessor) {\r\n return Promise_1.PromiseHelper\r\n .WhenAll(_this.promiseStore.ToArray())\r\n .ContinueWith(function () {\r\n _this.subscribers = null;\r\n _this.list.ForEach(function (item, index) {\r\n pendingItemProcessor(item);\r\n });\r\n _this.list = null;\r\n return true;\r\n });\r\n }\r\n else {\r\n _this.subscribers = null;\r\n _this.list = null;\r\n }\r\n }\r\n return Promise_1.PromiseHelper.FromResult(true);\r\n };\r\n this.Dispose = function (reason) {\r\n _this.DrainAndDispose(null, reason);\r\n };\r\n this.Drain = function () {\r\n if (!_this.isDrainInProgress && !_this.isDisposing) {\r\n _this.isDrainInProgress = true;\r\n while (_this.list.Length() > 0 && _this.subscribers.Length() > 0 && !_this.isDisposing) {\r\n var subscriber = _this.subscribers.RemoveFirst();\r\n if (subscriber.type === SubscriberType.Peek) {\r\n subscriber.deferral.Resolve(_this.list.First());\r\n }\r\n else {\r\n var dequeuedItem = _this.list.RemoveFirst();\r\n subscriber.deferral.Resolve(dequeuedItem);\r\n }\r\n }\r\n _this.isDrainInProgress = false;\r\n }\r\n };\r\n this.ThrowIfDispose = function () {\r\n if (_this.IsDisposed()) {\r\n if (_this.disposeReason) {\r\n throw new Error_1.InvalidOperationError(_this.disposeReason);\r\n }\r\n throw new Error_1.ObjectDisposedError(\"Queue\");\r\n }\r\n else if (_this.isDisposing) {\r\n throw new Error_1.InvalidOperationError(\"Queue disposing\");\r\n }\r\n };\r\n this.list = list ? list : new List_1.List();\r\n this.detachables = [];\r\n this.subscribers = new List_1.List();\r\n this.detachables.push(this.list.OnAdded(this.Drain));\r\n }\r\n return Queue;\r\n}());\r\nexports.Queue = Queue;\r\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Exports_1 = __webpack_require__(4);\r\nvar Exports_2 = __webpack_require__(0);\r\nvar Exports_3 = __webpack_require__(5);\r\nvar TestHooksParamName = \"testhooks\";\r\nvar ConnectionIdHeader = \"X-ConnectionId\";\r\nvar SpeechConnectionFactory = (function () {\r\n function SpeechConnectionFactory() {\r\n var _this = this;\r\n this.Create = function (config, authInfo, connectionId) {\r\n Exports_2.Storage.Local.Set(\"Host\", \"wss://westus.stt.speech.microsoft.com\");\r\n var endpoint = \"\";\r\n switch (config.RecognitionMode) {\r\n case Exports_3.RecognitionMode.Conversation:\r\n endpoint = _this.Host + _this.ConversationRelativeUri;\r\n break;\r\n case Exports_3.RecognitionMode.Dictation:\r\n endpoint = _this.Host + _this.DictationRelativeUri;\r\n break;\r\n default:\r\n endpoint = _this.Host + _this.InteractiveRelativeUri; // default is interactive\r\n break;\r\n }\r\n var queryParams = {\r\n format: Exports_3.SpeechResultFormat[config.Format].toString().toLowerCase(),\r\n language: config.Language,\r\n };\r\n if (_this.IsDebugModeEnabled) {\r\n queryParams[TestHooksParamName] = \"1\";\r\n }\r\n var headers = {};\r\n headers[authInfo.HeaderName] = authInfo.Token;\r\n headers[ConnectionIdHeader] = connectionId;\r\n return new Exports_1.WebsocketConnection(endpoint, queryParams, headers, new Exports_3.WebsocketMessageFormatter(), config.RecognitionAPI, config.EndpointId, connectionId);\r\n };\r\n }\r\n Object.defineProperty(SpeechConnectionFactory.prototype, \"Host\", {\r\n get: function () {\r\n return Exports_2.Storage.Local.GetOrAdd(\"Host\", \"wss://speech.platform.bing.com\");\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SpeechConnectionFactory.prototype, \"InteractiveRelativeUri\", {\r\n get: function () {\r\n return Exports_2.Storage.Local.GetOrAdd(\"InteractiveRelativeUri\", \"/speech/recognition/interactive/cognitiveservices/v1\");\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SpeechConnectionFactory.prototype, \"ConversationRelativeUri\", {\r\n get: function () {\r\n return Exports_2.Storage.Local.GetOrAdd(\"ConversationRelativeUri\", \"/speech/recognition/conversation/cognitiveservices/v1\");\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SpeechConnectionFactory.prototype, \"DictationRelativeUri\", {\r\n get: function () {\r\n return Exports_2.Storage.Local.GetOrAdd(\"DictationRelativeUri\", \"/speech/recognition/dictation/cognitiveservices/v1\");\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SpeechConnectionFactory.prototype, \"IsDebugModeEnabled\", {\r\n get: function () {\r\n var value = Exports_2.Storage.Local.GetOrAdd(\"IsDebugModeEnabled\", \"false\");\r\n return value.toLowerCase() === \"true\";\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return SpeechConnectionFactory;\r\n}());\r\nexports.SpeechConnectionFactory = SpeechConnectionFactory;\r\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(System) {\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar RecognitionAPI;\r\n(function (RecognitionAPI) {\r\n RecognitionAPI[RecognitionAPI[\"BingSpeech\"] = 0] = \"BingSpeech\";\r\n RecognitionAPI[RecognitionAPI[\"CustomSpeech\"] = 1] = \"CustomSpeech\";\r\n})(RecognitionAPI = exports.RecognitionAPI || (exports.RecognitionAPI = {}));\r\nvar RecognitionMode;\r\n(function (RecognitionMode) {\r\n RecognitionMode[RecognitionMode[\"Interactive\"] = 0] = \"Interactive\";\r\n RecognitionMode[RecognitionMode[\"Conversation\"] = 1] = \"Conversation\";\r\n RecognitionMode[RecognitionMode[\"Dictation\"] = 2] = \"Dictation\";\r\n})(RecognitionMode = exports.RecognitionMode || (exports.RecognitionMode = {}));\r\nvar SpeechResultFormat;\r\n(function (SpeechResultFormat) {\r\n SpeechResultFormat[SpeechResultFormat[\"Simple\"] = 0] = \"Simple\";\r\n SpeechResultFormat[SpeechResultFormat[\"Detailed\"] = 1] = \"Detailed\";\r\n})(SpeechResultFormat = exports.SpeechResultFormat || (exports.SpeechResultFormat = {}));\r\nvar RecognizerConfig = (function () {\r\n function RecognizerConfig(platformConfig, recognitionMode, language, format, recognitionAPI, endpointId) {\r\n if (recognitionMode === void 0) { recognitionMode = RecognitionMode.Interactive; }\r\n if (language === void 0) { language = \"en-us\"; }\r\n if (format === void 0) { format = SpeechResultFormat.Simple; }\r\n this.recognitionMode = RecognitionMode.Interactive;\r\n this.speechConfig = platformConfig ? platformConfig : new SpeechConfig(new Context(null, null));\r\n this.recognitionMode = recognitionMode;\r\n this.language = language;\r\n this.format = format;\r\n this.recognitionActivityTimeout = recognitionMode === RecognitionMode.Interactive ? 8000 : 25000;\r\n this.recognitionAPI = recognitionAPI,\r\n this.endpointId = endpointId;\r\n }\r\n Object.defineProperty(RecognizerConfig.prototype, \"RecognitionMode\", {\r\n get: function () {\r\n return this.recognitionMode;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RecognizerConfig.prototype, \"Language\", {\r\n get: function () {\r\n return this.language;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RecognizerConfig.prototype, \"Format\", {\r\n get: function () {\r\n return this.format;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RecognizerConfig.prototype, \"SpeechConfig\", {\r\n get: function () {\r\n return this.speechConfig;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RecognizerConfig.prototype, \"RecognitionActivityTimeout\", {\r\n get: function () {\r\n return this.recognitionActivityTimeout;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RecognizerConfig.prototype, \"IsContinuousRecognition\", {\r\n get: function () {\r\n return this.recognitionMode !== RecognitionMode.Interactive;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RecognizerConfig.prototype, \"RecognitionAPI\", {\r\n get: function () {\r\n return this.recognitionAPI;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RecognizerConfig.prototype, \"EndpointId\", {\r\n get: function () {\r\n return this.endpointId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return RecognizerConfig;\r\n}());\r\nexports.RecognizerConfig = RecognizerConfig;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar SpeechConfig = (function () {\r\n function SpeechConfig(context) {\r\n var _this = this;\r\n this.Serialize = function () {\r\n return JSON.stringify(_this, function (key, value) {\r\n if (value && typeof value === \"object\") {\r\n var replacement = {};\r\n for (var k in value) {\r\n if (Object.hasOwnProperty.call(value, k)) {\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 this.context = context;\r\n }\r\n Object.defineProperty(SpeechConfig.prototype, \"Context\", {\r\n get: function () {\r\n return this.context;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return SpeechConfig;\r\n}());\r\nexports.SpeechConfig = SpeechConfig;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar Context = (function () {\r\n function Context(os, device) {\r\n this.system = new System();\r\n this.os = os;\r\n this.device = device;\r\n }\r\n Object.defineProperty(Context.prototype, \"System\", {\r\n get: function () {\r\n return this.system;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Context.prototype, \"OS\", {\r\n get: function () {\r\n return this.os;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Context.prototype, \"Device\", {\r\n get: function () {\r\n return this.device;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Context;\r\n}());\r\nexports.Context = Context;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar System = (function () {\r\n function System() {\r\n // TODO: Tie this with the sdk Version somehow\r\n this.version = \"1.0.00000\";\r\n }\r\n Object.defineProperty(System.prototype, \"Version\", {\r\n get: function () {\r\n // Controlled by sdk\r\n return this.version;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return System;\r\n}());\r\nexports.System = System;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar OS = (function () {\r\n function OS(platform, name, version) {\r\n this.platform = platform;\r\n this.name = name;\r\n this.version = version;\r\n }\r\n Object.defineProperty(OS.prototype, \"Platform\", {\r\n get: function () {\r\n return this.platform;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(OS.prototype, \"Name\", {\r\n get: function () {\r\n return this.name;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(OS.prototype, \"Version\", {\r\n get: function () {\r\n return this.version;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return OS;\r\n}());\r\nexports.OS = OS;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar Device = (function () {\r\n function Device(manufacturer, model, version) {\r\n this.manufacturer = manufacturer;\r\n this.model = model;\r\n this.version = version;\r\n }\r\n Object.defineProperty(Device.prototype, \"Manufacturer\", {\r\n get: function () {\r\n return this.manufacturer;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Device.prototype, \"Model\", {\r\n get: function () {\r\n return this.model;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Device.prototype, \"Version\", {\r\n get: function () {\r\n return this.version;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Device;\r\n}());\r\nexports.Device = Device;\r\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(61)))\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.log = function (message) {\r\n var optionalParams = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n optionalParams[_i - 1] = arguments[_i];\r\n }\r\n if (typeof (window) !== 'undefined' && window[\"botchatDebug\"] && message)\r\n console.log.apply(console, [message].concat(optionalParams));\r\n};\r\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(3);\r\nvar konsole = __webpack_require__(18);\r\nvar CognitiveSpeech = __webpack_require__(21);\r\nvar simple_update_in_1 = __webpack_require__(60);\r\nvar SpeechRecognizer = (function () {\r\n function SpeechRecognizer(properties) {\r\n if (properties === void 0) { properties = {}; }\r\n var _this = this;\r\n this.audioStreamStartInitiated = false;\r\n this.isStreamingToService = false;\r\n this.onIntermediateResult = null;\r\n this.onFinalResult = null;\r\n this.onAudioStreamingToService = null;\r\n this.onRecognitionFailed = null;\r\n this.locale = null;\r\n this.actualRecognizer = null;\r\n this.grammars = null;\r\n this.properties = properties;\r\n var recognitionMode = CognitiveSpeech.RecognitionMode.Interactive;\r\n var format = CognitiveSpeech.SpeechResultFormat.Simple;\r\n var locale = properties.locale || 'en-US';\r\n var recognitionAPI = properties.recognitionAPI || CognitiveSpeech.RecognitionAPI.BingSpeech;\r\n var endpointId = properties.endpointId || '';\r\n var recognizerConfig = new CognitiveSpeech.RecognizerConfig(new CognitiveSpeech.SpeechConfig(new CognitiveSpeech.Context(new CognitiveSpeech.OS(navigator.userAgent, \"Browser\", null), new CognitiveSpeech.Device(\"WebChat\", \"WebChat\", \"1.0.00000\"))), recognitionMode, // Speech.RecognitionMode.Interactive (Options - Interactive/Conversation/Dictation>)\r\n locale, // Supported laguages are specific to each recognition mode. Refer to docs.\r\n format, recognitionAPI, endpointId); // Speech.SpeechResultFormat.Simple (Options - Simple/Detailed)\r\n var authentication;\r\n if (properties.subscriptionKey) {\r\n authentication = new CognitiveSpeech.CognitiveSubscriptionKeyAuthentication(properties.subscriptionKey);\r\n }\r\n else if (properties.fetchCallback && properties.fetchOnExpiryCallback) {\r\n authentication = new CognitiveSpeech.CognitiveTokenAuthentication(function (authFetchEventId) {\r\n var d = new CognitiveSpeech.Deferred();\r\n _this.properties.fetchCallback(authFetchEventId).then(function (value) { return d.Resolve(value); }, function (err) { return d.Reject(err); });\r\n return d.Promise();\r\n }, function (authFetchEventId) {\r\n var d = new CognitiveSpeech.Deferred();\r\n _this.properties.fetchOnExpiryCallback(authFetchEventId).then(function (value) { return d.Resolve(value); }, function (err) { return d.Reject(err); });\r\n return d.Promise();\r\n });\r\n }\r\n else {\r\n throw 'Error: The CognitiveServicesSpeechRecognizer requires either a subscriptionKey or a fetchCallback and fetchOnExpiryCallback.';\r\n }\r\n if (window.navigator.getUserMedia) {\r\n this.actualRecognizer = CognitiveSpeech.CreateRecognizer(recognizerConfig, authentication);\r\n }\r\n else {\r\n console.error(\"This browser does not support speech recognition\");\r\n }\r\n }\r\n SpeechRecognizer.prototype.warmup = function () {\r\n };\r\n SpeechRecognizer.prototype.setGrammars = function (grammars) {\r\n this.grammars = grammars;\r\n };\r\n SpeechRecognizer.prototype.startRecognizing = function () {\r\n return tslib_1.__awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n var eventhandler, speechContext;\r\n return tslib_1.__generator(this, function (_a) {\r\n if (!this.actualRecognizer) {\r\n this.log('ERROR: no recognizer?');\r\n return [2 /*return*/];\r\n }\r\n eventhandler = function (event) {\r\n _this.log(event.Name);\r\n switch (event.Name) {\r\n case 'RecognitionTriggeredEvent':\r\n case 'ListeningStartedEvent':\r\n case 'SpeechStartDetectedEvent':\r\n case 'SpeechEndDetectedEvent':\r\n case 'SpeechDetailedPhraseEvent':\r\n case 'ConnectingToServiceEvent':\r\n break;\r\n case 'RecognitionStartedEvent':\r\n if (_this.onAudioStreamingToService) {\r\n _this.onAudioStreamingToService();\r\n }\r\n _this.isStreamingToService = true;\r\n break;\r\n case 'SpeechHypothesisEvent':\r\n var hypothesisEvent = event;\r\n _this.log('Hypothesis Result: ' + hypothesisEvent.Result.Text);\r\n if (_this.onIntermediateResult) {\r\n _this.onIntermediateResult(hypothesisEvent.Result.Text);\r\n }\r\n break;\r\n case 'SpeechSimplePhraseEvent':\r\n var simplePhraseEvent = event;\r\n if (CognitiveSpeech.RecognitionStatus[simplePhraseEvent.Result.RecognitionStatus] === CognitiveSpeech.RecognitionStatus.Success) {\r\n if (_this.onFinalResult) {\r\n _this.onFinalResult(simplePhraseEvent.Result.DisplayText);\r\n }\r\n }\r\n else {\r\n if (_this.onRecognitionFailed) {\r\n _this.onRecognitionFailed();\r\n }\r\n _this.log('Recognition Status: ' + simplePhraseEvent.Result.RecognitionStatus.toString());\r\n }\r\n break;\r\n case 'RecognitionEndedEvent':\r\n _this.isStreamingToService = false;\r\n break;\r\n default:\r\n _this.log(event.Name + \" is unexpected\");\r\n }\r\n };\r\n if (this.referenceGrammarId) {\r\n speechContext = simple_update_in_1.default(speechContext, ['dgi', 'Groups'], function (groups) {\r\n if (groups === void 0) { groups = []; }\r\n return groups.concat([{\r\n Type: 'Generic',\r\n Hints: { ReferenceGrammar: _this.referenceGrammarId }\r\n }]);\r\n });\r\n }\r\n if (this.grammars) {\r\n speechContext = simple_update_in_1.default(speechContext, ['dgi', 'Groups'], function (groups) {\r\n if (groups === void 0) { groups = []; }\r\n return groups.concat([{\r\n Type: 'Generic',\r\n Items: _this.grammars.map(function (grammar) { return ({ Text: grammar }); })\r\n }]);\r\n });\r\n }\r\n return [2 /*return*/, this.actualRecognizer.Recognize(eventhandler, speechContext && JSON.stringify(speechContext))];\r\n });\r\n });\r\n };\r\n SpeechRecognizer.prototype.speechIsAvailable = function () {\r\n return this.actualRecognizer != null;\r\n };\r\n SpeechRecognizer.prototype.stopRecognizing = function () {\r\n return tslib_1.__awaiter(this, void 0, void 0, function () {\r\n return tslib_1.__generator(this, function (_a) {\r\n if (this.actualRecognizer != null) {\r\n this.actualRecognizer.AudioSource.TurnOff();\r\n }\r\n this.isStreamingToService = false;\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n SpeechRecognizer.prototype.log = function (message) {\r\n konsole.log('CognitiveServicesSpeechRecognizer: ' + message);\r\n };\r\n return SpeechRecognizer;\r\n}());\r\nexports.SpeechRecognizer = SpeechRecognizer;\r\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar konsole = __webpack_require__(18);\r\nvar SynthesisGender;\r\n(function (SynthesisGender) {\r\n SynthesisGender[SynthesisGender[\"Male\"] = 0] = \"Male\";\r\n SynthesisGender[SynthesisGender[\"Female\"] = 1] = \"Female\";\r\n})(SynthesisGender = exports.SynthesisGender || (exports.SynthesisGender = {}));\r\n;\r\nvar SpeechSynthesizer = (function () {\r\n function SpeechSynthesizer(properties) {\r\n this._requestQueue = null;\r\n this._isPlaying = false;\r\n this._helper = new CognitiveServicesHelper(properties);\r\n this._properties = properties;\r\n this._requestQueue = new Array();\r\n }\r\n SpeechSynthesizer.prototype.speak = function (text, lang, onSpeakingStarted, onSpeakingFinished) {\r\n var _this = this;\r\n if (onSpeakingStarted === void 0) { onSpeakingStarted = null; }\r\n if (onSpeakingFinished === void 0) { onSpeakingFinished = null; }\r\n this._requestQueue.push({\r\n isReadyToPlay: false,\r\n data: null,\r\n text: text,\r\n locale: lang,\r\n onSpeakingStarted: onSpeakingStarted,\r\n onSpeakingFinished: onSpeakingFinished\r\n });\r\n this.getSpeechData().then(function () {\r\n _this.playAudio();\r\n });\r\n };\r\n SpeechSynthesizer.prototype.stopSpeaking = function () {\r\n if (this._isPlaying) {\r\n this._requestQueue = [];\r\n this._isPlaying = false;\r\n if (this._audioElement && this._audioElement.state !== \"closed\") {\r\n this._audioElement.close();\r\n }\r\n }\r\n };\r\n SpeechSynthesizer.prototype.playAudio = function () {\r\n var _this = this;\r\n if (this._requestQueue.length == 0) {\r\n return;\r\n }\r\n var top = this._requestQueue[0];\r\n if (!top) {\r\n return;\r\n }\r\n if (!top.isReadyToPlay) {\r\n window.setTimeout(function () { return _this.playAudio(); }, 100);\r\n return;\r\n }\r\n if (!this._isPlaying) {\r\n this._isPlaying = true;\r\n if (!this._audioElement || this._audioElement.state === \"closed\") {\r\n if (typeof webkitAudioContext !== \"undefined\") {\r\n this._audioElement = new webkitAudioContext();\r\n }\r\n else {\r\n this._audioElement = new AudioContext();\r\n }\r\n }\r\n this._audioElement.decodeAudioData(top.data, function (buffer) {\r\n var source = _this._audioElement.createBufferSource();\r\n source.buffer = buffer;\r\n source.connect(_this._audioElement.destination);\r\n if (top.onSpeakingStarted) {\r\n top.onSpeakingStarted();\r\n }\r\n source.start(0);\r\n source.onended = function (event) {\r\n _this._isPlaying = false;\r\n if (top.onSpeakingFinished) {\r\n top.onSpeakingFinished();\r\n }\r\n _this._requestQueue = _this._requestQueue.slice(1, _this._requestQueue.length);\r\n if (_this._requestQueue.length > 0) {\r\n _this.playAudio();\r\n }\r\n };\r\n }, function (ex) {\r\n _this.log(ex.message);\r\n _this._isPlaying = false;\r\n _this._requestQueue = _this._requestQueue.slice(1, _this._requestQueue.length);\r\n if (_this._requestQueue.length > 0) {\r\n _this.playAudio();\r\n }\r\n });\r\n }\r\n };\r\n SpeechSynthesizer.prototype.getSpeechData = function () {\r\n var _this = this;\r\n if (this._requestQueue.length == 0) {\r\n return;\r\n }\r\n var latest = this._requestQueue[this._requestQueue.length - 1];\r\n return this._helper.fetchSpeechData(latest.text, latest.locale, this._properties).then(function (result) {\r\n latest.data = result;\r\n latest.isReadyToPlay = true;\r\n }, function (ex) {\r\n // Failed to get the speech data, ignore this item\r\n _this.log(ex);\r\n _this._requestQueue = _this._requestQueue.slice(0, _this._requestQueue.length - 1);\r\n });\r\n };\r\n SpeechSynthesizer.prototype.log = function (message) {\r\n konsole.log('CognitiveServicesSpeechSynthesis: ' + message);\r\n };\r\n return SpeechSynthesizer;\r\n}());\r\nexports.SpeechSynthesizer = SpeechSynthesizer;\r\nvar CognitiveServicesHelper = (function () {\r\n function CognitiveServicesHelper(props) {\r\n var _this = this;\r\n this._customVoiceTokenURL = \"https://westus.api.cognitive.microsoft.com/sts/v1.0/issueToken\";\r\n this._outputFormat = \"riff-16khz-16bit-mono-pcm\";\r\n this._tokenURL = \"https://api.cognitive.microsoft.com/sts/v1.0/issueToken\";\r\n this._synthesisURL = \"https://speech.platform.bing.com/synthesize\";\r\n // source: https://docs.microsoft.com/en-us/azure/cognitive-services/speech/api-reference-rest/bingvoiceoutput\r\n this._femaleVoiceMap = {\r\n \"ar-eg\": \"Microsoft Server Speech Text to Speech Voice (ar-EG, Hoda)\",\r\n \"ca-es\": \"Microsoft Server Speech Text to Speech Voice (ca-ES, HerenaRUS)\",\r\n \"da-dk\": \"Microsoft Server Speech Text to Speech Voice (da-DK, HelleRUS)\",\r\n \"de-de\": \"Microsoft Server Speech Text to Speech Voice (de-DE, Hedda)\",\r\n \"en-au\": \"Microsoft Server Speech Text to Speech Voice (en-AU, Catherine)\",\r\n \"en-ca\": \"Microsoft Server Speech Text to Speech Voice (en-CA, Linda)\",\r\n \"en-gb\": \"Microsoft Server Speech Text to Speech Voice (en-GB, Susan, Apollo)\",\r\n \"en-in\": \"Microsoft Server Speech Text to Speech Voice (en-IN, Heera, Apollo)\",\r\n \"en-us\": \"Microsoft Server Speech Text to Speech Voice (en-US, ZiraRUS)\",\r\n \"es-es\": \"Microsoft Server Speech Text to Speech Voice (es-ES, Laura, Apollo)\",\r\n \"es-mx\": \"Microsoft Server Speech Text to Speech Voice (es-MX, HildaRUS)\",\r\n \"fi-fi\": \"Microsoft Server Speech Text to Speech Voice (fi-FI, HeidiRUS)\",\r\n \"fr-ca\": \"Microsoft Server Speech Text to Speech Voice (fr-CA, Caroline)\",\r\n \"fr-fr\": \"Microsoft Server Speech Text to Speech Voice (fr-FR, Julie, Apollo)\",\r\n \"hi-in\": \"Microsoft Server Speech Text to Speech Voice (hi-IN, Kalpana, Apollo)\",\r\n \"ja-jp\": \"Microsoft Server Speech Text to Speech Voice (ja-JP, Ayumi, Apollo)\",\r\n \"ko-kr\": \"Microsoft Server Speech Text to Speech Voice (ko-KR, HeamiRUS)\",\r\n \"nb-no\": \"Microsoft Server Speech Text to Speech Voice (nb-NO, HuldaRUS)\",\r\n \"nl-nl\": \"Microsoft Server Speech Text to Speech Voice (nl-NL, HannaRUS)\",\r\n \"pl-pl\": \"Microsoft Server Speech Text to Speech Voice (pl-PL, PaulinaRUS)\",\r\n \"pt-br\": \"Microsoft Server Speech Text to Speech Voice (pt-BR, HeloisaRUS)\",\r\n \"pt-pt\": \"Microsoft Server Speech Text to Speech Voice (pt-PT, HeliaRUS)\",\r\n \"ru-ru\": \"Microsoft Server Speech Text to Speech Voice (ru-RU, Irina, Apollo)\",\r\n \"sv-se\": \"Microsoft Server Speech Text to Speech Voice (sv-SE, HedvigRUS)\",\r\n \"tr-tr\": \"Microsoft Server Speech Text to Speech Voice (tr-TR, SedaRUS)\",\r\n \"zh-cn\": \"Microsoft Server Speech Text to Speech Voice (zh-CN, HuihuiRUS)\",\r\n \"zh-hk\": \"Microsoft Server Speech Text to Speech Voice (zh-HK, Tracy, Apollo)\",\r\n \"zh-tw\": \"Microsoft Server Speech Text to Speech Voice (zh-TW, Yating, Apollo)\"\r\n };\r\n this._maleVoiceMap = {\r\n \"ar-sa\": \"Microsoft Server Speech Text to Speech Voice (ar-SA, Naayf)\",\r\n \"cs-cz\": \"Microsoft Server Speech Text to Speech Voice (cs-CZ, Vit)\",\r\n \"de-at\": \"Microsoft Server Speech Text to Speech Voice (de-AT, Michael)\",\r\n \"de-ch\": \"Microsoft Server Speech Text to Speech Voice (de-CH, Karsten)\",\r\n \"de-de\": \"Microsoft Server Speech Text to Speech Voice (de-DE, Stefan, Apollo)\",\r\n \"el-gr\": \"Microsoft Server Speech Text to Speech Voice (el-GR, Stefanos)\",\r\n \"en-gb\": \"Microsoft Server Speech Text to Speech Voice (en-GB, George, Apollo)\",\r\n \"en-ie\": \"Microsoft Server Speech Text to Speech Voice (en-IE, Shaun)\",\r\n \"en-in\": \"Microsoft Server Speech Text to Speech Voice (en-IN, Ravi, Apollo)\",\r\n \"en-us\": \"Microsoft Server Speech Text to Speech Voice (en-US, BenjaminRUS)\",\r\n \"es-es\": \"Microsoft Server Speech Text to Speech Voice (es-ES, Pablo, Apollo)\",\r\n \"es-mx\": \"Microsoft Server Speech Text to Speech Voice (es-MX, Raul, Apollo)\",\r\n \"fr-ch\": \"Microsoft Server Speech Text to Speech Voice (fr-CH, Guillaume)\",\r\n \"fr-fr\": \"Microsoft Server Speech Text to Speech Voice (fr-FR, Paul, Apollo)\",\r\n \"he-il\": \"Microsoft Server Speech Text to Speech Voice (he-IL, Asaf)\",\r\n \"hi-in\": \"Microsoft Server Speech Text to Speech Voice (hi-IN, Hemant)\",\r\n \"hu-hu\": \"Microsoft Server Speech Text to Speech Voice (hu-HU, Szabolcs)\",\r\n \"id-id\": \"Microsoft Server Speech Text to Speech Voice (id-ID, Andika)\",\r\n \"it-it\": \"Microsoft Server Speech Text to Speech Voice (it-IT, Cosimo, Apollo)\",\r\n \"ja-jp\": \"Microsoft Server Speech Text to Speech Voice (ja-JP, Ichiro, Apollo)\",\r\n \"pt-br\": \"Microsoft Server Speech Text to Speech Voice (pt-BR, Daniel, Apollo)\",\r\n \"ro-ro\": \"Microsoft Server Speech Text to Speech Voice (ro-RO, Andrei)\",\r\n \"ru-ru\": \"Microsoft Server Speech Text to Speech Voice (ru-RU, Pavel, Apollo)\",\r\n \"sk-sk\": \"Microsoft Server Speech Text to Speech Voice (sk-SK, Filip)\",\r\n \"th-th\": \"Microsoft Server Speech Text to Speech Voice (th-TH, Pattara)\",\r\n \"zh-cn\": \"Microsoft Server Speech Text to Speech Voice (zh-CN, Kangkang, Apollo)\",\r\n \"zh-hk\": \"Microsoft Server Speech Text to Speech Voice (zh-HK, Danny, Apollo)\",\r\n \"zh-tw\": \"Microsoft Server Speech Text to Speech Voice (zh-TW, Zhiwei, Apollo)\"\r\n };\r\n if (props.customVoiceEndpointUrl) {\r\n console.log(\"Using Custom Voice endpoint: \" + props.customVoiceEndpointUrl);\r\n this._synthesisURL = props.customVoiceEndpointUrl;\r\n this._tokenURL = this._customVoiceTokenURL;\r\n }\r\n if (props.subscriptionKey) {\r\n this._tokenCallback = function (id) { return _this.fetchSpeechToken(id); };\r\n this._tokenExpiredCallback = function (id) { return _this.fetchSpeechToken(id); };\r\n }\r\n else if (props.fetchCallback && props.fetchOnExpiryCallback) {\r\n this._tokenCallback = props.fetchCallback;\r\n this._tokenExpiredCallback = props.fetchOnExpiryCallback;\r\n }\r\n else {\r\n throw 'Error: The CognitiveServicesSpeechSynthesis requires either a subscriptionKey or a fetchCallback and a fetchOnExpiryCallback.';\r\n }\r\n }\r\n CognitiveServicesHelper.prototype.fetchSpeechData = function (text, locale, synthesisProperties) {\r\n var _this = this;\r\n var SSML = this.makeSSML(text, locale, synthesisProperties);\r\n var cbAfterToken = function (token) {\r\n _this._lastTokenTime = Date.now();\r\n var optionalHeaders = [{ name: \"Content-type\", value: 'application/ssml+xml' },\r\n { name: \"X-Microsoft-OutputFormat\", value: _this._outputFormat },\r\n { name: \"Authorization\", value: token }];\r\n return _this.makeHttpCall(\"POST\", _this._synthesisURL, true, optionalHeaders, SSML);\r\n };\r\n if (Date.now() - this._lastTokenTime > 500000) {\r\n return this._tokenExpiredCallback(synthesisProperties.subscriptionKey).then(function (token) { return cbAfterToken(token); });\r\n }\r\n else {\r\n return this._tokenCallback(synthesisProperties.subscriptionKey).then(function (token) { return cbAfterToken(token); });\r\n }\r\n };\r\n CognitiveServicesHelper.prototype.makeSSML = function (text, locale, synthesisProperties) {\r\n if (text.indexOf(\"\" + this.encodeHTML(text) + \"\";\r\n }\r\n };\r\n CognitiveServicesHelper.prototype.processSSML = function (ssml, synthesisProperties) {\r\n var processDone = false;\r\n // Extract locale info from ssml\r\n var locale;\r\n var match = /xml:lang=['\"](\\w\\w-\\w\\w)['\"]/.exec(ssml);\r\n if (match) {\r\n locale = match[1];\r\n }\r\n else {\r\n locale = \"en-us\";\r\n }\r\n // Extract gender from properties\r\n var gender = synthesisProperties && synthesisProperties.gender;\r\n if (gender === null || gender === undefined && synthesisProperties.customVoiceEndpointUrl === undefined) {\r\n gender = SynthesisGender.Female;\r\n }\r\n var parser = new DOMParser();\r\n var dom = parser.parseFromString(ssml, 'text/xml');\r\n var nodes = dom.documentElement.childNodes;\r\n // Check if there is a voice node\r\n for (var i = 0; i < nodes.length; ++i) {\r\n if (nodes[i].nodeName === \"voice\") {\r\n // Check if there is a name attribute on voice element\r\n for (var j = 0; j < nodes[i].attributes.length; ++j) {\r\n if (nodes[i].attributes[j].nodeName === \"name\") {\r\n // Name attribute is found on voice element, use it directly\r\n processDone = true;\r\n break;\r\n }\r\n // Find the gender info from voice element, this will override what is in the properties\r\n if (nodes[i].attributes[j].nodeName === \"xml:gender\") {\r\n gender = nodes[i].attributes[j].nodeValue.toLowerCase() === 'male' ? SynthesisGender.Male : SynthesisGender.Female;\r\n }\r\n }\r\n if (!processDone) {\r\n // Otherwise add the name attribute based on locale and gender\r\n var attribute = dom.createAttribute(\"name\");\r\n attribute.value = (synthesisProperties && synthesisProperties.voiceName) || this.fetchVoiceName(locale, gender);\r\n nodes[i].attributes.setNamedItem(attribute);\r\n processDone = true;\r\n }\r\n break;\r\n }\r\n }\r\n var serializer = new XMLSerializer();\r\n if (!processDone) {\r\n // There is no voice element, add one based on locale\r\n var voiceNode = dom.createElement(\"voice\");\r\n var attribute = dom.createAttribute(\"name\");\r\n attribute.value = (synthesisProperties && synthesisProperties.voiceName) || this.fetchVoiceName(locale, gender);\r\n voiceNode.attributes.setNamedItem(attribute);\r\n while (nodes.length > 0) {\r\n voiceNode.appendChild(dom.documentElement.firstChild);\r\n }\r\n dom.documentElement.appendChild(voiceNode);\r\n }\r\n return serializer.serializeToString(dom);\r\n };\r\n CognitiveServicesHelper.prototype.encodeHTML = function (text) {\r\n return text.replace(/&/g, '&')\r\n .replace(//g, '>')\r\n .replace(/\"/g, '"')\r\n .replace(/'/g, ''');\r\n };\r\n CognitiveServicesHelper.prototype.fetchSpeechToken = function (apiKey) {\r\n var optionalHeaders = [{ name: \"Ocp-Apim-Subscription-Key\", value: apiKey },\r\n // required for Firefox otherwise a CORS error is raised\r\n { name: \"Access-Control-Allow-Origin\", value: \"*\" }];\r\n return this.makeHttpCall(\"POST\", this._tokenURL, false, optionalHeaders).then(function (text) {\r\n konsole.log(\"New authentication token generated.\");\r\n return Promise.resolve(text);\r\n }, function (ex) {\r\n var reason = \"Failed to generate authentication token\";\r\n konsole.log(reason);\r\n return Promise.reject(reason);\r\n });\r\n };\r\n CognitiveServicesHelper.prototype.makeHttpCall = function (actionType, url, isArrayBuffer, optionalHeaders, dataToSend) {\r\n if (isArrayBuffer === void 0) { isArrayBuffer = false; }\r\n return new Promise(function (resolve, reject) {\r\n var xhr = new XMLHttpRequest();\r\n if (isArrayBuffer) {\r\n xhr.responseType = 'arraybuffer';\r\n }\r\n xhr.onreadystatechange = function (event) {\r\n if (xhr.readyState !== 4)\r\n return;\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n if (!isArrayBuffer) {\r\n resolve(xhr.responseText);\r\n }\r\n else {\r\n resolve(xhr.response);\r\n }\r\n }\r\n else {\r\n reject(xhr.status);\r\n }\r\n };\r\n try {\r\n xhr.open(actionType, url, true);\r\n if (optionalHeaders) {\r\n optionalHeaders.forEach(function (header) {\r\n xhr.setRequestHeader(header.name, header.value);\r\n });\r\n }\r\n if (dataToSend) {\r\n xhr.send(dataToSend);\r\n }\r\n else {\r\n xhr.send();\r\n }\r\n }\r\n catch (ex) {\r\n reject(ex);\r\n }\r\n });\r\n };\r\n CognitiveServicesHelper.prototype.fetchVoiceName = function (locale, gender) {\r\n var voiceName;\r\n var localeLowerCase = locale.toLowerCase();\r\n if (gender === SynthesisGender.Female) {\r\n voiceName = this._femaleVoiceMap[localeLowerCase] || this._femaleVoiceMap[\"en-us\"];\r\n }\r\n else {\r\n voiceName = this._maleVoiceMap[localeLowerCase] || this._maleVoiceMap[\"en-us\"];\r\n }\r\n return voiceName;\r\n };\r\n return CognitiveServicesHelper;\r\n}());\r\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nfunction __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Exports_1 = __webpack_require__(4);\r\nvar Exports_2 = __webpack_require__(0);\r\n// Common.Storage.SetLocalStorage(new Common.Browser.LocalStorage());\r\n// Common.Storage.SetSessionStorage(new Common.Browser.SessionStorage());\r\nExports_2.Events.Instance.AttachListener(new Exports_1.ConsoleLoggingListener());\r\n__export(__webpack_require__(0));\r\n__export(__webpack_require__(4));\r\n__export(__webpack_require__(5));\r\n__export(__webpack_require__(49));\r\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Exports_1 = __webpack_require__(0);\r\nvar ConsoleLoggingListener = (function () {\r\n function ConsoleLoggingListener(logLevelFilter) {\r\n if (logLevelFilter === void 0) { logLevelFilter = Exports_1.EventType.Warning; }\r\n var _this = this;\r\n this.OnEvent = function (event) {\r\n if (event.EventType >= _this.logLevelFilter) {\r\n var log = _this.ToString(event);\r\n switch (event.EventType) {\r\n case Exports_1.EventType.Debug:\r\n // tslint:disable-next-line:no-console\r\n console.debug(log);\r\n break;\r\n case Exports_1.EventType.Info:\r\n // tslint:disable-next-line:no-console\r\n console.info(log);\r\n break;\r\n case Exports_1.EventType.Warning:\r\n // tslint:disable-next-line:no-console\r\n console.warn(log);\r\n break;\r\n case Exports_1.EventType.Error:\r\n // tslint:disable-next-line:no-console\r\n console.error(log);\r\n break;\r\n default:\r\n // tslint:disable-next-line:no-console\r\n console.log(log);\r\n break;\r\n }\r\n }\r\n };\r\n this.ToString = function (event) {\r\n var logFragments = [\r\n \"\" + event.EventTime,\r\n \"\" + event.Name,\r\n ];\r\n for (var prop in event) {\r\n if (prop && event.hasOwnProperty(prop) && prop !== \"eventTime\" && prop !== \"eventType\" && prop !== \"eventId\" && prop !== \"name\" && prop !== \"constructor\") {\r\n var value = event[prop];\r\n var valueToLog = \"\";\r\n if (value !== undefined && value !== null) {\r\n if (typeof (value) === \"number\" || typeof (value) === \"string\") {\r\n valueToLog = value.toString();\r\n }\r\n else {\r\n valueToLog = JSON.stringify(value);\r\n }\r\n }\r\n logFragments.push(prop + \": \" + valueToLog);\r\n }\r\n }\r\n return logFragments.join(\" | \");\r\n };\r\n this.logLevelFilter = logLevelFilter;\r\n }\r\n return ConsoleLoggingListener;\r\n}());\r\nexports.ConsoleLoggingListener = ConsoleLoggingListener;\r\n\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Exports_1 = __webpack_require__(0);\r\nvar Exports_2 = __webpack_require__(4);\r\nvar FileAudioSource = (function () {\r\n function FileAudioSource(file, audioSourceId) {\r\n var _this = this;\r\n this.streams = {};\r\n this.TurnOn = function () {\r\n if (typeof FileReader === \"undefined\") {\r\n var errorMsg = \"Browser does not support FileReader.\";\r\n _this.OnEvent(new Exports_1.AudioSourceErrorEvent(errorMsg, \"\")); // initialization error - no streamid at this point\r\n return Exports_1.PromiseHelper.FromError(errorMsg);\r\n }\r\n else if (_this.file.name.lastIndexOf(\".wav\") !== _this.file.name.length - 4) {\r\n var errorMsg = _this.file.name + \" is not supported. Only WAVE files are allowed at the moment.\";\r\n _this.OnEvent(new Exports_1.AudioSourceErrorEvent(errorMsg, \"\"));\r\n return Exports_1.PromiseHelper.FromError(errorMsg);\r\n }\r\n else if (_this.file.size > FileAudioSource.MAX_SIZE) {\r\n var errorMsg = _this.file.name + \" exceeds the maximum allowed file size (\" + FileAudioSource.MAX_SIZE + \").\";\r\n _this.OnEvent(new Exports_1.AudioSourceErrorEvent(errorMsg, \"\"));\r\n return Exports_1.PromiseHelper.FromError(errorMsg);\r\n }\r\n _this.OnEvent(new Exports_1.AudioSourceInitializingEvent(_this.id)); // no stream id\r\n _this.OnEvent(new Exports_1.AudioSourceReadyEvent(_this.id));\r\n return Exports_1.PromiseHelper.FromResult(true);\r\n };\r\n this.Id = function () {\r\n return _this.id;\r\n };\r\n this.Attach = function (audioNodeId) {\r\n _this.OnEvent(new Exports_1.AudioStreamNodeAttachingEvent(_this.id, audioNodeId));\r\n return _this.Upload(audioNodeId).OnSuccessContinueWith(function (streamReader) {\r\n _this.OnEvent(new Exports_1.AudioStreamNodeAttachedEvent(_this.id, audioNodeId));\r\n return {\r\n Detach: function () {\r\n streamReader.Close();\r\n delete _this.streams[audioNodeId];\r\n _this.OnEvent(new Exports_1.AudioStreamNodeDetachedEvent(_this.id, audioNodeId));\r\n _this.TurnOff();\r\n },\r\n Id: function () {\r\n return audioNodeId;\r\n },\r\n Read: function () {\r\n return streamReader.Read();\r\n },\r\n };\r\n });\r\n };\r\n this.Detach = function (audioNodeId) {\r\n if (audioNodeId && _this.streams[audioNodeId]) {\r\n _this.streams[audioNodeId].Close();\r\n delete _this.streams[audioNodeId];\r\n _this.OnEvent(new Exports_1.AudioStreamNodeDetachedEvent(_this.id, audioNodeId));\r\n }\r\n };\r\n this.TurnOff = function () {\r\n for (var streamId in _this.streams) {\r\n if (streamId) {\r\n var stream = _this.streams[streamId];\r\n if (stream && !stream.IsClosed) {\r\n stream.Close();\r\n }\r\n }\r\n }\r\n _this.OnEvent(new Exports_1.AudioSourceOffEvent(_this.id)); // no stream now\r\n return Exports_1.PromiseHelper.FromResult(true);\r\n };\r\n this.Upload = function (audioNodeId) {\r\n return _this.TurnOn()\r\n .OnSuccessContinueWith(function (_) {\r\n var stream = new Exports_1.Stream(audioNodeId);\r\n _this.streams[audioNodeId] = stream;\r\n var reader = new FileReader();\r\n var startOffset = 0;\r\n var endOffset = FileAudioSource.CHUNK_SIZE;\r\n var lastWriteTimestamp = 0;\r\n var processNextChunk = function (event) {\r\n if (stream.IsClosed) {\r\n return; // output stream was closed (somebody called TurnOff). We're done here.\r\n }\r\n if (lastWriteTimestamp !== 0) {\r\n var delay = Date.now() - lastWriteTimestamp;\r\n if (delay < FileAudioSource.UPLOAD_INTERVAL) {\r\n // It's been less than the \"upload interval\" since we've uploaded the\r\n // last chunk. Schedule the next upload to make sure that we're sending\r\n // upstream roughly one chunk per upload interval.\r\n new Exports_2.Timer(FileAudioSource.UPLOAD_INTERVAL - delay, processNextChunk).start();\r\n return;\r\n }\r\n }\r\n stream.Write(reader.result);\r\n lastWriteTimestamp = Date.now();\r\n if (endOffset < _this.file.size) {\r\n startOffset = endOffset;\r\n endOffset = Math.min(endOffset + FileAudioSource.CHUNK_SIZE, _this.file.size);\r\n var chunk_1 = _this.file.slice(startOffset, endOffset);\r\n reader.readAsArrayBuffer(chunk_1);\r\n }\r\n else {\r\n // we've written the entire file to the output stream, can close it now.\r\n stream.Close();\r\n }\r\n };\r\n reader.onload = processNextChunk;\r\n reader.onerror = function (event) {\r\n var errorMsg = \"Error occurred while processing '\" + _this.file.name + \"'. \" + event.error;\r\n _this.OnEvent(new Exports_1.AudioStreamNodeErrorEvent(_this.id, audioNodeId, event.error));\r\n throw new Error(errorMsg);\r\n };\r\n var chunk = _this.file.slice(startOffset, endOffset);\r\n reader.readAsArrayBuffer(chunk);\r\n return stream.GetReader();\r\n });\r\n };\r\n this.OnEvent = function (event) {\r\n _this.events.OnEvent(event);\r\n Exports_1.Events.Instance.OnEvent(event);\r\n };\r\n this.id = audioSourceId ? audioSourceId : Exports_1.CreateNoDashGuid();\r\n this.events = new Exports_1.EventSource();\r\n this.file = file;\r\n }\r\n Object.defineProperty(FileAudioSource.prototype, \"Events\", {\r\n get: function () {\r\n return this.events;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return FileAudioSource;\r\n}());\r\n// Recommended sample rate (bytes/second).\r\nFileAudioSource.SAMPLE_RATE = 16000 * 2; // 16 kHz * 16 bits\r\n// We should stream audio at no faster than 2x real-time (i.e., send five chunks\r\n// per second, with the chunk size == sample rate in bytes per second * 2 / 5).\r\nFileAudioSource.CHUNK_SIZE = FileAudioSource.SAMPLE_RATE * 2 / 5;\r\nFileAudioSource.UPLOAD_INTERVAL = 200; // milliseconds\r\n// 10 seconds of audio in bytes =\r\n// sample rate (bytes/second) * 600 (seconds) + 44 (size of the wave header).\r\nFileAudioSource.MAX_SIZE = FileAudioSource.SAMPLE_RATE * 600 + 44;\r\nexports.FileAudioSource = FileAudioSource;\r\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Exports_1 = __webpack_require__(0);\r\nvar LocalStorage = (function () {\r\n function LocalStorage() {\r\n this.Get = function (key) {\r\n if (!key) {\r\n throw new Exports_1.ArgumentNullError(\"key\");\r\n }\r\n return localStorage.getItem(key);\r\n };\r\n this.GetOrAdd = function (key, valueToAdd) {\r\n if (!key) {\r\n throw new Exports_1.ArgumentNullError(\"key\");\r\n }\r\n var value = localStorage.getItem(key);\r\n if (value === null || value === undefined) {\r\n localStorage.setItem(key, valueToAdd);\r\n }\r\n return localStorage.getItem(key);\r\n };\r\n this.Set = function (key, value) {\r\n if (!key) {\r\n throw new Exports_1.ArgumentNullError(\"key\");\r\n }\r\n localStorage.setItem(key, value);\r\n };\r\n this.Remove = function (key) {\r\n if (!key) {\r\n throw new Exports_1.ArgumentNullError(\"key\");\r\n }\r\n localStorage.removeItem(key);\r\n };\r\n }\r\n return LocalStorage;\r\n}());\r\nexports.LocalStorage = LocalStorage;\r\n\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Exports_1 = __webpack_require__(0);\r\nvar MicAudioSource = (function () {\r\n function MicAudioSource(recorder, audioSourceId) {\r\n var _this = this;\r\n this.streams = {};\r\n this.TurnOn = function () {\r\n if (_this.initializeDeferral) {\r\n return _this.initializeDeferral.Promise();\r\n }\r\n _this.initializeDeferral = new Exports_1.Deferred();\r\n _this.CreateAudioContext();\r\n var nav = window.navigator;\r\n var getUserMedia = (nav.getUserMedia ||\r\n nav.webkitGetUserMedia ||\r\n nav.mozGetUserMedia ||\r\n nav.msGetUserMedia);\r\n if (!!nav.mediaDevices) {\r\n getUserMedia = function (constraints, successCallback, errorCallback) {\r\n nav.mediaDevices\r\n .getUserMedia(constraints)\r\n .then(successCallback)\r\n .catch(errorCallback);\r\n };\r\n }\r\n if (!getUserMedia) {\r\n var errorMsg = \"Browser does not support getUserMedia.\";\r\n _this.initializeDeferral.Reject(errorMsg);\r\n _this.OnEvent(new Exports_1.AudioSourceErrorEvent(errorMsg, \"\")); // mic initialized error - no streamid at this point\r\n }\r\n else {\r\n var next = function () {\r\n _this.OnEvent(new Exports_1.AudioSourceInitializingEvent(_this.id)); // no stream id\r\n getUserMedia({ audio: true, video: false }, function (mediaStream) {\r\n _this.mediaStream = mediaStream;\r\n _this.OnEvent(new Exports_1.AudioSourceReadyEvent(_this.id));\r\n _this.initializeDeferral.Resolve(true);\r\n }, function (error) {\r\n var errorMsg = \"Error occurred during microphone initialization: \" + error;\r\n var tmp = _this.initializeDeferral;\r\n // HACK: this should be handled through onError callbacks of all promises up the stack.\r\n // Unfortunately, the current implementation does not provide an easy way to reject promises\r\n // without a lot of code replication.\r\n // TODO: fix promise implementation, allow for a graceful reject chaining.\r\n _this.initializeDeferral = null;\r\n tmp.Reject(errorMsg); // this will bubble up through the whole chain of promises,\r\n // with each new level adding extra \"Unhandled callback error\" prefix to the error message.\r\n // The following line is not guaranteed to be executed.\r\n _this.OnEvent(new Exports_1.AudioSourceErrorEvent(_this.id, errorMsg));\r\n });\r\n };\r\n if (_this.context.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.context.resume().then(next, function (reason) {\r\n _this.initializeDeferral.Reject(\"Failed to initialize audio context: \" + reason);\r\n });\r\n }\r\n else {\r\n next();\r\n }\r\n }\r\n return _this.initializeDeferral.Promise();\r\n };\r\n this.Id = function () {\r\n return _this.id;\r\n };\r\n this.Attach = function (audioNodeId) {\r\n _this.OnEvent(new Exports_1.AudioStreamNodeAttachingEvent(_this.id, audioNodeId));\r\n return _this.Listen(audioNodeId).OnSuccessContinueWith(function (streamReader) {\r\n _this.OnEvent(new Exports_1.AudioStreamNodeAttachedEvent(_this.id, audioNodeId));\r\n return {\r\n Detach: function () {\r\n streamReader.Close();\r\n delete _this.streams[audioNodeId];\r\n _this.OnEvent(new Exports_1.AudioStreamNodeDetachedEvent(_this.id, audioNodeId));\r\n _this.TurnOff();\r\n },\r\n Id: function () {\r\n return audioNodeId;\r\n },\r\n Read: function () {\r\n return streamReader.Read();\r\n },\r\n };\r\n });\r\n };\r\n this.Detach = function (audioNodeId) {\r\n if (audioNodeId && _this.streams[audioNodeId]) {\r\n _this.streams[audioNodeId].Close();\r\n delete _this.streams[audioNodeId];\r\n _this.OnEvent(new Exports_1.AudioStreamNodeDetachedEvent(_this.id, audioNodeId));\r\n }\r\n };\r\n this.TurnOff = function () {\r\n for (var streamId in _this.streams) {\r\n if (streamId) {\r\n var stream = _this.streams[streamId];\r\n if (stream) {\r\n stream.Close();\r\n }\r\n }\r\n }\r\n _this.OnEvent(new Exports_1.AudioSourceOffEvent(_this.id)); // no stream now\r\n _this.initializeDeferral = null;\r\n _this.DestroyAudioContext();\r\n return Exports_1.PromiseHelper.FromResult(true);\r\n };\r\n this.Listen = function (audioNodeId) {\r\n return _this.TurnOn()\r\n .OnSuccessContinueWith(function (_) {\r\n var stream = new Exports_1.Stream(audioNodeId);\r\n _this.streams[audioNodeId] = stream;\r\n try {\r\n _this.recorder.Record(_this.context, _this.mediaStream, stream);\r\n }\r\n catch (error) {\r\n _this.OnEvent(new Exports_1.AudioStreamNodeErrorEvent(_this.id, audioNodeId, error));\r\n throw error;\r\n }\r\n return stream.GetReader();\r\n });\r\n };\r\n this.OnEvent = function (event) {\r\n _this.events.OnEvent(event);\r\n Exports_1.Events.Instance.OnEvent(event);\r\n };\r\n this.CreateAudioContext = function () {\r\n if (!!_this.context) {\r\n return;\r\n }\r\n // https://developer.mozilla.org/en-US/docs/Web/API/AudioContext\r\n var AudioContext = (window.AudioContext)\r\n || (window.webkitAudioContext)\r\n || false;\r\n if (!AudioContext) {\r\n throw new Error(\"Browser does not support Web Audio API (AudioContext is not available).\");\r\n }\r\n _this.context = new AudioContext();\r\n };\r\n this.DestroyAudioContext = function () {\r\n if (!_this.context) {\r\n return;\r\n }\r\n _this.recorder.ReleaseMediaResources(_this.context);\r\n if (\"close\" in _this.context) {\r\n _this.context.close();\r\n _this.context = null;\r\n }\r\n else if (_this.context.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 _this.context.suspend();\r\n }\r\n };\r\n this.id = audioSourceId ? audioSourceId : Exports_1.CreateNoDashGuid();\r\n this.events = new Exports_1.EventSource();\r\n this.recorder = recorder;\r\n }\r\n Object.defineProperty(MicAudioSource.prototype, \"Events\", {\r\n get: function () {\r\n return this.events;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return MicAudioSource;\r\n}());\r\nexports.MicAudioSource = MicAudioSource;\r\n\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar OpusRecorder = (function () {\r\n function OpusRecorder(options) {\r\n var _this = this;\r\n this.Record = function (context, mediaStream, outputStream) {\r\n var mediaRecorder = new MediaRecorder(mediaStream, _this.mediaRecorderOptions);\r\n var timeslice = 100; // this is in ms - 100 ensures that the chunk doesn't exceed the max size of chunk allowed in WS connection\r\n mediaRecorder.ondataavailable = function (dataAvailableEvent) {\r\n if (outputStream) {\r\n var reader_1 = new FileReader();\r\n reader_1.readAsArrayBuffer(dataAvailableEvent.data);\r\n reader_1.onloadend = function (event) {\r\n outputStream.Write(reader_1.result);\r\n };\r\n }\r\n };\r\n _this.mediaResources = {\r\n recorder: mediaRecorder,\r\n stream: mediaStream,\r\n };\r\n mediaRecorder.start(timeslice);\r\n };\r\n this.ReleaseMediaResources = function (context) {\r\n if (_this.mediaResources.recorder.state !== \"inactive\") {\r\n _this.mediaResources.recorder.stop();\r\n }\r\n _this.mediaResources.stream.getTracks().forEach(function (track) { return track.stop(); });\r\n };\r\n this.mediaRecorderOptions = options;\r\n }\r\n return OpusRecorder;\r\n}());\r\nexports.OpusRecorder = OpusRecorder;\r\n/* Declaring this inline to avoid compiler warnings\r\ndeclare class MediaRecorder {\r\n constructor(mediaStream: MediaStream, options: any);\r\n\r\n public state: string;\r\n\r\n public ondataavailable(dataAvailableEvent: any): void;\r\n public stop(): void;\r\n}*/\r\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Exports_1 = __webpack_require__(0);\r\nvar PcmRecorder = (function () {\r\n function PcmRecorder() {\r\n var _this = this;\r\n this.Record = function (context, mediaStream, outputStream) {\r\n var desiredSampleRate = 16000;\r\n // https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/createScriptProcessor\r\n var scriptNode = (function () {\r\n var bufferSize = 0;\r\n try {\r\n return context.createScriptProcessor(bufferSize, 1, 1);\r\n }\r\n catch (error) {\r\n // Webkit (<= version 31) requires a valid bufferSize.\r\n bufferSize = 2048;\r\n var 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 var waveStreamEncoder = new Exports_1.RiffPcmEncoder(context.sampleRate, desiredSampleRate);\r\n var needHeader = true;\r\n var that = _this;\r\n scriptNode.onaudioprocess = function (event) {\r\n var inputFrame = event.inputBuffer.getChannelData(0);\r\n if (outputStream && !outputStream.IsClosed) {\r\n var waveFrame = waveStreamEncoder.Encode(needHeader, inputFrame);\r\n if (!!waveFrame) {\r\n outputStream.Write(waveFrame);\r\n needHeader = false;\r\n }\r\n }\r\n };\r\n // https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/createMediaStreamSource\r\n var micInput = context.createMediaStreamSource(mediaStream);\r\n _this.mediaResources = {\r\n scriptProcessorNode: scriptNode,\r\n source: micInput,\r\n stream: mediaStream,\r\n };\r\n micInput.connect(scriptNode);\r\n scriptNode.connect(context.destination);\r\n };\r\n this.ReleaseMediaResources = function (context) {\r\n if (_this.mediaResources) {\r\n if (_this.mediaResources.scriptProcessorNode) {\r\n _this.mediaResources.scriptProcessorNode.disconnect(context.destination);\r\n _this.mediaResources.scriptProcessorNode = null;\r\n }\r\n if (_this.mediaResources.source) {\r\n _this.mediaResources.source.disconnect();\r\n _this.mediaResources.stream.getTracks().forEach(function (track) { return track.stop(); });\r\n _this.mediaResources.source = null;\r\n }\r\n }\r\n };\r\n }\r\n return PcmRecorder;\r\n}());\r\nexports.PcmRecorder = PcmRecorder;\r\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Exports_1 = __webpack_require__(0);\r\nvar SessionStorage = (function () {\r\n function SessionStorage() {\r\n this.Get = function (key) {\r\n if (!key) {\r\n throw new Exports_1.ArgumentNullError(\"key\");\r\n }\r\n return sessionStorage.getItem(key);\r\n };\r\n this.GetOrAdd = function (key, valueToAdd) {\r\n if (!key) {\r\n throw new Exports_1.ArgumentNullError(\"key\");\r\n }\r\n var value = sessionStorage.getItem(key);\r\n if (value === null || value === undefined) {\r\n sessionStorage.setItem(key, valueToAdd);\r\n }\r\n return sessionStorage.getItem(key);\r\n };\r\n this.Set = function (key, value) {\r\n if (!key) {\r\n throw new Exports_1.ArgumentNullError(\"key\");\r\n }\r\n sessionStorage.setItem(key, value);\r\n };\r\n this.Remove = function (key) {\r\n if (!key) {\r\n throw new Exports_1.ArgumentNullError(\"key\");\r\n }\r\n sessionStorage.removeItem(key);\r\n };\r\n }\r\n return SessionStorage;\r\n}());\r\nexports.SessionStorage = SessionStorage;\r\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Timer = (function () {\r\n function Timer(delayInMillisec, successCallback) {\r\n var _this = this;\r\n this.start = function () {\r\n var params = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n params[_i] = arguments[_i];\r\n }\r\n if (_this.timerId) {\r\n _this.stop();\r\n }\r\n _this.timerId = setTimeout(_this.successCallback, _this.delayInMillisec, params);\r\n };\r\n this.stop = function () {\r\n clearTimeout(_this.timerId);\r\n };\r\n this.delayInMillisec = delayInMillisec;\r\n this.successCallback = successCallback;\r\n }\r\n return Timer;\r\n}());\r\nexports.Timer = Timer;\r\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Exports_1 = __webpack_require__(0);\r\nvar Exports_2 = __webpack_require__(5);\r\nvar WebsocketMessageAdapter_1 = __webpack_require__(9);\r\nvar WebsocketConnection = (function () {\r\n function WebsocketConnection(uri, queryParameters, headers, messageFormatter, recognitionAPI, endpointId, connectionId) {\r\n var _this = this;\r\n this.isDisposed = false;\r\n this.Dispose = function () {\r\n _this.isDisposed = true;\r\n if (_this.connectionMessageAdapter) {\r\n _this.connectionMessageAdapter.Close();\r\n }\r\n };\r\n this.IsDisposed = function () {\r\n return _this.isDisposed;\r\n };\r\n this.State = function () {\r\n return _this.connectionMessageAdapter.State;\r\n };\r\n this.Open = function () {\r\n return _this.connectionMessageAdapter.Open();\r\n };\r\n this.Send = function (message) {\r\n return _this.connectionMessageAdapter.Send(message);\r\n };\r\n this.Read = function () {\r\n return _this.connectionMessageAdapter.Read();\r\n };\r\n if (!uri) {\r\n throw new Exports_1.ArgumentNullError(\"uri\");\r\n }\r\n if (!messageFormatter) {\r\n throw new Exports_1.ArgumentNullError(\"messageFormatter\");\r\n }\r\n this.messageFormatter = messageFormatter;\r\n var queryParams = \"\";\r\n var i = 0;\r\n if (recognitionAPI === Exports_2.RecognitionAPI.CustomSpeech) {\r\n queryParams = \"?cid=\" + endpointId;\r\n i++;\r\n }\r\n if (queryParameters) {\r\n for (var paramName in queryParameters) {\r\n if (paramName) {\r\n queryParams += i === 0 ? \"?\" : \"&\";\r\n var val = encodeURIComponent(queryParameters[paramName]);\r\n queryParams += paramName + \"=\" + val;\r\n i++;\r\n }\r\n }\r\n }\r\n if (headers) {\r\n for (var headerName in headers) {\r\n if (headerName) {\r\n queryParams += i === 0 ? \"?\" : \"&\";\r\n var val = encodeURIComponent(headers[headerName]);\r\n queryParams += headerName + \"=\" + val;\r\n i++;\r\n }\r\n }\r\n }\r\n this.uri = uri + queryParams;\r\n this.id = connectionId ? connectionId : Exports_1.CreateNoDashGuid();\r\n this.connectionMessageAdapter = new WebsocketMessageAdapter_1.WebsocketMessageAdapter(this.uri, this.Id, this.messageFormatter);\r\n }\r\n Object.defineProperty(WebsocketConnection.prototype, \"Id\", {\r\n get: function () {\r\n return this.id;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebsocketConnection.prototype, \"Events\", {\r\n get: function () {\r\n return this.connectionMessageAdapter.Events;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return WebsocketConnection;\r\n}());\r\nexports.WebsocketConnection = WebsocketConnection;\r\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(3);\r\nvar PlatformEvent_1 = __webpack_require__(6);\r\nvar AudioSourceEvent = (function (_super) {\r\n tslib_1.__extends(AudioSourceEvent, _super);\r\n function AudioSourceEvent(eventName, audioSourceId, eventType) {\r\n if (eventType === void 0) { eventType = PlatformEvent_1.EventType.Info; }\r\n var _this = _super.call(this, eventName, eventType) || this;\r\n _this.audioSourceId = audioSourceId;\r\n return _this;\r\n }\r\n Object.defineProperty(AudioSourceEvent.prototype, \"AudioSourceId\", {\r\n get: function () {\r\n return this.audioSourceId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AudioSourceEvent;\r\n}(PlatformEvent_1.PlatformEvent));\r\nexports.AudioSourceEvent = AudioSourceEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar AudioSourceInitializingEvent = (function (_super) {\r\n tslib_1.__extends(AudioSourceInitializingEvent, _super);\r\n function AudioSourceInitializingEvent(audioSourceId) {\r\n return _super.call(this, \"AudioSourceInitializingEvent\", audioSourceId) || this;\r\n }\r\n return AudioSourceInitializingEvent;\r\n}(AudioSourceEvent));\r\nexports.AudioSourceInitializingEvent = AudioSourceInitializingEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar AudioSourceReadyEvent = (function (_super) {\r\n tslib_1.__extends(AudioSourceReadyEvent, _super);\r\n function AudioSourceReadyEvent(audioSourceId) {\r\n return _super.call(this, \"AudioSourceReadyEvent\", audioSourceId) || this;\r\n }\r\n return AudioSourceReadyEvent;\r\n}(AudioSourceEvent));\r\nexports.AudioSourceReadyEvent = AudioSourceReadyEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar AudioSourceOffEvent = (function (_super) {\r\n tslib_1.__extends(AudioSourceOffEvent, _super);\r\n function AudioSourceOffEvent(audioSourceId) {\r\n return _super.call(this, \"AudioSourceOffEvent\", audioSourceId) || this;\r\n }\r\n return AudioSourceOffEvent;\r\n}(AudioSourceEvent));\r\nexports.AudioSourceOffEvent = AudioSourceOffEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar AudioSourceErrorEvent = (function (_super) {\r\n tslib_1.__extends(AudioSourceErrorEvent, _super);\r\n function AudioSourceErrorEvent(audioSourceId, error) {\r\n var _this = _super.call(this, \"AudioSourceErrorEvent\", audioSourceId, PlatformEvent_1.EventType.Error) || this;\r\n _this.error = error;\r\n return _this;\r\n }\r\n Object.defineProperty(AudioSourceErrorEvent.prototype, \"Error\", {\r\n get: function () {\r\n return this.error;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AudioSourceErrorEvent;\r\n}(AudioSourceEvent));\r\nexports.AudioSourceErrorEvent = AudioSourceErrorEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar AudioStreamNodeEvent = (function (_super) {\r\n tslib_1.__extends(AudioStreamNodeEvent, _super);\r\n function AudioStreamNodeEvent(eventName, audioSourceId, audioNodeId) {\r\n var _this = _super.call(this, eventName, audioSourceId) || this;\r\n _this.audioNodeId = audioNodeId;\r\n return _this;\r\n }\r\n Object.defineProperty(AudioStreamNodeEvent.prototype, \"AudioNodeId\", {\r\n get: function () {\r\n return this.audioNodeId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AudioStreamNodeEvent;\r\n}(AudioSourceEvent));\r\nexports.AudioStreamNodeEvent = AudioStreamNodeEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar AudioStreamNodeAttachingEvent = (function (_super) {\r\n tslib_1.__extends(AudioStreamNodeAttachingEvent, _super);\r\n function AudioStreamNodeAttachingEvent(audioSourceId, audioNodeId) {\r\n return _super.call(this, \"AudioStreamNodeAttachingEvent\", audioSourceId, audioNodeId) || this;\r\n }\r\n return AudioStreamNodeAttachingEvent;\r\n}(AudioStreamNodeEvent));\r\nexports.AudioStreamNodeAttachingEvent = AudioStreamNodeAttachingEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar AudioStreamNodeAttachedEvent = (function (_super) {\r\n tslib_1.__extends(AudioStreamNodeAttachedEvent, _super);\r\n function AudioStreamNodeAttachedEvent(audioSourceId, audioNodeId) {\r\n return _super.call(this, \"AudioStreamNodeAttachedEvent\", audioSourceId, audioNodeId) || this;\r\n }\r\n return AudioStreamNodeAttachedEvent;\r\n}(AudioStreamNodeEvent));\r\nexports.AudioStreamNodeAttachedEvent = AudioStreamNodeAttachedEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar AudioStreamNodeDetachedEvent = (function (_super) {\r\n tslib_1.__extends(AudioStreamNodeDetachedEvent, _super);\r\n function AudioStreamNodeDetachedEvent(audioSourceId, audioNodeId) {\r\n return _super.call(this, \"AudioStreamNodeDetachedEvent\", audioSourceId, audioNodeId) || this;\r\n }\r\n return AudioStreamNodeDetachedEvent;\r\n}(AudioStreamNodeEvent));\r\nexports.AudioStreamNodeDetachedEvent = AudioStreamNodeDetachedEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar AudioStreamNodeErrorEvent = (function (_super) {\r\n tslib_1.__extends(AudioStreamNodeErrorEvent, _super);\r\n function AudioStreamNodeErrorEvent(audioSourceId, audioNodeId, error) {\r\n var _this = _super.call(this, \"AudioStreamNodeErrorEvent\", audioSourceId, audioNodeId) || this;\r\n _this.error = error;\r\n return _this;\r\n }\r\n Object.defineProperty(AudioStreamNodeErrorEvent.prototype, \"Error\", {\r\n get: function () {\r\n return this.error;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AudioStreamNodeErrorEvent;\r\n}(AudioStreamNodeEvent));\r\nexports.AudioStreamNodeErrorEvent = AudioStreamNodeErrorEvent;\r\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(3);\r\nvar PlatformEvent_1 = __webpack_require__(6);\r\nvar ConnectionEvent = (function (_super) {\r\n tslib_1.__extends(ConnectionEvent, _super);\r\n function ConnectionEvent(eventName, connectionId, eventType) {\r\n if (eventType === void 0) { eventType = PlatformEvent_1.EventType.Info; }\r\n var _this = _super.call(this, eventName, eventType) || this;\r\n _this.connectionId = connectionId;\r\n return _this;\r\n }\r\n Object.defineProperty(ConnectionEvent.prototype, \"ConnectionId\", {\r\n get: function () {\r\n return this.connectionId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ConnectionEvent;\r\n}(PlatformEvent_1.PlatformEvent));\r\nexports.ConnectionEvent = ConnectionEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar ConnectionStartEvent = (function (_super) {\r\n tslib_1.__extends(ConnectionStartEvent, _super);\r\n function ConnectionStartEvent(connectionId, uri, headers) {\r\n var _this = _super.call(this, \"ConnectionStartEvent\", connectionId) || this;\r\n _this.uri = uri;\r\n _this.headers = headers;\r\n return _this;\r\n }\r\n Object.defineProperty(ConnectionStartEvent.prototype, \"Uri\", {\r\n get: function () {\r\n return this.uri;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ConnectionStartEvent.prototype, \"Headers\", {\r\n get: function () {\r\n return this.headers;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ConnectionStartEvent;\r\n}(ConnectionEvent));\r\nexports.ConnectionStartEvent = ConnectionStartEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar ConnectionEstablishedEvent = (function (_super) {\r\n tslib_1.__extends(ConnectionEstablishedEvent, _super);\r\n function ConnectionEstablishedEvent(connectionId, metadata) {\r\n return _super.call(this, \"ConnectionEstablishedEvent\", connectionId) || this;\r\n }\r\n return ConnectionEstablishedEvent;\r\n}(ConnectionEvent));\r\nexports.ConnectionEstablishedEvent = ConnectionEstablishedEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar ConnectionClosedEvent = (function (_super) {\r\n tslib_1.__extends(ConnectionClosedEvent, _super);\r\n function ConnectionClosedEvent(connectionId, statusCode, reason) {\r\n var _this = _super.call(this, \"ConnectionClosedEvent\", connectionId, PlatformEvent_1.EventType.Warning) || this;\r\n _this.reason = reason;\r\n _this.statusCode = statusCode;\r\n return _this;\r\n }\r\n Object.defineProperty(ConnectionClosedEvent.prototype, \"Reason\", {\r\n get: function () {\r\n return this.reason;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ConnectionClosedEvent.prototype, \"StatusCode\", {\r\n get: function () {\r\n return this.statusCode;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ConnectionClosedEvent;\r\n}(ConnectionEvent));\r\nexports.ConnectionClosedEvent = ConnectionClosedEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar ConnectionEstablishErrorEvent = (function (_super) {\r\n tslib_1.__extends(ConnectionEstablishErrorEvent, _super);\r\n function ConnectionEstablishErrorEvent(connectionId, statuscode, reason) {\r\n var _this = _super.call(this, \"ConnectionEstablishErrorEvent\", connectionId, PlatformEvent_1.EventType.Error) || this;\r\n _this.statusCode = statuscode;\r\n _this.reason = reason;\r\n return _this;\r\n }\r\n Object.defineProperty(ConnectionEstablishErrorEvent.prototype, \"Reason\", {\r\n get: function () {\r\n return this.reason;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ConnectionEstablishErrorEvent.prototype, \"StatusCode\", {\r\n get: function () {\r\n return this.statusCode;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ConnectionEstablishErrorEvent;\r\n}(ConnectionEvent));\r\nexports.ConnectionEstablishErrorEvent = ConnectionEstablishErrorEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar ConnectionMessageReceivedEvent = (function (_super) {\r\n tslib_1.__extends(ConnectionMessageReceivedEvent, _super);\r\n function ConnectionMessageReceivedEvent(connectionId, networkReceivedTimeISO, message) {\r\n var _this = _super.call(this, \"ConnectionMessageReceivedEvent\", connectionId) || this;\r\n _this.networkReceivedTime = networkReceivedTimeISO;\r\n _this.message = message;\r\n return _this;\r\n }\r\n Object.defineProperty(ConnectionMessageReceivedEvent.prototype, \"NetworkReceivedTime\", {\r\n get: function () {\r\n return this.networkReceivedTime;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ConnectionMessageReceivedEvent.prototype, \"Message\", {\r\n get: function () {\r\n return this.message;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ConnectionMessageReceivedEvent;\r\n}(ConnectionEvent));\r\nexports.ConnectionMessageReceivedEvent = ConnectionMessageReceivedEvent;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar ConnectionMessageSentEvent = (function (_super) {\r\n tslib_1.__extends(ConnectionMessageSentEvent, _super);\r\n function ConnectionMessageSentEvent(connectionId, networkSentTimeISO, message) {\r\n var _this = _super.call(this, \"ConnectionMessageSentEvent\", connectionId) || this;\r\n _this.networkSentTime = networkSentTimeISO;\r\n _this.message = message;\r\n return _this;\r\n }\r\n Object.defineProperty(ConnectionMessageSentEvent.prototype, \"NetworkSentTime\", {\r\n get: function () {\r\n return this.networkSentTime;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ConnectionMessageSentEvent.prototype, \"Message\", {\r\n get: function () {\r\n return this.message;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ConnectionMessageSentEvent;\r\n}(ConnectionEvent));\r\nexports.ConnectionMessageSentEvent = ConnectionMessageSentEvent;\r\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ConnectionOpenResponse = (function () {\r\n function ConnectionOpenResponse(statusCode, reason) {\r\n this.statusCode = statusCode;\r\n this.reason = reason;\r\n }\r\n Object.defineProperty(ConnectionOpenResponse.prototype, \"StatusCode\", {\r\n get: function () {\r\n return this.statusCode;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ConnectionOpenResponse.prototype, \"Reason\", {\r\n get: function () {\r\n return this.reason;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ConnectionOpenResponse;\r\n}());\r\nexports.ConnectionOpenResponse = ConnectionOpenResponse;\r\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Error_1 = __webpack_require__(1);\r\nvar EventSource_1 = __webpack_require__(11);\r\nvar Events = (function () {\r\n function Events() {\r\n }\r\n Object.defineProperty(Events, \"Instance\", {\r\n get: function () {\r\n return Events.instance;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Events;\r\n}());\r\nEvents.instance = new EventSource_1.EventSource();\r\nEvents.SetEventSource = function (eventSource) {\r\n if (!eventSource) {\r\n throw new Error_1.ArgumentNullError(\"eventSource\");\r\n }\r\n Events.instance = eventSource;\r\n};\r\nexports.Events = Events;\r\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ConnectionState;\r\n(function (ConnectionState) {\r\n ConnectionState[ConnectionState[\"None\"] = 0] = \"None\";\r\n ConnectionState[ConnectionState[\"Connected\"] = 1] = \"Connected\";\r\n ConnectionState[ConnectionState[\"Connecting\"] = 2] = \"Connecting\";\r\n ConnectionState[ConnectionState[\"Disconnected\"] = 3] = \"Disconnected\";\r\n})(ConnectionState = exports.ConnectionState || (exports.ConnectionState = {}));\r\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ConnectionMessage_1 = __webpack_require__(10);\r\nvar Error_1 = __webpack_require__(1);\r\nvar Guid_1 = __webpack_require__(2);\r\nvar RawWebsocketMessage = (function () {\r\n function RawWebsocketMessage(messageType, payload, id) {\r\n this.payload = null;\r\n if (!payload) {\r\n throw new Error_1.ArgumentNullError(\"payload\");\r\n }\r\n if (messageType === ConnectionMessage_1.MessageType.Binary && !(payload instanceof ArrayBuffer)) {\r\n throw new Error_1.InvalidOperationError(\"Payload must be ArrayBuffer\");\r\n }\r\n if (messageType === ConnectionMessage_1.MessageType.Text && !(typeof (payload) === \"string\")) {\r\n throw new Error_1.InvalidOperationError(\"Payload must be a string\");\r\n }\r\n this.messageType = messageType;\r\n this.payload = payload;\r\n this.id = id ? id : Guid_1.CreateNoDashGuid();\r\n }\r\n Object.defineProperty(RawWebsocketMessage.prototype, \"MessageType\", {\r\n get: function () {\r\n return this.messageType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RawWebsocketMessage.prototype, \"Payload\", {\r\n get: function () {\r\n return this.payload;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RawWebsocketMessage.prototype, \"TextContent\", {\r\n get: function () {\r\n if (this.messageType === ConnectionMessage_1.MessageType.Binary) {\r\n throw new Error_1.InvalidOperationError(\"Not supported for binary message\");\r\n }\r\n return this.payload;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RawWebsocketMessage.prototype, \"BinaryContent\", {\r\n get: function () {\r\n if (this.messageType === ConnectionMessage_1.MessageType.Text) {\r\n throw new Error_1.InvalidOperationError(\"Not supported for text message\");\r\n }\r\n return this.payload;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RawWebsocketMessage.prototype, \"Id\", {\r\n get: function () {\r\n return this.id;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return RawWebsocketMessage;\r\n}());\r\nexports.RawWebsocketMessage = RawWebsocketMessage;\r\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar RiffPcmEncoder = (function () {\r\n function RiffPcmEncoder(actualSampleRate, desiredSampleRate) {\r\n var _this = this;\r\n this.channelCount = 1;\r\n this.Encode = function (needHeader, actualAudioFrame) {\r\n var audioFrame = _this.DownSampleAudioFrame(actualAudioFrame, _this.actualSampleRate, _this.desiredSampleRate);\r\n if (!audioFrame) {\r\n return null;\r\n }\r\n var audioLength = audioFrame.length * 2;\r\n if (!needHeader) {\r\n var buffer_1 = new ArrayBuffer(audioLength);\r\n var view_1 = new DataView(buffer_1);\r\n _this.FloatTo16BitPCM(view_1, 0, audioFrame);\r\n return buffer_1;\r\n }\r\n var buffer = new ArrayBuffer(44 + audioLength);\r\n var bitsPerSample = 16;\r\n var bytesPerSample = bitsPerSample / 8;\r\n // We dont know ahead of time about the length of audio to stream. So set to 0.\r\n var fileLength = 0;\r\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView\r\n var view = new DataView(buffer);\r\n /* RIFF identifier */\r\n _this.SetString(view, 0, \"RIFF\");\r\n /* file length */\r\n view.setUint32(4, fileLength, 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 /* sample format (raw) */\r\n view.setUint16(20, 1, true);\r\n /* channel count */\r\n view.setUint16(22, _this.channelCount, true);\r\n /* sample rate */\r\n view.setUint32(24, _this.desiredSampleRate, true);\r\n /* byte rate (sample rate * block align) */\r\n view.setUint32(28, _this.desiredSampleRate * _this.channelCount * bytesPerSample, true);\r\n /* block align (channel count * bytes per sample) */\r\n view.setUint16(32, _this.channelCount * bytesPerSample, true);\r\n /* bits per sample */\r\n view.setUint16(34, bitsPerSample, true);\r\n /* data chunk identifier */\r\n _this.SetString(view, 36, \"data\");\r\n /* data chunk length */\r\n view.setUint32(40, fileLength, true);\r\n _this.FloatTo16BitPCM(view, 44, audioFrame);\r\n return buffer;\r\n };\r\n this.SetString = function (view, offset, str) {\r\n for (var i = 0; i < str.length; i++) {\r\n view.setUint8(offset + i, str.charCodeAt(i));\r\n }\r\n };\r\n this.FloatTo16BitPCM = function (view, offset, input) {\r\n for (var i = 0; i < input.length; i++, offset += 2) {\r\n var 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 this.DownSampleAudioFrame = function (srcFrame, srcRate, dstRate) {\r\n if (dstRate === srcRate || dstRate > srcRate) {\r\n return srcFrame;\r\n }\r\n var ratio = srcRate / dstRate;\r\n var dstLength = Math.round(srcFrame.length / ratio);\r\n var dstFrame = new Float32Array(dstLength);\r\n var srcOffset = 0;\r\n var dstOffset = 0;\r\n while (dstOffset < dstLength) {\r\n var nextSrcOffset = Math.round((dstOffset + 1) * ratio);\r\n var accum = 0;\r\n var 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 return dstFrame;\r\n };\r\n this.actualSampleRate = actualSampleRate;\r\n this.desiredSampleRate = desiredSampleRate;\r\n }\r\n return RiffPcmEncoder;\r\n}());\r\nexports.RiffPcmEncoder = RiffPcmEncoder;\r\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Error_1 = __webpack_require__(1);\r\nvar InMemoryStorage_1 = __webpack_require__(12);\r\nvar Storage = (function () {\r\n function Storage() {\r\n }\r\n Object.defineProperty(Storage, \"Session\", {\r\n get: function () {\r\n return Storage.sessionStorage;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Storage, \"Local\", {\r\n get: function () {\r\n return Storage.localStorage;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Storage;\r\n}());\r\nStorage.sessionStorage = new InMemoryStorage_1.InMemoryStorage();\r\nStorage.localStorage = new InMemoryStorage_1.InMemoryStorage();\r\nStorage.SetSessionStorage = function (sessionStorage) {\r\n if (!sessionStorage) {\r\n throw new Error_1.ArgumentNullError(\"sessionStorage\");\r\n }\r\n Storage.sessionStorage = sessionStorage;\r\n};\r\nStorage.SetLocalStorage = function (localStorage) {\r\n if (!localStorage) {\r\n throw new Error_1.ArgumentNullError(\"localStorage\");\r\n }\r\n Storage.localStorage = localStorage;\r\n};\r\nexports.Storage = Storage;\r\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Error_1 = __webpack_require__(1);\r\nvar Guid_1 = __webpack_require__(2);\r\nvar Queue_1 = __webpack_require__(15);\r\nvar Stream = (function () {\r\n function Stream(streamId) {\r\n var _this = this;\r\n this.readerIdCounter = 1;\r\n this.isEnded = false;\r\n this.Write = function (buffer) {\r\n _this.ThrowIfClosed();\r\n _this.WriteStreamChunk({\r\n Buffer: buffer,\r\n IsEnd: false,\r\n });\r\n };\r\n this.GetReader = function () {\r\n var readerId = _this.readerIdCounter;\r\n _this.readerIdCounter++;\r\n var readerQueue = new Queue_1.Queue();\r\n var currentLength = _this.streambuffer.length;\r\n _this.readerQueues[readerId] = readerQueue;\r\n for (var i = 0; i < currentLength; i++) {\r\n readerQueue.Enqueue(_this.streambuffer[i]);\r\n }\r\n return new StreamReader(_this.id, readerQueue, function () {\r\n delete _this.readerQueues[readerId];\r\n });\r\n };\r\n this.Close = function () {\r\n if (!_this.isEnded) {\r\n _this.WriteStreamChunk({\r\n Buffer: null,\r\n IsEnd: true,\r\n });\r\n _this.isEnded = true;\r\n }\r\n };\r\n this.WriteStreamChunk = function (streamChunk) {\r\n _this.ThrowIfClosed();\r\n _this.streambuffer.push(streamChunk);\r\n for (var readerId in _this.readerQueues) {\r\n if (!_this.readerQueues[readerId].IsDisposed()) {\r\n try {\r\n _this.readerQueues[readerId].Enqueue(streamChunk);\r\n }\r\n catch (e) {\r\n // Do nothing\r\n }\r\n }\r\n }\r\n };\r\n this.ThrowIfClosed = function () {\r\n if (_this.isEnded) {\r\n throw new Error_1.InvalidOperationError(\"Stream closed\");\r\n }\r\n };\r\n this.id = streamId ? streamId : Guid_1.CreateNoDashGuid();\r\n this.streambuffer = [];\r\n this.readerQueues = {};\r\n }\r\n Object.defineProperty(Stream.prototype, \"IsClosed\", {\r\n get: function () {\r\n return this.isEnded;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Stream.prototype, \"Id\", {\r\n get: function () {\r\n return this.id;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Stream;\r\n}());\r\nexports.Stream = Stream;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar StreamReader = (function () {\r\n function StreamReader(streamId, readerQueue, onClose) {\r\n var _this = this;\r\n this.isClosed = false;\r\n this.Read = function () {\r\n if (_this.IsClosed) {\r\n throw new Error_1.InvalidOperationError(\"StreamReader closed\");\r\n }\r\n return _this.readerQueue\r\n .Dequeue()\r\n .OnSuccessContinueWith(function (streamChunk) {\r\n if (streamChunk.IsEnd) {\r\n _this.readerQueue.Dispose(\"End of stream reached\");\r\n }\r\n return streamChunk;\r\n });\r\n };\r\n this.Close = function () {\r\n if (!_this.isClosed) {\r\n _this.isClosed = true;\r\n _this.readerQueue.Dispose(\"StreamReader closed\");\r\n _this.onClose();\r\n }\r\n };\r\n this.readerQueue = readerQueue;\r\n this.onClose = onClose;\r\n this.streamId = streamId;\r\n }\r\n Object.defineProperty(StreamReader.prototype, \"IsClosed\", {\r\n get: function () {\r\n return this.isClosed;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(StreamReader.prototype, \"StreamId\", {\r\n get: function () {\r\n return this.streamId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return StreamReader;\r\n}());\r\nexports.StreamReader = StreamReader;\r\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nfunction __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__export(__webpack_require__(50));\r\n__export(__webpack_require__(16));\r\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Exports_1 = __webpack_require__(4);\r\nvar Exports_2 = __webpack_require__(5);\r\nvar SpeechConnectionFactory_1 = __webpack_require__(16);\r\nvar CreateRecognizer = function (recognizerConfig, authentication) {\r\n return CreateRecognizerWithPcmRecorder(recognizerConfig, authentication);\r\n};\r\nexports.CreateRecognizer = CreateRecognizer;\r\nvar CreateRecognizerWithPcmRecorder = function (recognizerConfig, authentication) {\r\n return CreateRecognizerWithCustomAudioSource(recognizerConfig, authentication, new Exports_1.MicAudioSource(new Exports_1.PcmRecorder()));\r\n};\r\nexports.CreateRecognizerWithPcmRecorder = CreateRecognizerWithPcmRecorder;\r\nvar CreateRecognizerWithFileAudioSource = function (recognizerConfig, authentication, file) {\r\n return CreateRecognizerWithCustomAudioSource(recognizerConfig, authentication, new Exports_1.FileAudioSource(file));\r\n};\r\nexports.CreateRecognizerWithFileAudioSource = CreateRecognizerWithFileAudioSource;\r\nvar CreateRecognizerWithCustomAudioSource = function (recognizerConfig, authentication, audioSource) {\r\n return new Exports_2.Recognizer(authentication, new SpeechConnectionFactory_1.SpeechConnectionFactory(), audioSource, recognizerConfig);\r\n};\r\nexports.CreateRecognizerWithCustomAudioSource = CreateRecognizerWithCustomAudioSource;\r\n\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Exports_1 = __webpack_require__(0);\r\nvar IAuthentication_1 = __webpack_require__(7);\r\nvar AuthHeader = \"Ocp-Apim-Subscription-Key\";\r\nvar CognitiveSubscriptionKeyAuthentication = (function () {\r\n function CognitiveSubscriptionKeyAuthentication(subscriptionKey) {\r\n var _this = this;\r\n this.Fetch = function (authFetchEventId) {\r\n return Exports_1.PromiseHelper.FromResult(_this.authInfo);\r\n };\r\n this.FetchOnExpiry = function (authFetchEventId) {\r\n return Exports_1.PromiseHelper.FromResult(_this.authInfo);\r\n };\r\n if (!subscriptionKey) {\r\n throw new Exports_1.ArgumentNullError(\"subscriptionKey\");\r\n }\r\n this.authInfo = new IAuthentication_1.AuthInfo(AuthHeader, subscriptionKey);\r\n }\r\n return CognitiveSubscriptionKeyAuthentication;\r\n}());\r\nexports.CognitiveSubscriptionKeyAuthentication = CognitiveSubscriptionKeyAuthentication;\r\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Exports_1 = __webpack_require__(0);\r\nvar IAuthentication_1 = __webpack_require__(7);\r\nvar AuthHeader = \"Authorization\";\r\nvar CognitiveTokenAuthentication = (function () {\r\n function CognitiveTokenAuthentication(fetchCallback, fetchOnExpiryCallback) {\r\n var _this = this;\r\n this.Fetch = function (authFetchEventId) {\r\n return _this.fetchCallback(authFetchEventId).OnSuccessContinueWith(function (token) { return new IAuthentication_1.AuthInfo(AuthHeader, token); });\r\n };\r\n this.FetchOnExpiry = function (authFetchEventId) {\r\n return _this.fetchOnExpiryCallback(authFetchEventId).OnSuccessContinueWith(function (token) { return new IAuthentication_1.AuthInfo(AuthHeader, token); });\r\n };\r\n if (!fetchCallback) {\r\n throw new Exports_1.ArgumentNullError(\"fetchCallback\");\r\n }\r\n if (!fetchOnExpiryCallback) {\r\n throw new Exports_1.ArgumentNullError(\"fetchOnExpiryCallback\");\r\n }\r\n this.fetchCallback = fetchCallback;\r\n this.fetchOnExpiryCallback = fetchOnExpiryCallback;\r\n }\r\n return CognitiveTokenAuthentication;\r\n}());\r\nexports.CognitiveTokenAuthentication = CognitiveTokenAuthentication;\r\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Exports_1 = __webpack_require__(0);\r\nvar RecognitionEvents_1 = __webpack_require__(8);\r\nvar RecognizerConfig_1 = __webpack_require__(17);\r\nvar ServiceTelemetryListener_Internal_1 = __webpack_require__(55);\r\nvar SpeechConnectionMessage_Internal_1 = __webpack_require__(56);\r\nvar Recognizer = (function () {\r\n function Recognizer(authentication, connectionFactory, audioSource, recognizerConfig) {\r\n var _this = this;\r\n this.Recognize = function (onEventCallback, speechContextJson) {\r\n var requestSession = new RequestSession(_this.audioSource.Id(), onEventCallback);\r\n requestSession.ListenForServiceTelemetry(_this.audioSource.Events);\r\n return _this.audioSource\r\n .Attach(requestSession.AudioNodeId)\r\n .ContinueWithPromise(function (result) {\r\n if (result.IsError) {\r\n requestSession.OnAudioSourceAttachCompleted(null, true, result.Error);\r\n throw new Error(result.Error);\r\n }\r\n else {\r\n requestSession.OnAudioSourceAttachCompleted(result.Result, false);\r\n }\r\n var audioNode = result.Result;\r\n _this.FetchConnection(requestSession)\r\n .OnSuccessContinueWith(function (connection) {\r\n var messageRetrievalPromise = _this.ReceiveMessage(connection, requestSession);\r\n var messageSendPromise = _this.SendSpeechConfig(requestSession.RequestId, connection, _this.recognizerConfig.SpeechConfig.Serialize())\r\n .OnSuccessContinueWithPromise(function (_) {\r\n return _this.SendSpeechContext(requestSession.RequestId, connection, speechContextJson)\r\n .OnSuccessContinueWithPromise(function (_) {\r\n return _this.SendAudio(requestSession.RequestId, connection, audioNode, requestSession);\r\n });\r\n });\r\n var completionPromise = Exports_1.PromiseHelper.WhenAll([messageRetrievalPromise, messageSendPromise]);\r\n completionPromise.On(function (r) {\r\n requestSession.Dispose();\r\n _this.SendTelemetryData(requestSession.RequestId, connection, requestSession.GetTelemetry());\r\n }, function (error) {\r\n requestSession.Dispose(error);\r\n _this.SendTelemetryData(requestSession.RequestId, connection, requestSession.GetTelemetry());\r\n });\r\n return completionPromise;\r\n });\r\n return requestSession.CompletionPromise;\r\n });\r\n };\r\n this.FetchConnection = function (requestSession, isUnAuthorized) {\r\n if (isUnAuthorized === void 0) { isUnAuthorized = false; }\r\n if (_this.connectionFetchPromise) {\r\n if (_this.connectionFetchPromise.Result().IsError\r\n || _this.connectionFetchPromise.Result().Result.State() === Exports_1.ConnectionState.Disconnected) {\r\n _this.connectionId = null;\r\n _this.connectionFetchPromise = null;\r\n return _this.FetchConnection(requestSession);\r\n }\r\n else {\r\n requestSession.OnPreConnectionStart(_this.authFetchEventId, _this.connectionId);\r\n requestSession.OnConnectionEstablishCompleted(200);\r\n requestSession.ListenForServiceTelemetry(_this.connectionFetchPromise.Result().Result.Events);\r\n return _this.connectionFetchPromise;\r\n }\r\n }\r\n _this.authFetchEventId = Exports_1.CreateNoDashGuid();\r\n _this.connectionId = Exports_1.CreateNoDashGuid();\r\n requestSession.OnPreConnectionStart(_this.authFetchEventId, _this.connectionId);\r\n var authPromise = isUnAuthorized ? _this.authentication.FetchOnExpiry(_this.authFetchEventId) : _this.authentication.Fetch(_this.authFetchEventId);\r\n _this.connectionFetchPromise = authPromise\r\n .ContinueWithPromise(function (result) {\r\n if (result.IsError) {\r\n requestSession.OnAuthCompleted(true, result.Error);\r\n throw new Error(result.Error);\r\n }\r\n else {\r\n requestSession.OnAuthCompleted(false);\r\n }\r\n var connection = _this.connectionFactory.Create(_this.recognizerConfig, result.Result, _this.connectionId);\r\n requestSession.ListenForServiceTelemetry(connection.Events);\r\n return connection.Open().OnSuccessContinueWithPromise(function (response) {\r\n if (response.StatusCode === 200) {\r\n requestSession.OnConnectionEstablishCompleted(response.StatusCode);\r\n return Exports_1.PromiseHelper.FromResult(connection);\r\n }\r\n else if (response.StatusCode === 403 && !isUnAuthorized) {\r\n return _this.FetchConnection(requestSession, true);\r\n }\r\n else {\r\n requestSession.OnConnectionEstablishCompleted(response.StatusCode, response.Reason);\r\n return Exports_1.PromiseHelper.FromError(\"Unable to contact server. StatusCode: \" + response.StatusCode + \", Reason: \" + response.Reason);\r\n }\r\n });\r\n });\r\n return _this.connectionFetchPromise;\r\n };\r\n this.ReceiveMessage = function (connection, requestSession) {\r\n return connection\r\n .Read()\r\n .OnSuccessContinueWithPromise(function (message) {\r\n var connectionMessage = SpeechConnectionMessage_Internal_1.SpeechConnectionMessage.FromConnectionMessage(message);\r\n if (connectionMessage.RequestId.toLowerCase() === requestSession.RequestId.toLowerCase()) {\r\n switch (connectionMessage.Path.toLowerCase()) {\r\n case \"turn.start\":\r\n requestSession.OnServiceTurnStartResponse(JSON.parse(connectionMessage.TextBody));\r\n break;\r\n case \"speech.startDetected\":\r\n requestSession.OnServiceSpeechStartDetectedResponse(JSON.parse(connectionMessage.TextBody));\r\n break;\r\n case \"speech.hypothesis\":\r\n requestSession.OnServiceSpeechHypothesisResponse(JSON.parse(connectionMessage.TextBody));\r\n break;\r\n case \"speech.fragment\":\r\n requestSession.OnServiceSpeechFragmentResponse(JSON.parse(connectionMessage.TextBody));\r\n break;\r\n case \"speech.enddetected\":\r\n requestSession.OnServiceSpeechEndDetectedResponse(JSON.parse(connectionMessage.TextBody));\r\n break;\r\n case \"speech.phrase\":\r\n if (_this.recognizerConfig.IsContinuousRecognition) {\r\n // For continuous recognition telemetry has to be sent for every phrase as per spec.\r\n _this.SendTelemetryData(requestSession.RequestId, connection, requestSession.GetTelemetry());\r\n }\r\n if (_this.recognizerConfig.Format === RecognizerConfig_1.SpeechResultFormat.Simple) {\r\n requestSession.OnServiceSimpleSpeechPhraseResponse(JSON.parse(connectionMessage.TextBody));\r\n }\r\n else {\r\n requestSession.OnServiceDetailedSpeechPhraseResponse(JSON.parse(connectionMessage.TextBody));\r\n }\r\n break;\r\n case \"turn.end\":\r\n requestSession.OnServiceTurnEndResponse();\r\n return Exports_1.PromiseHelper.FromResult(true);\r\n default:\r\n break;\r\n }\r\n }\r\n return _this.ReceiveMessage(connection, requestSession);\r\n });\r\n };\r\n this.SendSpeechConfig = function (requestId, connection, speechConfigJson) {\r\n if (speechConfigJson && _this.connectionId !== _this.speechConfigConnectionId) {\r\n _this.speechConfigConnectionId = _this.connectionId;\r\n return connection\r\n .Send(new SpeechConnectionMessage_Internal_1.SpeechConnectionMessage(Exports_1.MessageType.Text, \"speech.config\", requestId, \"application/json\", speechConfigJson));\r\n }\r\n return Exports_1.PromiseHelper.FromResult(true);\r\n };\r\n this.SendSpeechContext = function (requestId, connection, speechContextJson) {\r\n if (speechContextJson) {\r\n return connection\r\n .Send(new SpeechConnectionMessage_Internal_1.SpeechConnectionMessage(Exports_1.MessageType.Text, \"speech.context\", requestId, \"application/json\", speechContextJson));\r\n }\r\n return Exports_1.PromiseHelper.FromResult(true);\r\n };\r\n this.SendTelemetryData = function (requestId, connection, telemetryData) {\r\n return connection\r\n .Send(new SpeechConnectionMessage_Internal_1.SpeechConnectionMessage(Exports_1.MessageType.Text, \"telemetry\", requestId, \"application/json\", telemetryData));\r\n };\r\n this.SendAudio = function (requestId, connection, audioStreamNode, requestSession) {\r\n // NOTE: Home-baked promises crash ios safari during the invocation\r\n // of the error callback chain (looks like the recursion is way too deep, and\r\n // it blows up the stack). The following construct is a stop-gap that does not\r\n // bubble the error up the callback chain and hence circumvents this problem.\r\n // TODO: rewrite with ES6 promises.\r\n var deferred = new Exports_1.Deferred();\r\n var readAndUploadCycle = function (_) {\r\n audioStreamNode.Read().On(function (audioStreamChunk) {\r\n // we have a new audio chunk to upload.\r\n if (requestSession.IsSpeechEnded) {\r\n // If service already recognized audio end then dont send any more audio\r\n deferred.Resolve(true);\r\n return;\r\n }\r\n var payload = (audioStreamChunk.IsEnd) ? null : audioStreamChunk.Buffer;\r\n var uploaded = connection.Send(new SpeechConnectionMessage_Internal_1.SpeechConnectionMessage(Exports_1.MessageType.Binary, \"audio\", requestId, null, payload));\r\n if (!audioStreamChunk.IsEnd) {\r\n uploaded.OnSuccessContinueWith(readAndUploadCycle);\r\n }\r\n else {\r\n // the audio stream has been closed, no need to schedule next\r\n // read-upload cycle.\r\n deferred.Resolve(true);\r\n }\r\n }, function (error) {\r\n if (requestSession.IsSpeechEnded) {\r\n // For whatever reason, Reject is used to remove queue subscribers inside\r\n // the Queue.DrainAndDispose invoked from DetachAudioNode down blow, which\r\n // means that sometimes things can be rejected in normal circumstances, without\r\n // any errors.\r\n deferred.Resolve(true); // TODO: remove the argument, it's is completely meaningless.\r\n }\r\n else {\r\n // Only reject, if there was a proper error.\r\n deferred.Reject(error);\r\n }\r\n });\r\n };\r\n readAndUploadCycle(true);\r\n return deferred.Promise();\r\n };\r\n if (!authentication) {\r\n throw new Exports_1.ArgumentNullError(\"authentication\");\r\n }\r\n if (!connectionFactory) {\r\n throw new Exports_1.ArgumentNullError(\"connectionFactory\");\r\n }\r\n if (!audioSource) {\r\n throw new Exports_1.ArgumentNullError(\"audioSource\");\r\n }\r\n if (!recognizerConfig) {\r\n throw new Exports_1.ArgumentNullError(\"recognizerConfig\");\r\n }\r\n this.authentication = authentication;\r\n this.connectionFactory = connectionFactory;\r\n this.audioSource = audioSource;\r\n this.recognizerConfig = recognizerConfig;\r\n }\r\n Object.defineProperty(Recognizer.prototype, \"AudioSource\", {\r\n get: function () {\r\n return this.audioSource;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Recognizer;\r\n}());\r\nexports.Recognizer = Recognizer;\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar RequestSession = (function () {\r\n function RequestSession(audioSourceId, onEventCallback) {\r\n var _this = this;\r\n this.isDisposed = false;\r\n this.detachables = new Array();\r\n this.isAudioNodeDetached = false;\r\n this.isCompleted = false;\r\n this.OnAudioSourceAttachCompleted = function (audioNode, isError, error) {\r\n _this.audioNode = audioNode;\r\n if (isError) {\r\n _this.OnComplete(RecognitionEvents_1.RecognitionCompletionStatus.AudioSourceError, error);\r\n }\r\n else {\r\n _this.OnEvent(new RecognitionEvents_1.ListeningStartedEvent(_this.requestId, _this.audioSourceId, _this.audioNodeId));\r\n }\r\n };\r\n this.OnPreConnectionStart = function (authFetchEventId, connectionId) {\r\n _this.authFetchEventId = authFetchEventId;\r\n _this.connectionId = connectionId;\r\n _this.OnEvent(new RecognitionEvents_1.ConnectingToServiceEvent(_this.requestId, _this.authFetchEventId, _this.connectionId));\r\n };\r\n this.OnAuthCompleted = function (isError, error) {\r\n if (isError) {\r\n _this.OnComplete(RecognitionEvents_1.RecognitionCompletionStatus.AuthTokenFetchError, error);\r\n }\r\n };\r\n this.OnConnectionEstablishCompleted = function (statusCode, reason) {\r\n if (statusCode === 200) {\r\n _this.OnEvent(new RecognitionEvents_1.RecognitionStartedEvent(_this.RequestId, _this.audioSourceId, _this.audioNodeId, _this.authFetchEventId, _this.connectionId));\r\n return;\r\n }\r\n else if (statusCode === 403) {\r\n _this.OnComplete(RecognitionEvents_1.RecognitionCompletionStatus.UnAuthorized, reason);\r\n }\r\n else {\r\n _this.OnComplete(RecognitionEvents_1.RecognitionCompletionStatus.ConnectError, reason);\r\n }\r\n };\r\n this.OnServiceTurnStartResponse = function (response) {\r\n if (response && response.context && response.context.serviceTag) {\r\n _this.serviceTag = response.context.serviceTag;\r\n }\r\n };\r\n this.OnServiceSpeechStartDetectedResponse = function (result) {\r\n _this.OnEvent(new RecognitionEvents_1.SpeechStartDetectedEvent(_this.RequestId, result));\r\n };\r\n this.OnServiceSpeechHypothesisResponse = function (result) {\r\n _this.OnEvent(new RecognitionEvents_1.SpeechHypothesisEvent(_this.RequestId, result));\r\n };\r\n this.OnServiceSpeechFragmentResponse = function (result) {\r\n _this.OnEvent(new RecognitionEvents_1.SpeechFragmentEvent(_this.RequestId, result));\r\n };\r\n this.OnServiceSpeechEndDetectedResponse = function (result) {\r\n _this.DetachAudioNode();\r\n _this.OnEvent(new RecognitionEvents_1.SpeechEndDetectedEvent(_this.RequestId, result));\r\n };\r\n this.OnServiceSimpleSpeechPhraseResponse = function (result) {\r\n _this.OnEvent(new RecognitionEvents_1.SpeechSimplePhraseEvent(_this.RequestId, result));\r\n };\r\n this.OnServiceDetailedSpeechPhraseResponse = function (result) {\r\n _this.OnEvent(new RecognitionEvents_1.SpeechDetailedPhraseEvent(_this.RequestId, result));\r\n };\r\n this.OnServiceTurnEndResponse = function () {\r\n _this.OnComplete(RecognitionEvents_1.RecognitionCompletionStatus.Success);\r\n };\r\n this.OnConnectionError = function (error) {\r\n _this.OnComplete(RecognitionEvents_1.RecognitionCompletionStatus.UnknownError, error);\r\n };\r\n this.Dispose = function (error) {\r\n if (!_this.isDisposed) {\r\n // we should have completed by now. If we did not its an unknown error.\r\n _this.OnComplete(RecognitionEvents_1.RecognitionCompletionStatus.UnknownError, error);\r\n _this.isDisposed = true;\r\n for (var _i = 0, _a = _this.detachables; _i < _a.length; _i++) {\r\n var detachable = _a[_i];\r\n detachable.Detach();\r\n }\r\n _this.serviceTelemetryListener.Dispose();\r\n }\r\n };\r\n this.GetTelemetry = function () {\r\n return _this.serviceTelemetryListener.GetTelemetry();\r\n };\r\n this.OnComplete = function (status, error) {\r\n if (!_this.isCompleted) {\r\n _this.isCompleted = true;\r\n _this.DetachAudioNode();\r\n _this.OnEvent(new RecognitionEvents_1.RecognitionEndedEvent(_this.RequestId, _this.audioSourceId, _this.audioNodeId, _this.authFetchEventId, _this.connectionId, _this.serviceTag, status, error ? error : \"\"));\r\n }\r\n };\r\n this.DetachAudioNode = function () {\r\n if (!_this.isAudioNodeDetached) {\r\n _this.isAudioNodeDetached = true;\r\n if (_this.audioNode) {\r\n _this.audioNode.Detach();\r\n }\r\n }\r\n };\r\n this.OnEvent = function (event) {\r\n _this.serviceTelemetryListener.OnEvent(event);\r\n Exports_1.Events.Instance.OnEvent(event);\r\n if (_this.onEventCallback) {\r\n _this.onEventCallback(event);\r\n }\r\n };\r\n this.audioSourceId = audioSourceId;\r\n this.onEventCallback = onEventCallback;\r\n this.requestId = Exports_1.CreateNoDashGuid();\r\n this.audioNodeId = Exports_1.CreateNoDashGuid();\r\n this.requestCompletionDeferral = new Exports_1.Deferred();\r\n this.serviceTelemetryListener = new ServiceTelemetryListener_Internal_1.ServiceTelemetryListener(this.requestId, this.audioSourceId, this.audioNodeId);\r\n this.OnEvent(new RecognitionEvents_1.RecognitionTriggeredEvent(this.RequestId, this.audioSourceId, this.audioNodeId));\r\n }\r\n Object.defineProperty(RequestSession.prototype, \"RequestId\", {\r\n get: function () {\r\n return this.requestId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RequestSession.prototype, \"AudioNodeId\", {\r\n get: function () {\r\n return this.audioNodeId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RequestSession.prototype, \"CompletionPromise\", {\r\n get: function () {\r\n return this.requestCompletionDeferral.Promise();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RequestSession.prototype, \"IsSpeechEnded\", {\r\n get: function () {\r\n return this.isAudioNodeDetached;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RequestSession.prototype, \"IsCompleted\", {\r\n get: function () {\r\n return this.isCompleted;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n RequestSession.prototype.ListenForServiceTelemetry = function (eventSource) {\r\n this.detachables.push(eventSource.AttachListener(this.serviceTelemetryListener));\r\n };\r\n return RequestSession;\r\n}());\r\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Exports_1 = __webpack_require__(0);\r\nvar RecognitionEvents_1 = __webpack_require__(8);\r\n// tslint:disable-next-line:max-classes-per-file\r\nvar ServiceTelemetryListener = (function () {\r\n function ServiceTelemetryListener(requestId, audioSourceId, audioNodeId) {\r\n var _this = this;\r\n this.isDisposed = false;\r\n this.listeningTriggerMetric = null;\r\n this.micMetric = null;\r\n this.connectionEstablishMetric = null;\r\n this.OnEvent = function (e) {\r\n if (_this.isDisposed) {\r\n return;\r\n }\r\n if (e instanceof RecognitionEvents_1.RecognitionTriggeredEvent && e.RequestId === _this.requestId) {\r\n _this.listeningTriggerMetric = {\r\n End: e.EventTime,\r\n Name: \"ListeningTrigger\",\r\n Start: e.EventTime,\r\n };\r\n }\r\n if (e instanceof Exports_1.AudioStreamNodeAttachingEvent && e.AudioSourceId === _this.audioSourceId && e.AudioNodeId === _this.audioNodeId) {\r\n _this.micStartTime = e.EventTime;\r\n }\r\n if (e instanceof Exports_1.AudioStreamNodeAttachedEvent && e.AudioSourceId === _this.audioSourceId && e.AudioNodeId === _this.audioNodeId) {\r\n _this.micStartTime = e.EventTime;\r\n }\r\n if (e instanceof Exports_1.AudioSourceErrorEvent && e.AudioSourceId === _this.audioSourceId) {\r\n if (!_this.micMetric) {\r\n _this.micMetric = {\r\n End: e.EventTime,\r\n Error: e.Error,\r\n Name: \"Microphone\",\r\n Start: _this.micStartTime,\r\n };\r\n }\r\n }\r\n if (e instanceof Exports_1.AudioStreamNodeErrorEvent && e.AudioSourceId === _this.audioSourceId && e.AudioNodeId === _this.audioNodeId) {\r\n if (!_this.micMetric) {\r\n _this.micMetric = {\r\n End: e.EventTime,\r\n Error: e.Error,\r\n Name: \"Microphone\",\r\n Start: _this.micStartTime,\r\n };\r\n }\r\n }\r\n if (e instanceof Exports_1.AudioStreamNodeDetachedEvent && e.AudioSourceId === _this.audioSourceId && e.AudioNodeId === _this.audioNodeId) {\r\n if (!_this.micMetric) {\r\n _this.micMetric = {\r\n End: e.EventTime,\r\n Name: \"Microphone\",\r\n Start: _this.micStartTime,\r\n };\r\n }\r\n }\r\n if (e instanceof RecognitionEvents_1.ConnectingToServiceEvent && e.RequestId === _this.requestId) {\r\n _this.connectionId = e.ConnectionId;\r\n }\r\n if (e instanceof Exports_1.ConnectionStartEvent && e.ConnectionId === _this.connectionId) {\r\n _this.connectionStartTime = e.EventTime;\r\n }\r\n if (e instanceof Exports_1.ConnectionEstablishedEvent && e.ConnectionId === _this.connectionId) {\r\n if (!_this.connectionEstablishMetric) {\r\n _this.connectionEstablishMetric = {\r\n End: e.EventTime,\r\n Id: _this.connectionId,\r\n Name: \"Connection\",\r\n Start: _this.connectionStartTime,\r\n };\r\n }\r\n }\r\n if (e instanceof Exports_1.ConnectionEstablishErrorEvent && e.ConnectionId === _this.connectionId) {\r\n if (!_this.connectionEstablishMetric) {\r\n _this.connectionEstablishMetric = {\r\n End: e.EventTime,\r\n Error: _this.GetConnectionError(e.StatusCode),\r\n Id: _this.connectionId,\r\n Name: \"Connection\",\r\n Start: _this.connectionStartTime,\r\n };\r\n }\r\n }\r\n if (e instanceof Exports_1.ConnectionMessageReceivedEvent && e.ConnectionId === _this.connectionId) {\r\n if (e.Message && e.Message.Headers && e.Message.Headers.path) {\r\n if (!_this.receivedMessages[e.Message.Headers.path]) {\r\n _this.receivedMessages[e.Message.Headers.path] = new Array();\r\n }\r\n _this.receivedMessages[e.Message.Headers.path].push(e.NetworkReceivedTime);\r\n }\r\n }\r\n };\r\n this.GetTelemetry = function () {\r\n var metrics = new Array();\r\n if (_this.listeningTriggerMetric) {\r\n metrics.push(_this.listeningTriggerMetric);\r\n }\r\n if (_this.micMetric) {\r\n metrics.push(_this.micMetric);\r\n }\r\n if (_this.connectionEstablishMetric) {\r\n metrics.push(_this.connectionEstablishMetric);\r\n }\r\n var telemetry = {\r\n Metrics: metrics,\r\n ReceivedMessages: _this.receivedMessages,\r\n };\r\n var json = JSON.stringify(telemetry);\r\n // We dont want to send the same telemetry again. So clean those out.\r\n _this.receivedMessages = {};\r\n _this.listeningTriggerMetric = null;\r\n _this.micMetric = null;\r\n _this.connectionEstablishMetric = null;\r\n return json;\r\n };\r\n this.Dispose = function () {\r\n _this.isDisposed = true;\r\n };\r\n this.GetConnectionError = function (statusCode) {\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 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 this.requestId = requestId;\r\n this.audioSourceId = audioSourceId;\r\n this.audioNodeId = audioNodeId;\r\n this.receivedMessages = {};\r\n }\r\n return ServiceTelemetryListener;\r\n}());\r\nexports.ServiceTelemetryListener = ServiceTelemetryListener;\r\n\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(3);\r\nvar Exports_1 = __webpack_require__(0);\r\nvar PathHeaderName = \"path\";\r\nvar ContentTypeHeaderName = \"content-type\";\r\nvar RequestIdHeaderName = \"x-requestid\";\r\nvar RequestTimestampHeaderName = \"x-timestamp\";\r\nvar SpeechConnectionMessage = (function (_super) {\r\n tslib_1.__extends(SpeechConnectionMessage, _super);\r\n function SpeechConnectionMessage(messageType, path, requestId, contentType, body, additionalHeaders, id) {\r\n var _this = this;\r\n if (!path) {\r\n throw new Exports_1.ArgumentNullError(\"path\");\r\n }\r\n if (!requestId) {\r\n throw new Exports_1.ArgumentNullError(\"requestId\");\r\n }\r\n var headers = {};\r\n headers[PathHeaderName] = path;\r\n headers[RequestIdHeaderName] = requestId;\r\n headers[RequestTimestampHeaderName] = new Date().toISOString();\r\n if (contentType) {\r\n headers[ContentTypeHeaderName] = contentType;\r\n }\r\n if (additionalHeaders) {\r\n for (var headerName in additionalHeaders) {\r\n if (headerName) {\r\n headers[headerName] = additionalHeaders[headerName];\r\n }\r\n }\r\n }\r\n if (id) {\r\n _this = _super.call(this, messageType, body, headers, id) || this;\r\n }\r\n else {\r\n _this = _super.call(this, messageType, body, headers) || this;\r\n }\r\n _this.path = path;\r\n _this.requestId = requestId;\r\n _this.contentType = contentType;\r\n _this.additionalHeaders = additionalHeaders;\r\n return _this;\r\n }\r\n Object.defineProperty(SpeechConnectionMessage.prototype, \"Path\", {\r\n get: function () {\r\n return this.path;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SpeechConnectionMessage.prototype, \"RequestId\", {\r\n get: function () {\r\n return this.requestId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SpeechConnectionMessage.prototype, \"ContentType\", {\r\n get: function () {\r\n return this.contentType;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SpeechConnectionMessage.prototype, \"AdditionalHeaders\", {\r\n get: function () {\r\n return this.additionalHeaders;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return SpeechConnectionMessage;\r\n}(Exports_1.ConnectionMessage));\r\nSpeechConnectionMessage.FromConnectionMessage = function (message) {\r\n var path = null;\r\n var requestId = null;\r\n var contentType = null;\r\n var requestTimestamp = null;\r\n var additionalHeaders = {};\r\n if (message.Headers) {\r\n for (var headerName in message.Headers) {\r\n if (headerName) {\r\n if (headerName.toLowerCase() === PathHeaderName.toLowerCase()) {\r\n path = message.Headers[headerName];\r\n }\r\n else if (headerName.toLowerCase() === RequestIdHeaderName.toLowerCase()) {\r\n requestId = message.Headers[headerName];\r\n }\r\n else if (headerName.toLowerCase() === RequestTimestampHeaderName.toLowerCase()) {\r\n requestTimestamp = message.Headers[headerName];\r\n }\r\n else if (headerName.toLowerCase() === ContentTypeHeaderName.toLowerCase()) {\r\n contentType = message.Headers[headerName];\r\n }\r\n else {\r\n additionalHeaders[headerName] = message.Headers[headerName];\r\n }\r\n }\r\n }\r\n }\r\n return new SpeechConnectionMessage(message.MessageType, path, requestId, contentType, message.Body, additionalHeaders, message.Id);\r\n};\r\nexports.SpeechConnectionMessage = SpeechConnectionMessage;\r\n\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar RecognitionStatus;\r\n(function (RecognitionStatus) {\r\n RecognitionStatus[RecognitionStatus[\"Success\"] = 0] = \"Success\";\r\n RecognitionStatus[RecognitionStatus[\"NoMatch\"] = 1] = \"NoMatch\";\r\n RecognitionStatus[RecognitionStatus[\"InitialSilenceTimeout\"] = 2] = \"InitialSilenceTimeout\";\r\n RecognitionStatus[RecognitionStatus[\"BabbleTimeout\"] = 3] = \"BabbleTimeout\";\r\n RecognitionStatus[RecognitionStatus[\"Error\"] = 4] = \"Error\";\r\n RecognitionStatus[RecognitionStatus[\"EndOfDictation\"] = 5] = \"EndOfDictation\";\r\n})(RecognitionStatus = exports.RecognitionStatus || (exports.RecognitionStatus = {}));\r\n\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Exports_1 = __webpack_require__(0);\r\nvar CRLF = \"\\r\\n\";\r\nvar WebsocketMessageFormatter = (function () {\r\n function WebsocketMessageFormatter() {\r\n var _this = this;\r\n this.ToConnectionMessage = function (message) {\r\n var deferral = new Exports_1.Deferred();\r\n try {\r\n if (message.MessageType === Exports_1.MessageType.Text) {\r\n var textMessage = message.TextContent;\r\n var headers = {};\r\n var body = null;\r\n if (textMessage) {\r\n var 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 deferral.Resolve(new Exports_1.ConnectionMessage(message.MessageType, body, headers, message.Id));\r\n }\r\n else if (message.MessageType === Exports_1.MessageType.Binary) {\r\n var binaryMessage = message.BinaryContent;\r\n var headers = {};\r\n var body = null;\r\n if (!binaryMessage || binaryMessage.byteLength < 2) {\r\n throw new Error(\"Invalid binary message format. Header length missing.\");\r\n }\r\n var dataView = new DataView(binaryMessage);\r\n var headerLength = dataView.getInt16(0);\r\n if (binaryMessage.byteLength < headerLength + 2) {\r\n throw new Error(\"Invalid binary message format. Header content missing.\");\r\n }\r\n var headersString = \"\";\r\n for (var i = 0; i < headerLength; i++) {\r\n headersString += String.fromCharCode((dataView).getInt8(i + 2));\r\n }\r\n headers = _this.ParseHeaders(headersString);\r\n if (binaryMessage.byteLength > headerLength + 2) {\r\n body = binaryMessage.slice(2 + headerLength);\r\n }\r\n deferral.Resolve(new Exports_1.ConnectionMessage(message.MessageType, body, headers, message.Id));\r\n }\r\n }\r\n catch (e) {\r\n deferral.Reject(\"Error formatting the message. Error: \" + e);\r\n }\r\n return deferral.Promise();\r\n };\r\n this.FromConnectionMessage = function (message) {\r\n var deferral = new Exports_1.Deferred();\r\n try {\r\n if (message.MessageType === Exports_1.MessageType.Text) {\r\n var payload = \"\" + _this.MakeHeaders(message) + CRLF + (message.TextBody ? message.TextBody : \"\");\r\n deferral.Resolve(new Exports_1.RawWebsocketMessage(Exports_1.MessageType.Text, payload, message.Id));\r\n }\r\n else if (message.MessageType === Exports_1.MessageType.Binary) {\r\n var headersString = _this.MakeHeaders(message);\r\n var content = message.BinaryBody;\r\n var headerInt8Array = new Int8Array(_this.StringToArrayBuffer(headersString));\r\n var payload = new ArrayBuffer(2 + headerInt8Array.byteLength + (content ? content.byteLength : 0));\r\n var dataView = new DataView(payload);\r\n dataView.setInt16(0, headerInt8Array.length);\r\n for (var i = 0; i < headerInt8Array.byteLength; i++) {\r\n dataView.setInt8(2 + i, headerInt8Array[i]);\r\n }\r\n if (content) {\r\n var bodyInt8Array = new Int8Array(content);\r\n for (var i = 0; i < bodyInt8Array.byteLength; i++) {\r\n dataView.setInt8(2 + headerInt8Array.byteLength + i, bodyInt8Array[i]);\r\n }\r\n }\r\n deferral.Resolve(new Exports_1.RawWebsocketMessage(Exports_1.MessageType.Binary, payload, message.Id));\r\n }\r\n }\r\n catch (e) {\r\n deferral.Reject(\"Error formatting the message. \" + e);\r\n }\r\n return deferral.Promise();\r\n };\r\n this.MakeHeaders = function (message) {\r\n var headersString = \"\";\r\n if (message.Headers) {\r\n for (var header in message.Headers) {\r\n if (header) {\r\n headersString += header + \": \" + message.Headers[header] + CRLF;\r\n }\r\n }\r\n }\r\n return headersString;\r\n };\r\n this.ParseHeaders = function (headersString) {\r\n var headers = {};\r\n if (headersString) {\r\n var headerMatches = headersString.match(/[^\\r\\n]+/g);\r\n if (headers) {\r\n for (var _i = 0, headerMatches_1 = headerMatches; _i < headerMatches_1.length; _i++) {\r\n var header = headerMatches_1[_i];\r\n if (header) {\r\n var separatorIndex = header.indexOf(\":\");\r\n var headerName = separatorIndex > 0 ? header.substr(0, separatorIndex).trim().toLowerCase() : header;\r\n var headerValue = separatorIndex > 0 && header.length > (separatorIndex + 1) ?\r\n header.substr(separatorIndex + 1).trim() :\r\n \"\";\r\n headers[headerName] = headerValue;\r\n }\r\n }\r\n }\r\n }\r\n return headers;\r\n };\r\n this.StringToArrayBuffer = function (str) {\r\n var buffer = new ArrayBuffer(str.length);\r\n var view = new DataView(buffer);\r\n for (var 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 return WebsocketMessageFormatter;\r\n}());\r\nexports.WebsocketMessageFormatter = WebsocketMessageFormatter;\r\n\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar SpeechRecognition_1 = __webpack_require__(19);\r\nexports.SpeechRecognizer = SpeechRecognition_1.SpeechRecognizer;\r\nvar SpeechSynthesis_1 = __webpack_require__(20);\r\nexports.SpeechSynthesizer = SpeechSynthesis_1.SpeechSynthesizer;\r\nexports.SynthesisGender = SpeechSynthesis_1.SynthesisGender;\r\n\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.default = setIn;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction setIn(obj, path, updater) {\n if (!Array.isArray(path)) {\n throw new Error('path must be an array');\n }\n\n if (!path.length) {\n return updater(obj);\n }\n\n path = path.slice();\n\n var accessor = path.shift();\n var value = typeof obj !== 'undefined' && obj[accessor];\n var nextObj = obj;\n\n if (typeof accessor === 'string' && ((typeof nextObj === 'undefined' ? 'undefined' : _typeof(nextObj)) !== 'object' || Array.isArray(nextObj))) {\n nextObj = {};\n } else if (typeof accessor === 'number' && !Array.isArray(nextObj)) {\n nextObj = [];\n }\n\n if (typeof accessor === 'number') {\n if (updater || path.length) {\n if (accessor === -1) {\n return [].concat(_toConsumableArray(nextObj), [setIn([], path, updater)]);\n }\n\n var nextValue = setIn(value, path, updater);\n\n if (typeof nextValue !== 'undefined') {\n if (nextValue === value) {\n return obj;\n } else {\n nextObj = [].concat(_toConsumableArray(nextObj));\n nextObj[accessor] = nextValue;\n\n return nextObj;\n }\n }\n }\n\n // If updater returned undefined or no updater at all, delete the item\n if (accessor in nextObj) {\n nextObj = [].concat(_toConsumableArray(nextObj));\n nextObj.splice(accessor, 1);\n }\n\n return nextObj;\n } else {\n if (updater || path.length) {\n var _nextValue = setIn(value, path, updater);\n\n if (typeof _nextValue !== 'undefined') {\n if (_nextValue === value) {\n return obj;\n } else {\n return _extends({}, nextObj, _defineProperty({}, accessor, _nextValue));\n }\n }\n }\n\n // If updater returned undefined or no updater at all, delete the key\n if (accessor in nextObj) {\n nextObj = _extends({}, nextObj);\n delete nextObj[accessor];\n }\n\n return nextObj;\n }\n}\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports) {\n\n// Provide a \"System\" global.\r\nmodule.exports = {\r\n\t// Make sure import is only used as \"System.import\"\r\n\timport: function() {\r\n\t\tthrow new Error(\"System.import cannot be used indirectly\");\r\n\t}\r\n};\r\n\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// CognitiveServices.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 59);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 59c932d69982b330865c","\r\nexport * from \"./AudioSourceEvents\";\r\nexport * from \"./ConnectionEvents\";\r\nexport * from \"./ConnectionMessage\";\r\nexport * from \"./ConnectionOpenResponse\";\r\nexport * from \"./Error\";\r\nexport * from \"./Events\";\r\nexport * from \"./EventSource\";\r\nexport * from \"./Guid\";\r\nexport * from \"./IAudioSource\";\r\nexport * from \"./IConnection\";\r\nexport * from \"./IDetachable\";\r\nexport * from \"./IDictionary\";\r\nexport * from \"./IDisposable\";\r\nexport * from \"./IEventSource\";\r\nexport * from \"./IKeyValueStorage\";\r\nexport * from \"./InMemoryStorage\";\r\nexport * from \"./ITimer\";\r\nexport * from \"./IWebsocketMessageFormatter\";\r\nexport * from \"./List\";\r\nexport * from \"./PlatformEvent\";\r\nexport * from \"./Promise\";\r\nexport * from \"./Queue\";\r\nexport * from \"./RawWebsocketMessage\";\r\nexport * from \"./RiffPcmEncoder\";\r\nexport * from \"./Storage\";\r\nexport * from \"./Stream\";\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common/Exports.ts","\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\n// tslint:disable-next-line:max-classes-per-file\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\n// tslint:disable-next-line:max-classes-per-file\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\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common/Error.ts","\r\nconst CreateGuid: () => string = (): string => {\r\n let d = new Date().getTime();\r\n const guid = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (c: string) => {\r\n const r = (d + Math.random() * 16) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n return (c === \"x\" ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n\r\n return guid;\r\n};\r\n\r\nconst CreateNoDashGuid: () => string = (): string => {\r\n return CreateGuid().replace(new RegExp(\"-\", \"g\"), \"\").toUpperCase();\r\n};\r\n\r\nexport { CreateGuid, CreateNoDashGuid };\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common/Guid.ts","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { if (o[n]) i[n] = function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; }; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator];\r\n return m ? m.call(o) : typeof __values === \"function\" ? __values(o) : o[Symbol.iterator]();\r\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/tslib/tslib.es6.js\n// module id = 3\n// module chunks = 0","\r\nexport * from \"./ConsoleLoggingListener\";\r\nexport * from \"./IRecorder\";\r\nexport * from \"./LocalStorage\";\r\nexport * from \"./MicAudioSource\";\r\nexport * from \"./FileAudioSource\";\r\nexport * from \"./OpusRecorder\";\r\nexport * from \"./PCMRecorder\";\r\nexport * from \"./SessionStorage\";\r\nexport * from \"./Timer\";\r\nexport * from \"./WebsocketConnection\";\r\nexport * from \"./WebsocketMessageAdapter\";\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common.browser/Exports.ts","\r\n// IMPORTANT - Dont publish internal modules.\r\n\r\nexport * from \"./CognitiveSubscriptionKeyAuthentication\";\r\nexport * from \"./CognitiveTokenAuthentication\";\r\nexport * from \"./IAuthentication\";\r\nexport * from \"./IConnectionFactory\";\r\nexport * from \"./RecognitionEvents\";\r\nexport * from \"./Recognizer\";\r\nexport * from \"./RecognizerConfig\";\r\nexport * from \"./SpeechResults\";\r\nexport * from \"./WebsocketMessageFormatter\";\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/sdk/speech/Exports.ts","import { CreateNoDashGuid } from \"./Guid\";\r\nimport { IStringDictionary } from \"./IDictionary\";\r\n\r\nexport enum EventType {\r\n Debug,\r\n Info,\r\n Warning,\r\n Error,\r\n}\r\n\r\nexport class PlatformEvent {\r\n private name: string;\r\n private eventId: string;\r\n private eventTime: string;\r\n private eventType: EventType;\r\n private metadata: IStringDictionary;\r\n\r\n constructor(eventName: string, eventType: EventType) {\r\n this.name = eventName;\r\n this.eventId = CreateNoDashGuid();\r\n this.eventTime = new Date().toISOString();\r\n this.eventType = eventType;\r\n this.metadata = { };\r\n }\r\n\r\n public get Name(): string {\r\n return this.name;\r\n }\r\n\r\n public get EventId(): string {\r\n return this.eventId;\r\n }\r\n\r\n public get EventTime(): string {\r\n return this.eventTime;\r\n }\r\n\r\n public get EventType(): EventType {\r\n return this.eventType;\r\n }\r\n\r\n public get Metadata(): IStringDictionary {\r\n return this.metadata;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common/PlatformEvent.ts","import { Promise } from \"../../common/Exports\";\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 headerName: string;\r\n private token: string;\r\n\r\n public constructor(headerName: string, token: string) {\r\n this.headerName = headerName;\r\n this.token = token;\r\n }\r\n\r\n public get HeaderName(): string {\r\n return this.headerName;\r\n }\r\n\r\n public get Token(): string {\r\n return this.token;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/sdk/speech/IAuthentication.ts","import { EventType, PlatformEvent } from \"../../common/Exports\";\r\nimport {\r\n IDetailedSpeechPhrase,\r\n ISimpleSpeechPhrase,\r\n ISpeechEndDetectedResult,\r\n ISpeechFragment,\r\n ISpeechStartDetectedResult,\r\n} from \"./SpeechResults\";\r\n\r\nexport class SpeechRecognitionEvent extends PlatformEvent {\r\n private requestId: string;\r\n\r\n constructor(eventName: string, requestId: string, eventType: EventType = EventType.Info) {\r\n super(eventName, eventType);\r\n\r\n this.requestId = requestId;\r\n }\r\n\r\n public get RequestId(): string {\r\n return this.requestId;\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class SpeechRecognitionResultEvent extends SpeechRecognitionEvent {\r\n private result: TResult;\r\n\r\n constructor(eventName: string, requestId: string, result: TResult) {\r\n super(eventName, requestId);\r\n this.result = result;\r\n }\r\n\r\n public get Result(): TResult {\r\n return this.result;\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class RecognitionTriggeredEvent extends SpeechRecognitionEvent {\r\n private audioSourceId: string;\r\n private audioNodeId: string;\r\n\r\n constructor(requestId: string, audioSourceId: string, audioNodeId: string) {\r\n super(\"RecognitionTriggeredEvent\", requestId);\r\n\r\n this.audioSourceId = audioSourceId;\r\n this.audioNodeId = audioNodeId;\r\n }\r\n\r\n public get AudioSourceId(): string {\r\n return this.audioSourceId;\r\n }\r\n\r\n public get AudioNodeId(): string {\r\n return this.audioNodeId;\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class ListeningStartedEvent extends SpeechRecognitionEvent {\r\n private audioSourceId: string;\r\n private audioNodeId: string;\r\n\r\n constructor(requestId: string, audioSourceId: string, audioNodeId: string) {\r\n super(\"ListeningStartedEvent\", requestId);\r\n this.audioSourceId = audioSourceId;\r\n this.audioNodeId = audioNodeId;\r\n }\r\n\r\n public get AudioSourceId(): string {\r\n return this.audioSourceId;\r\n }\r\n\r\n public get AudioNodeId(): string {\r\n return this.audioNodeId;\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class ConnectingToServiceEvent extends SpeechRecognitionEvent {\r\n private authFetchEventid: string;\r\n private connectionId: string;\r\n\r\n constructor(requestId: string, authFetchEventid: string, connectionId: string) {\r\n super(\"ConnectingToServiceEvent\", requestId);\r\n this.authFetchEventid = authFetchEventid;\r\n this.connectionId = connectionId;\r\n }\r\n\r\n public get AuthFetchEventid(): string {\r\n return this.authFetchEventid;\r\n }\r\n\r\n public get ConnectionId(): string {\r\n return this.connectionId;\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class RecognitionStartedEvent extends SpeechRecognitionEvent {\r\n private audioSourceId: string;\r\n private audioNodeId: string;\r\n private authFetchEventId: string;\r\n private connectionId: string;\r\n\r\n constructor(requestId: string, audioSourceId: string, audioNodeId: string, authFetchEventId: string, connectionId: string) {\r\n super(\"RecognitionStartedEvent\", requestId);\r\n\r\n this.audioSourceId = audioSourceId;\r\n this.audioNodeId = audioNodeId;\r\n this.authFetchEventId = authFetchEventId;\r\n this.connectionId = connectionId;\r\n }\r\n\r\n public get AudioSourceId(): string {\r\n return this.audioSourceId;\r\n }\r\n\r\n public get AudioNodeId(): string {\r\n return this.audioNodeId;\r\n }\r\n\r\n public get AuthFetchEventId(): string {\r\n return this.authFetchEventId;\r\n }\r\n\r\n public get ConnectionId(): string {\r\n return this.connectionId;\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class SpeechStartDetectedEvent extends SpeechRecognitionResultEvent {\r\n constructor(requestId: string, result: ISpeechStartDetectedResult) {\r\n super(\"SpeechStartDetectedEvent\", requestId, result);\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class SpeechHypothesisEvent extends SpeechRecognitionResultEvent {\r\n constructor(requestId: string, result: ISpeechFragment) {\r\n super(\"SpeechHypothesisEvent\", requestId, result);\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class SpeechFragmentEvent extends SpeechRecognitionResultEvent {\r\n constructor(requestId: string, result: ISpeechFragment) {\r\n super(\"SpeechFragmentEvent\", requestId, result);\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class SpeechEndDetectedEvent extends SpeechRecognitionResultEvent {\r\n constructor(requestId: string, result: ISpeechEndDetectedResult) {\r\n super(\"SpeechEndDetectedEvent\", requestId, result);\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class SpeechSimplePhraseEvent extends SpeechRecognitionResultEvent {\r\n constructor(requestId: string, result: ISimpleSpeechPhrase) {\r\n super(\"SpeechSimplePhraseEvent\", requestId, result);\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class SpeechDetailedPhraseEvent extends SpeechRecognitionResultEvent {\r\n constructor(requestId: string, result: IDetailedSpeechPhrase) {\r\n super(\"SpeechDetailedPhraseEvent\", requestId, result);\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\n// tslint:disable-next-line:max-classes-per-file\r\nexport class RecognitionEndedEvent extends SpeechRecognitionEvent {\r\n private audioSourceId: string;\r\n private audioNodeId: string;\r\n private authFetchEventId: string;\r\n private connectionId: string;\r\n private serviceTag: string;\r\n private status: RecognitionCompletionStatus;\r\n private error: string;\r\n\r\n constructor(\r\n requestId: string,\r\n audioSourceId: string,\r\n audioNodeId: string,\r\n authFetchEventId: string,\r\n connectionId: string,\r\n serviceTag: string,\r\n status: RecognitionCompletionStatus,\r\n error: string) {\r\n\r\n super(\"RecognitionEndedEvent\", requestId, status === RecognitionCompletionStatus.Success ? EventType.Info : EventType.Error);\r\n\r\n this.audioSourceId = audioSourceId;\r\n this.audioNodeId = audioNodeId;\r\n this.connectionId = connectionId;\r\n this.authFetchEventId = authFetchEventId;\r\n this.status = status;\r\n this.error = error;\r\n this.serviceTag = serviceTag;\r\n }\r\n\r\n public get AudioSourceId(): string {\r\n return this.audioSourceId;\r\n }\r\n\r\n public get AudioNodeId(): string {\r\n return this.audioNodeId;\r\n }\r\n\r\n public get AuthFetchEventId(): string {\r\n return this.authFetchEventId;\r\n }\r\n\r\n public get ConnectionId(): string {\r\n return this.connectionId;\r\n }\r\n\r\n public get ServiceTag(): string {\r\n return this.serviceTag;\r\n }\r\n\r\n public get Status(): RecognitionCompletionStatus {\r\n return this.status;\r\n }\r\n\r\n public get Error(): string {\r\n return this.error;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/sdk/speech/RecognitionEvents.ts","import {\r\n ArgumentNullError,\r\n ConnectionClosedEvent,\r\n ConnectionEstablishedEvent,\r\n ConnectionEstablishErrorEvent,\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 PlatformEvent,\r\n Promise,\r\n PromiseHelper,\r\n Queue,\r\n RawWebsocketMessage,\r\n} from \"../common/Exports\";\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\r\n private connectionState: ConnectionState;\r\n private messageFormatter: IWebsocketMessageFormatter;\r\n private websocketClient: WebSocket;\r\n\r\n private sendMessageQueue: Queue;\r\n private receivingMessageQueue: Queue;\r\n private connectionEstablishDeferral: Deferred;\r\n private disconnectDeferral: Deferred;\r\n private connectionEvents: EventSource;\r\n private connectionId: string;\r\n private uri: string;\r\n\r\n public constructor(\r\n uri: string,\r\n connectionId: string,\r\n messageFormatter: IWebsocketMessageFormatter) {\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.connectionEvents = new EventSource();\r\n this.connectionId = connectionId;\r\n this.messageFormatter = messageFormatter;\r\n this.connectionState = ConnectionState.None;\r\n this.uri = uri;\r\n }\r\n\r\n public get State(): ConnectionState {\r\n return this.connectionState;\r\n }\r\n\r\n public Open = (): Promise => {\r\n if (this.connectionState === ConnectionState.Disconnected) {\r\n return PromiseHelper.FromError(`Cannot open a connection that is in ${this.connectionState} state`);\r\n }\r\n\r\n if (this.connectionEstablishDeferral) {\r\n return this.connectionEstablishDeferral.Promise();\r\n }\r\n\r\n this.connectionEstablishDeferral = new Deferred();\r\n this.connectionState = ConnectionState.Connecting;\r\n\r\n this.websocketClient = new WebSocket(this.uri);\r\n this.websocketClient.binaryType = \"arraybuffer\";\r\n this.receivingMessageQueue = new Queue();\r\n this.disconnectDeferral = new Deferred();\r\n this.sendMessageQueue = new Queue();\r\n this.ProcessSendQueue();\r\n\r\n this.OnEvent(new ConnectionStartEvent(this.connectionId, this.uri));\r\n\r\n this.websocketClient.onopen = (e: Event) => {\r\n this.connectionState = ConnectionState.Connected;\r\n this.OnEvent(new ConnectionEstablishedEvent(this.connectionId));\r\n this.connectionEstablishDeferral.Resolve(new ConnectionOpenResponse(200, \"\"));\r\n };\r\n\r\n this.websocketClient.onerror = (e: Event) => {\r\n // TODO: Understand what this is error is. Will we still get onClose ?\r\n if (this.connectionState !== ConnectionState.Connecting) {\r\n // TODO: Is this required ?\r\n // this.OnEvent(new ConnectionErrorEvent(errorMsg, connectionId));\r\n }\r\n };\r\n\r\n this.websocketClient.onclose = (e: CloseEvent) => {\r\n if (this.connectionState === ConnectionState.Connecting) {\r\n this.connectionState = ConnectionState.Disconnected;\r\n this.OnEvent(new ConnectionEstablishErrorEvent(this.connectionId, e.code, e.reason));\r\n this.connectionEstablishDeferral.Resolve(new ConnectionOpenResponse(e.code, e.reason));\r\n } else {\r\n this.OnEvent(new ConnectionClosedEvent(this.connectionId, e.code, e.reason));\r\n }\r\n\r\n this.OnClose(e.code, e.reason);\r\n };\r\n\r\n this.websocketClient.onmessage = (e: MessageEvent) => {\r\n const networkReceivedTime = new Date().toISOString();\r\n if (this.connectionState === ConnectionState.Connected) {\r\n const deferred = new Deferred();\r\n // let id = ++this.idCounter;\r\n this.receivingMessageQueue.EnqueueFromPromise(deferred.Promise());\r\n if (e.data instanceof ArrayBuffer) {\r\n const rawMessage = new RawWebsocketMessage(MessageType.Binary, e.data);\r\n this.messageFormatter\r\n .ToConnectionMessage(rawMessage)\r\n .On((connectionMessage: ConnectionMessage) => {\r\n this.OnEvent(new ConnectionMessageReceivedEvent(this.connectionId, networkReceivedTime, connectionMessage));\r\n deferred.Resolve(connectionMessage);\r\n }, (error: string) => {\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.messageFormatter\r\n .ToConnectionMessage(rawMessage)\r\n .On((connectionMessage: ConnectionMessage) => {\r\n this.OnEvent(new ConnectionMessageReceivedEvent(this.connectionId, networkReceivedTime, connectionMessage));\r\n deferred.Resolve(connectionMessage);\r\n }, (error: string) => {\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.connectionEstablishDeferral.Promise();\r\n }\r\n\r\n public Send = (message: ConnectionMessage): Promise => {\r\n if (this.connectionState !== ConnectionState.Connected) {\r\n return PromiseHelper.FromError(`Cannot send on connection that is in ${this.connectionState} state`);\r\n }\r\n\r\n const messageSendStatusDeferral = new Deferred();\r\n const messageSendDeferral = new Deferred();\r\n\r\n this.sendMessageQueue.EnqueueFromPromise(messageSendDeferral.Promise());\r\n\r\n this.messageFormatter\r\n .FromConnectionMessage(message)\r\n .On((rawMessage: RawWebsocketMessage) => {\r\n messageSendDeferral.Resolve({\r\n Message: message,\r\n RawWebsocketMessage: rawMessage,\r\n SendStatusDeferral: messageSendStatusDeferral,\r\n });\r\n }, (error: string) => {\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.connectionState !== ConnectionState.Connected) {\r\n return PromiseHelper.FromError(`Cannot read on connection that is in ${this.connectionState} state`);\r\n }\r\n\r\n return this.receivingMessageQueue.Dequeue();\r\n }\r\n\r\n public Close = (reason?: string): Promise => {\r\n if (this.websocketClient) {\r\n if (this.connectionState !== ConnectionState.Connected) {\r\n this.websocketClient.close(1000, reason ? reason : \"Normal closure by client\");\r\n }\r\n } else {\r\n const deferral = new Deferred();\r\n deferral.Resolve(true);\r\n return deferral.Promise();\r\n }\r\n\r\n return this.disconnectDeferral.Promise();\r\n }\r\n\r\n public get Events(): EventSource {\r\n return this.connectionEvents;\r\n }\r\n\r\n private SendRawMessage = (sendItem: ISendItem): Promise => {\r\n try {\r\n this.OnEvent(new ConnectionMessageSentEvent(this.connectionId, new Date().toISOString(), sendItem.Message));\r\n this.websocketClient.send(sendItem.RawWebsocketMessage.Payload);\r\n return PromiseHelper.FromResult(true);\r\n } catch (e) {\r\n return PromiseHelper.FromError(`websocket send error: ${e}`);\r\n }\r\n }\r\n\r\n private OnClose = (code: number, reason: string): void => {\r\n const closeReason = `Connection closed. ${code}: ${reason}`;\r\n this.connectionState = ConnectionState.Disconnected;\r\n this.disconnectDeferral.Resolve(true);\r\n this.receivingMessageQueue.Dispose(reason);\r\n this.receivingMessageQueue.DrainAndDispose((pendingReceiveItem: ConnectionMessage) => {\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 this.sendMessageQueue.DrainAndDispose((pendingSendItem: ISendItem) => {\r\n pendingSendItem.SendStatusDeferral.Reject(closeReason);\r\n }, closeReason);\r\n }\r\n\r\n private ProcessSendQueue = (): void => {\r\n this.sendMessageQueue\r\n .Dequeue()\r\n .On((sendItem: ISendItem) => {\r\n this.SendRawMessage(sendItem)\r\n .On((result: boolean) => {\r\n sendItem.SendStatusDeferral.Resolve(result);\r\n this.ProcessSendQueue();\r\n }, (sendError: string) => {\r\n sendItem.SendStatusDeferral.Reject(sendError);\r\n this.ProcessSendQueue();\r\n });\r\n }, (error: string) => {\r\n // do nothing\r\n });\r\n }\r\n\r\n private OnEvent = (event: ConnectionEvent): void => {\r\n this.connectionEvents.OnEvent(event);\r\n Events.Instance.OnEvent(event);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common.browser/WebsocketMessageAdapter.ts","import { InvalidOperationError } from \"./Error\";\r\nimport { CreateNoDashGuid } from \"./Guid\";\r\nimport { IStringDictionary } from \"./IDictionary\";\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 messageType: MessageType;\r\n private headers: IStringDictionary;\r\n private body: any = null;\r\n\r\n private id: 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.messageType = messageType;\r\n this.body = body;\r\n this.headers = headers ? headers : {};\r\n this.id = id ? id : CreateNoDashGuid();\r\n }\r\n\r\n public get MessageType(): MessageType {\r\n return this.messageType;\r\n }\r\n\r\n public get Headers(): any {\r\n return this.headers;\r\n }\r\n\r\n public get Body(): any {\r\n return this.body;\r\n }\r\n\r\n public get TextBody(): string {\r\n if (this.messageType === MessageType.Binary) {\r\n throw new InvalidOperationError(\"Not supported for binary message\");\r\n }\r\n\r\n return this.body as string;\r\n }\r\n\r\n public get BinaryBody(): ArrayBuffer {\r\n if (this.messageType === MessageType.Text) {\r\n throw new InvalidOperationError(\"Not supported for text message\");\r\n }\r\n\r\n return this.body;\r\n }\r\n\r\n public get Id(): string {\r\n return this.id;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common/ConnectionMessage.ts","import { ObjectDisposedError } from \"./Error\";\r\nimport { CreateNoDashGuid } from \"./Guid\";\r\nimport { IDetachable } from \"./IDetachable\";\r\nimport { IStringDictionary } from \"./IDictionary\";\r\nimport { IEventListener, IEventSource } from \"./IEventSource\";\r\nimport { PlatformEvent } from \"./PlatformEvent\";\r\n\r\nexport class EventSource implements IEventSource {\r\n private eventListeners: IStringDictionary<(event: TEvent) => void> = {};\r\n private metadata: IStringDictionary;\r\n private isDisposed: boolean = false;\r\n\r\n constructor(metadata?: IStringDictionary) {\r\n this.metadata = 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.eventListeners) {\r\n if (eventId && this.eventListeners[eventId]) {\r\n this.eventListeners[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.eventListeners[id] = onEventCallback;\r\n return {\r\n Detach: () => {\r\n delete this.eventListeners[id];\r\n },\r\n };\r\n }\r\n\r\n public AttachListener = (listener: IEventListener): IDetachable => {\r\n return this.Attach(listener.OnEvent);\r\n }\r\n\r\n public IsDisposed = (): boolean => {\r\n return this.isDisposed;\r\n }\r\n\r\n public Dispose = (): void => {\r\n this.eventListeners = null;\r\n this.isDisposed = true;\r\n }\r\n\r\n public get Metadata(): IStringDictionary {\r\n return this.metadata;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common/EventSource.ts","import { ArgumentNullError } from \"./Error\";\r\nimport { IStringDictionary } from \"./IDictionary\";\r\nimport { IKeyValueStorage } from \"./IKeyValueStorage\";\r\n\r\nexport class InMemoryStorage implements IKeyValueStorage {\r\n\r\n private store: IStringDictionary = {};\r\n\r\n public Get = (key: string): string => {\r\n if (!key) {\r\n throw new ArgumentNullError(\"key\");\r\n }\r\n\r\n return this.store[key];\r\n }\r\n\r\n public GetOrAdd = (key: string, valueToAdd: string): string => {\r\n if (!key) {\r\n throw new ArgumentNullError(\"key\");\r\n }\r\n\r\n if (this.store[key] === undefined) {\r\n this.store[key] = valueToAdd;\r\n }\r\n\r\n return this.store[key];\r\n }\r\n\r\n public Set = (key: string, value: string): void => {\r\n if (!key) {\r\n throw new ArgumentNullError(\"key\");\r\n }\r\n\r\n this.store[key] = value;\r\n }\r\n\r\n public Remove = (key: string): void => {\r\n if (!key) {\r\n throw new ArgumentNullError(\"key\");\r\n }\r\n\r\n if (this.store[key] !== undefined) {\r\n delete this.store[key];\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common/InMemoryStorage.ts","import { ObjectDisposedError } from \"./Error\";\r\nimport { IDetachable } from \"./IDetachable\";\r\nimport { IStringDictionary } from \"./IDictionary\";\r\nimport { IDisposable } from \"./IDisposable\";\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 list: TItem[];\r\n private subscriptionIdCounter: number = 0;\r\n private addSubscriptions: IStringDictionary<() => void> = {};\r\n private removeSubscriptions: IStringDictionary<() => void> = {};\r\n private disposedSubscriptions: IStringDictionary<() => void> = {};\r\n private disposeReason: string = null;\r\n\r\n public constructor(list?: TItem[]) {\r\n this.list = [];\r\n // copy the list rather than taking as is.\r\n if (list) {\r\n for (const item of list) {\r\n this.list.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.list[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.list.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.list.unshift(item);\r\n } else if (index === this.list.length) {\r\n this.list.push(item);\r\n } else {\r\n this.list.splice(index, 0, item);\r\n }\r\n this.TriggerSubscriptions(this.addSubscriptions);\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.list.splice(index, count);\r\n this.TriggerSubscriptions(this.removeSubscriptions);\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.list.length;\r\n }\r\n\r\n public OnAdded = (addedCallback: () => void): IDetachable => {\r\n this.ThrowIfDisposed();\r\n const subscriptionId = this.subscriptionIdCounter++;\r\n\r\n this.addSubscriptions[subscriptionId] = addedCallback;\r\n\r\n return {\r\n Detach: () => {\r\n delete this.addSubscriptions[subscriptionId];\r\n },\r\n };\r\n }\r\n\r\n public OnRemoved = (removedCallback: () => void): IDetachable => {\r\n this.ThrowIfDisposed();\r\n const subscriptionId = this.subscriptionIdCounter++;\r\n\r\n this.removeSubscriptions[subscriptionId] = removedCallback;\r\n\r\n return {\r\n Detach: () => {\r\n delete this.removeSubscriptions[subscriptionId];\r\n },\r\n };\r\n }\r\n\r\n public OnDisposed = (disposedCallback: () => void): IDetachable => {\r\n this.ThrowIfDisposed();\r\n const subscriptionId = this.subscriptionIdCounter++;\r\n\r\n this.disposedSubscriptions[subscriptionId] = disposedCallback;\r\n\r\n return {\r\n Detach: () => {\r\n delete this.disposedSubscriptions[subscriptionId];\r\n },\r\n };\r\n }\r\n\r\n public Join = (seperator?: string): string => {\r\n this.ThrowIfDisposed();\r\n return this.list.join(seperator);\r\n }\r\n\r\n public ToArray = (): TItem[] => {\r\n const cloneCopy = Array();\r\n this.list.forEach((val: TItem) => {\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.list[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.list.length; i++) {\r\n selectList.push(callback(this.list[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.list.length; i++) {\r\n if (callback(this.list[i], i)) {\r\n filteredList.Add(this.list[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) => 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.list.concat(list.ToArray()));\r\n }\r\n\r\n public ConcatArray = (array: TItem[]): List => {\r\n this.ThrowIfDisposed();\r\n return new List(this.list.concat(array));\r\n }\r\n\r\n public IsDisposed = (): boolean => {\r\n return this.list == null;\r\n }\r\n\r\n public Dispose = (reason?: string): void => {\r\n if (!this.IsDisposed()) {\r\n this.disposeReason = reason;\r\n this.list = null;\r\n this.addSubscriptions = null;\r\n this.removeSubscriptions = null;\r\n this.TriggerSubscriptions(this.disposedSubscriptions);\r\n }\r\n }\r\n\r\n private ThrowIfDisposed = (): void => {\r\n if (this.IsDisposed()) {\r\n throw new ObjectDisposedError(\"List\", this.disposeReason);\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\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common/List.ts","import { ArgumentNullError } from \"./Error\";\r\n\r\nexport enum PromiseState {\r\n None,\r\n Resolved,\r\n Rejected,\r\n}\r\n\r\nexport interface IPromise {\r\n Result(): PromiseResult;\r\n\r\n ContinueWith(\r\n continuationCallback: (promiseResult: PromiseResult) => TContinuationResult): IPromise;\r\n\r\n ContinueWithPromise(\r\n continuationCallback: (promiseResult: PromiseResult) => IPromise): IPromise;\r\n\r\n OnSuccessContinueWith(\r\n continuationCallback: (result: T) => TContinuationResult): IPromise;\r\n\r\n OnSuccessContinueWithPromise(\r\n continuationCallback: (result: T) => IPromise): IPromise;\r\n\r\n On(successCallback: (result: T) => void, errorCallback: (error: string) => void): IPromise;\r\n\r\n Finally(callback: () => void): IPromise;\r\n}\r\n\r\nexport interface IDeferred {\r\n State(): PromiseState;\r\n\r\n Promise(): IPromise;\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 isCompleted: boolean;\r\n protected isError: boolean;\r\n protected error: string;\r\n protected result: T;\r\n\r\n public constructor(promiseResultEventSource: PromiseResultEventSource) {\r\n promiseResultEventSource.On((result: T) => {\r\n if (!this.isCompleted) {\r\n this.isCompleted = true;\r\n this.isError = false;\r\n this.result = result;\r\n }\r\n }, (error: string) => {\r\n if (!this.isCompleted) {\r\n this.isCompleted = true;\r\n this.isError = true;\r\n this.error = error;\r\n }\r\n });\r\n }\r\n\r\n public get IsCompleted(): boolean {\r\n return this.isCompleted;\r\n }\r\n\r\n public get IsError(): boolean {\r\n return this.isError;\r\n }\r\n\r\n public get Error(): string {\r\n return this.error;\r\n }\r\n\r\n public get Result(): T {\r\n return this.result;\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\n// tslint:disable-next-line:max-classes-per-file\r\nexport class PromiseResultEventSource {\r\n\r\n private onSetResult: (result: T) => void;\r\n private onSetError: (error: string) => void;\r\n\r\n public SetResult = (result: T): void => {\r\n this.onSetResult(result);\r\n }\r\n\r\n public SetError = (error: string): void => {\r\n this.onSetError(error);\r\n }\r\n\r\n public On = (onSetResult: (result: T) => void, onSetError: (error: string) => void): void => {\r\n this.onSetResult = onSetResult;\r\n this.onSetError = onSetError;\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class PromiseHelper {\r\n public static WhenAll = (promises: Array>): Promise => {\r\n if (!promises || promises.length === 0) {\r\n throw new ArgumentNullError(\"promises\");\r\n }\r\n\r\n const deferred = new Deferred();\r\n const errors: string[] = [];\r\n let completedPromises: number = 0;\r\n\r\n const checkForCompletion = () => {\r\n completedPromises++;\r\n if (completedPromises === promises.length) {\r\n if (errors.length === 0) {\r\n deferred.Resolve(true);\r\n } else {\r\n deferred.Reject(errors.join(\", \"));\r\n }\r\n }\r\n };\r\n\r\n for (const promise of promises) {\r\n promise.On((r: any) => {\r\n checkForCompletion();\r\n }, (e: string) => {\r\n errors.push(e);\r\n checkForCompletion();\r\n });\r\n }\r\n\r\n return deferred.Promise();\r\n }\r\n\r\n public static FromResult = (result: TResult): Promise => {\r\n const deferred = new Deferred();\r\n deferred.Resolve(result);\r\n return deferred.Promise();\r\n }\r\n\r\n public static FromError = (error: string): Promise => {\r\n const deferred = new Deferred();\r\n deferred.Reject(error);\r\n return deferred.Promise();\r\n }\r\n}\r\n\r\n// TODO: replace with ES6 promises\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class Promise implements IPromise {\r\n\r\n private sink: Sink;\r\n\r\n public constructor(sink: Sink) {\r\n this.sink = sink;\r\n }\r\n\r\n public Result = (): PromiseResult => {\r\n return this.sink.Result;\r\n }\r\n\r\n public ContinueWith = (\r\n continuationCallback: (promiseResult: PromiseResult) => TContinuationResult): Promise => {\r\n\r\n if (!continuationCallback) {\r\n throw new ArgumentNullError(\"continuationCallback\");\r\n }\r\n\r\n const continuationDeferral = new Deferred();\r\n\r\n this.sink.on(\r\n (r: T) => {\r\n try {\r\n const continuationResult: TContinuationResult = continuationCallback(this.sink.Result);\r\n continuationDeferral.Resolve(continuationResult);\r\n } catch (e) {\r\n continuationDeferral.Reject(`'Unhandled callback error: ${e}'`);\r\n }\r\n },\r\n (error: string) => {\r\n try {\r\n const continuationResult: TContinuationResult = continuationCallback(this.sink.Result);\r\n continuationDeferral.Resolve(continuationResult);\r\n } catch (e) {\r\n continuationDeferral.Reject(`'Unhandled callback error: ${e}. InnerError: ${error}'`);\r\n }\r\n },\r\n );\r\n\r\n return continuationDeferral.Promise();\r\n }\r\n\r\n public OnSuccessContinueWith = (\r\n continuationCallback: (result: T) => TContinuationResult): Promise => {\r\n\r\n if (!continuationCallback) {\r\n throw new ArgumentNullError(\"continuationCallback\");\r\n }\r\n\r\n const continuationDeferral = new Deferred();\r\n\r\n this.sink.on(\r\n (r: T) => {\r\n try {\r\n const continuationResult: TContinuationResult = continuationCallback(r);\r\n continuationDeferral.Resolve(continuationResult);\r\n } catch (e) {\r\n continuationDeferral.Reject(`'Unhandled callback error: ${e}'`);\r\n }\r\n },\r\n (error: string) => {\r\n continuationDeferral.Reject(`'Unhandled callback error: ${error}'`);\r\n },\r\n );\r\n\r\n return continuationDeferral.Promise();\r\n }\r\n\r\n public ContinueWithPromise = (\r\n continuationCallback: (promiseResult: PromiseResult) => Promise): Promise => {\r\n\r\n if (!continuationCallback) {\r\n throw new ArgumentNullError(\"continuationCallback\");\r\n }\r\n\r\n const continuationDeferral = new Deferred();\r\n\r\n this.sink.on(\r\n (r: T) => {\r\n try {\r\n const continuationPromise: Promise = continuationCallback(this.sink.Result);\r\n if (!continuationPromise) {\r\n throw new Error(\"'Continuation callback did not return promise'\");\r\n }\r\n continuationPromise.On((continuationResult: TContinuationResult) => {\r\n continuationDeferral.Resolve(continuationResult);\r\n }, (e: string) => {\r\n continuationDeferral.Reject(e);\r\n });\r\n } catch (e) {\r\n continuationDeferral.Reject(`'Unhandled callback error: ${e}'`);\r\n }\r\n },\r\n (error: string) => {\r\n try {\r\n const continuationPromise: Promise = continuationCallback(this.sink.Result);\r\n if (!continuationPromise) {\r\n throw new Error(\"Continuation callback did not return promise\");\r\n }\r\n continuationPromise.On((continuationResult: TContinuationResult) => {\r\n continuationDeferral.Resolve(continuationResult);\r\n }, (e: string) => {\r\n continuationDeferral.Reject(e);\r\n });\r\n } catch (e) {\r\n continuationDeferral.Reject(`'Unhandled callback error: ${e}. InnerError: ${error}'`);\r\n }\r\n },\r\n );\r\n\r\n return continuationDeferral.Promise();\r\n }\r\n\r\n public OnSuccessContinueWithPromise = (\r\n continuationCallback: (result: T) => Promise): Promise => {\r\n\r\n if (!continuationCallback) {\r\n throw new ArgumentNullError(\"continuationCallback\");\r\n }\r\n\r\n const continuationDeferral = new Deferred();\r\n\r\n this.sink.on(\r\n (r: T) => {\r\n try {\r\n const continuationPromise: Promise = continuationCallback(r);\r\n if (!continuationPromise) {\r\n throw new Error(\"Continuation callback did not return promise\");\r\n }\r\n continuationPromise.On((continuationResult: TContinuationResult) => {\r\n continuationDeferral.Resolve(continuationResult);\r\n }, (e: string) => {\r\n continuationDeferral.Reject(e);\r\n });\r\n } catch (e) {\r\n continuationDeferral.Reject(`'Unhandled callback error: ${e}'`);\r\n }\r\n },\r\n (error: string) => {\r\n continuationDeferral.Reject(`'Unhandled callback error: ${error}.'`);\r\n },\r\n );\r\n\r\n return continuationDeferral.Promise();\r\n }\r\n\r\n public On = (\r\n successCallback: (result: T) => void,\r\n errorCallback: (error: string) => void): Promise => {\r\n if (!successCallback) {\r\n throw new ArgumentNullError(\"successCallback\");\r\n }\r\n\r\n if (!errorCallback) {\r\n throw new ArgumentNullError(\"errorCallback\");\r\n }\r\n\r\n this.sink.on(successCallback, errorCallback);\r\n return this;\r\n }\r\n\r\n public Finally = (callback: () => void): Promise => {\r\n if (!callback) {\r\n throw new ArgumentNullError(\"callback\");\r\n }\r\n\r\n const callbackWrapper = (_: any) => {\r\n callback();\r\n };\r\n\r\n return this.On(callbackWrapper, callbackWrapper);\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class Deferred implements IDeferred {\r\n\r\n private promise: Promise;\r\n private sink: Sink;\r\n\r\n public constructor() {\r\n this.sink = new Sink();\r\n this.promise = new Promise(this.sink);\r\n }\r\n\r\n public State = (): PromiseState => {\r\n return this.sink.State;\r\n }\r\n\r\n public Promise = (): Promise => {\r\n return this.promise;\r\n }\r\n\r\n public Resolve = (result: T): Deferred => {\r\n this.sink.Resolve(result);\r\n return this;\r\n }\r\n\r\n public Reject = (error: string): Deferred => {\r\n this.sink.Reject(error);\r\n return this;\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class Sink {\r\n\r\n private state: PromiseState = PromiseState.None;\r\n private promiseResult: PromiseResult = null;\r\n private promiseResultEvents: PromiseResultEventSource = null;\r\n\r\n private successHandlers: Array<((result: T) => void)> = [];\r\n private errorHandlers: Array<(e: string) => void> = [];\r\n\r\n public constructor() {\r\n this.promiseResultEvents = new PromiseResultEventSource();\r\n this.promiseResult = new PromiseResult(this.promiseResultEvents);\r\n }\r\n\r\n public get State(): PromiseState {\r\n return this.state;\r\n }\r\n\r\n public get Result(): PromiseResult {\r\n return this.promiseResult;\r\n }\r\n\r\n public Resolve = (result: T): void => {\r\n if (this.state !== PromiseState.None) {\r\n throw new Error(\"'Cannot resolve a completed promise'\");\r\n }\r\n\r\n this.state = PromiseState.Resolved;\r\n this.promiseResultEvents.SetResult(result);\r\n\r\n for (let i = 0; i < this.successHandlers.length; i++) {\r\n this.ExecuteSuccessCallback(result, this.successHandlers[i], this.errorHandlers[i]);\r\n }\r\n\r\n this.DetachHandlers();\r\n }\r\n\r\n public Reject = (error: string): void => {\r\n if (this.state !== PromiseState.None) {\r\n throw new Error(\"'Cannot reject a completed promise'\");\r\n }\r\n\r\n this.state = PromiseState.Rejected;\r\n this.promiseResultEvents.SetError(error);\r\n\r\n for (const errorHandler of this.errorHandlers) {\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 successCallback = (r: T) => { return; };\r\n }\r\n\r\n if (this.state === PromiseState.None) {\r\n this.successHandlers.push(successCallback);\r\n this.errorHandlers.push(errorCallback);\r\n } else {\r\n if (this.state === PromiseState.Resolved) {\r\n this.ExecuteSuccessCallback(this.promiseResult.Result, successCallback, errorCallback);\r\n } else if (this.state === PromiseState.Rejected) {\r\n this.ExecuteErrorCallback(this.promiseResult.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}'`, 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}. 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.errorHandlers = [];\r\n this.successHandlers = [];\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common/Promise.ts","import { InvalidOperationError, ObjectDisposedError } from \"./Error\";\r\nimport { IDetachable } from \"./IDetachable\";\r\nimport { IDisposable } from \"./IDisposable\";\r\nimport { List } from \"./List\";\r\nimport { Deferred, Promise, PromiseHelper } from \"./Promise\";\r\n\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 promiseStore: List> = new List>();\r\n private list: List;\r\n private detachables: IDetachable[];\r\n private subscribers: List<{ type: SubscriberType, deferral: Deferred }>;\r\n private isDrainInProgress: boolean = false;\r\n private isDisposing: boolean = false;\r\n private disposeReason: string = null;\r\n\r\n public constructor(list?: List) {\r\n this.list = list ? list : new List();\r\n this.detachables = [];\r\n this.subscribers = new List<{ type: SubscriberType, deferral: Deferred }>();\r\n this.detachables.push(this.list.OnAdded(this.Drain));\r\n }\r\n\r\n public Enqueue = (item: TItem): void => {\r\n this.ThrowIfDispose();\r\n this.EnqueueFromPromise(PromiseHelper.FromResult(item));\r\n }\r\n\r\n public EnqueueFromPromise = (promise: Promise): void => {\r\n this.ThrowIfDispose();\r\n this.promiseStore.Add(promise);\r\n promise.Finally(() => {\r\n while (this.promiseStore.Length() > 0) {\r\n if (!this.promiseStore.First().Result().IsCompleted) {\r\n break;\r\n } else {\r\n const p = this.promiseStore.RemoveFirst();\r\n if (!p.Result().IsError) {\r\n this.list.Add(p.Result().Result);\r\n } else {\r\n // TODO: Log as warning.\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n public Dequeue = (): Promise => {\r\n this.ThrowIfDispose();\r\n const deferredSubscriber = new Deferred();\r\n this.subscribers.Add({ deferral: deferredSubscriber, type: SubscriberType.Dequeue });\r\n this.Drain();\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 this.subscribers.Add({ deferral: deferredSubscriber, type: SubscriberType.Peek });\r\n this.Drain();\r\n return deferredSubscriber.Promise();\r\n }\r\n\r\n public Length = (): number => {\r\n this.ThrowIfDispose();\r\n return this.list.Length();\r\n }\r\n\r\n public IsDisposed = (): boolean => {\r\n return this.subscribers == null;\r\n }\r\n\r\n public DrainAndDispose = (pendingItemProcessor: (pendingItemInQueue: TItem) => void, reason?: string): Promise => {\r\n if (!this.IsDisposed() && !this.isDisposing) {\r\n this.disposeReason = reason;\r\n this.isDisposing = true;\r\n while (this.subscribers.Length() > 0) {\r\n const subscriber = this.subscribers.RemoveFirst();\r\n // TODO: this needs work (Resolve(null) instead?).\r\n subscriber.deferral.Reject(\"Disposed\");\r\n }\r\n\r\n for (const detachable of this.detachables) {\r\n detachable.Detach();\r\n }\r\n\r\n if (this.promiseStore.Length() > 0 && pendingItemProcessor) {\r\n return PromiseHelper\r\n .WhenAll(this.promiseStore.ToArray())\r\n .ContinueWith(() => {\r\n this.subscribers = null;\r\n this.list.ForEach((item: TItem, index: number): void => {\r\n pendingItemProcessor(item);\r\n });\r\n this.list = null;\r\n return true;\r\n });\r\n } else {\r\n this.subscribers = null;\r\n this.list = null;\r\n }\r\n }\r\n\r\n return PromiseHelper.FromResult(true);\r\n }\r\n\r\n public Dispose = (reason?: string): void => {\r\n this.DrainAndDispose(null, reason);\r\n }\r\n\r\n private Drain = (): void => {\r\n if (!this.isDrainInProgress && !this.isDisposing) {\r\n this.isDrainInProgress = true;\r\n\r\n while (this.list.Length() > 0 && this.subscribers.Length() > 0 && !this.isDisposing) {\r\n const subscriber = this.subscribers.RemoveFirst();\r\n if (subscriber.type === SubscriberType.Peek) {\r\n subscriber.deferral.Resolve(this.list.First());\r\n } else {\r\n const dequeuedItem = this.list.RemoveFirst();\r\n subscriber.deferral.Resolve(dequeuedItem);\r\n }\r\n }\r\n\r\n this.isDrainInProgress = false;\r\n }\r\n }\r\n\r\n private ThrowIfDispose = (): void => {\r\n if (this.IsDisposed()) {\r\n if (this.disposeReason) {\r\n throw new InvalidOperationError(this.disposeReason);\r\n }\r\n\r\n throw new ObjectDisposedError(\"Queue\");\r\n } else if (this.isDisposing) {\r\n throw new InvalidOperationError(\"Queue disposing\");\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common/Queue.ts","import { WebsocketConnection } from \"../../common.browser/Exports\";\r\nimport {\r\n IConnection,\r\n IStringDictionary,\r\n Promise,\r\n Storage,\r\n} from \"../../common/Exports\";\r\nimport {\r\n AuthInfo,\r\n IAuthentication,\r\n IConnectionFactory,\r\n RecognitionAPI,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n SpeechResultFormat,\r\n WebsocketMessageFormatter,\r\n} from \"../speech/Exports\";\r\n\r\nconst TestHooksParamName: string = \"testhooks\";\r\nconst ConnectionIdHeader: string = \"X-ConnectionId\";\r\n\r\nexport class SpeechConnectionFactory implements IConnectionFactory {\r\n\r\n public Create = (\r\n config: RecognizerConfig,\r\n authInfo: AuthInfo,\r\n connectionId?: string): IConnection => {\r\n\r\n Storage.Local.Set(\"Host\", \"wss://westus.stt.speech.microsoft.com\");\r\n\r\n let endpoint = \"\";\r\n switch (config.RecognitionMode) {\r\n case RecognitionMode.Conversation:\r\n endpoint = this.Host + this.ConversationRelativeUri;\r\n break;\r\n case RecognitionMode.Dictation:\r\n endpoint = this.Host + this.DictationRelativeUri;\r\n break;\r\n default:\r\n endpoint = this.Host + this.InteractiveRelativeUri; // default is interactive\r\n break;\r\n }\r\n\r\n const queryParams: IStringDictionary = {\r\n format: SpeechResultFormat[config.Format].toString().toLowerCase(),\r\n language: config.Language,\r\n };\r\n\r\n if (this.IsDebugModeEnabled) {\r\n queryParams[TestHooksParamName] = \"1\";\r\n }\r\n\r\n const headers: IStringDictionary = {};\r\n headers[authInfo.HeaderName] = authInfo.Token;\r\n headers[ConnectionIdHeader] = connectionId;\r\n\r\n return new WebsocketConnection(endpoint, queryParams, headers, new WebsocketMessageFormatter(), config.RecognitionAPI, config.EndpointId, connectionId);\r\n }\r\n\r\n private get Host(): string {\r\n return Storage.Local.GetOrAdd(\"Host\", \"wss://speech.platform.bing.com\");\r\n }\r\n\r\n private get InteractiveRelativeUri(): string {\r\n return Storage.Local.GetOrAdd(\"InteractiveRelativeUri\", \"/speech/recognition/interactive/cognitiveservices/v1\");\r\n }\r\n\r\n private get ConversationRelativeUri(): string {\r\n return Storage.Local.GetOrAdd(\"ConversationRelativeUri\", \"/speech/recognition/conversation/cognitiveservices/v1\");\r\n }\r\n\r\n private get DictationRelativeUri(): string {\r\n return Storage.Local.GetOrAdd(\"DictationRelativeUri\", \"/speech/recognition/dictation/cognitiveservices/v1\");\r\n }\r\n\r\n private get IsDebugModeEnabled(): boolean {\r\n const value = Storage.Local.GetOrAdd(\"IsDebugModeEnabled\", \"false\");\r\n return value.toLowerCase() === \"true\";\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/sdk/speech.browser/SpeechConnectionFactory.ts","\r\nexport enum RecognitionAPI {\r\n BingSpeech,\r\n CustomSpeech,\r\n}\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 recognitionMode: RecognitionMode = RecognitionMode.Interactive;\r\n private language: string;\r\n private format: SpeechResultFormat;\r\n private speechConfig: SpeechConfig;\r\n private recognitionActivityTimeout: number;\r\n private recognitionAPI: RecognitionAPI;\r\n private endpointId: string;\r\n\r\n constructor(\r\n platformConfig: SpeechConfig,\r\n recognitionMode: RecognitionMode = RecognitionMode.Interactive,\r\n language: string = \"en-us\",\r\n format: SpeechResultFormat = SpeechResultFormat.Simple,\r\n recognitionAPI: RecognitionAPI,\r\n endpointId: string) {\r\n this.speechConfig = platformConfig ? platformConfig : new SpeechConfig(new Context(null, null));\r\n this.recognitionMode = recognitionMode;\r\n this.language = language;\r\n this.format = format;\r\n this.recognitionActivityTimeout = recognitionMode === RecognitionMode.Interactive ? 8000 : 25000;\r\n this.recognitionAPI = recognitionAPI,\r\n this.endpointId = endpointId;\r\n }\r\n\r\n public get RecognitionMode(): RecognitionMode {\r\n return this.recognitionMode;\r\n }\r\n\r\n public get Language(): string {\r\n return this.language;\r\n }\r\n\r\n public get Format(): SpeechResultFormat {\r\n return this.format;\r\n }\r\n\r\n public get SpeechConfig(): SpeechConfig {\r\n return this.speechConfig;\r\n }\r\n\r\n public get RecognitionActivityTimeout(): number {\r\n return this.recognitionActivityTimeout;\r\n }\r\n\r\n public get IsContinuousRecognition(): boolean {\r\n return this.recognitionMode !== RecognitionMode.Interactive;\r\n }\r\n\r\n public get RecognitionAPI(): RecognitionAPI {\r\n return this.recognitionAPI;\r\n }\r\n\r\n public get EndpointId(): string {\r\n return this.endpointId;\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class SpeechConfig {\r\n private context: Context;\r\n\r\n 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: any): any => {\r\n if (value && typeof value === \"object\") {\r\n const replacement: any = {};\r\n for (const k in value) {\r\n if (Object.hasOwnProperty.call(value, k)) {\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}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class Context {\r\n private system: System;\r\n private os: OS;\r\n private device: Device;\r\n\r\n constructor(os: OS, device: Device) {\r\n this.system = new System();\r\n this.os = os;\r\n this.device = device;\r\n }\r\n\r\n public get System(): System {\r\n return this.system;\r\n }\r\n\r\n public get OS(): OS {\r\n return this.os;\r\n }\r\n\r\n public get Device(): Device {\r\n return this.device;\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class System {\r\n private version: string;\r\n constructor() {\r\n // TODO: Tie this with the sdk Version somehow\r\n this.version = \"1.0.00000\";\r\n }\r\n public get Version(): string {\r\n // Controlled by sdk\r\n return this.version;\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class OS {\r\n\r\n private platform: string;\r\n private name: string;\r\n private version: string;\r\n\r\n 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 public get Platform(): string {\r\n return this.platform;\r\n }\r\n\r\n public get Name(): string {\r\n return this.name;\r\n }\r\n\r\n public get Version(): string {\r\n return this.version;\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class Device {\r\n\r\n private manufacturer: string;\r\n private model: string;\r\n private version: string;\r\n\r\n 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 public get Manufacturer(): string {\r\n return this.manufacturer;\r\n }\r\n\r\n public get Model(): string {\r\n return this.model;\r\n }\r\n\r\n public get Version(): string {\r\n return this.version;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/sdk/speech/RecognizerConfig.ts","export const log = (message?: any, ... optionalParams: any[]) => {\n if (typeof(window) !== 'undefined' && (window as any)[\"botchatDebug\"] && message)\n console.log(message, ... optionalParams);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/Konsole.ts","import { Speech, Func, Action } from '../SpeechModule'\nimport * as konsole from '../Konsole';\nimport * as CognitiveSpeech from 'microsoft-speech-browser-sdk/Speech.Browser.Sdk'\nimport updateIn from 'simple-update-in';\n\nexport interface ISpeechContextDgiGroup {\n Type: string;\n Hints?: { ReferenceGrammar: string };\n Items?: { Text: string }[];\n}\n\nexport interface ISpeechContext {\n dgi: { Groups: ISpeechContextDgiGroup[] };\n}\n\nexport interface ICognitiveServicesSpeechRecognizerProperties {\n locale?: string,\n subscriptionKey?: string,\n fetchCallback?: (authFetchEventId: string) => Promise,\n fetchOnExpiryCallback?: (authFetchEventId: string) => Promise,\n recognitionAPI?: number,\n endpointId?: string\n}\n\nexport class SpeechRecognizer implements Speech.ISpeechRecognizer {\n public audioStreamStartInitiated: boolean = false;\n public isStreamingToService: boolean = false;\n public onIntermediateResult: Func = null;\n public onFinalResult: Func = null;\n public onAudioStreamingToService: Action = null;\n public onRecognitionFailed: Action = null;\n public locale: string = null;\n public referenceGrammarId: string;\n\n private actualRecognizer: any = null;\n private grammars: string[] = null;\n private properties: ICognitiveServicesSpeechRecognizerProperties;\n\n constructor(properties: ICognitiveServicesSpeechRecognizerProperties = {}) {\n this.properties = properties;\n const recognitionMode = CognitiveSpeech.RecognitionMode.Interactive;\n const format = CognitiveSpeech.SpeechResultFormat.Simple;\n const locale = properties.locale || 'en-US';\n const recognitionAPI = properties.recognitionAPI || CognitiveSpeech.RecognitionAPI.BingSpeech;\n const endpointId = properties.endpointId || '';\n\n let recognizerConfig = new CognitiveSpeech.RecognizerConfig(\n new CognitiveSpeech.SpeechConfig(\n new CognitiveSpeech.Context(\n new CognitiveSpeech.OS(navigator.userAgent, \"Browser\", null),\n new CognitiveSpeech.Device(\"WebChat\", \"WebChat\", \"1.0.00000\"))),\n recognitionMode, // Speech.RecognitionMode.Interactive (Options - Interactive/Conversation/Dictation>)\n locale, // Supported laguages are specific to each recognition mode. Refer to docs.\n format,\n recognitionAPI,\n endpointId\n ); // Speech.SpeechResultFormat.Simple (Options - Simple/Detailed)\n\n let authentication;\n if (properties.subscriptionKey) {\n authentication = new CognitiveSpeech.CognitiveSubscriptionKeyAuthentication(properties.subscriptionKey);\n } else if (properties.fetchCallback && properties.fetchOnExpiryCallback) {\n authentication = new CognitiveSpeech.CognitiveTokenAuthentication(\n (authFetchEventId: string) => {\n let d = new CognitiveSpeech.Deferred();\n this.properties.fetchCallback(authFetchEventId).then(value => d.Resolve(value), err => d.Reject(err));\n return d.Promise();\n },\n (authFetchEventId: string) => {\n let d = new CognitiveSpeech.Deferred();\n this.properties.fetchOnExpiryCallback(authFetchEventId).then(value => d.Resolve(value), err => d.Reject(err));\n return d.Promise();\n }\n );\n } else {\n throw 'Error: The CognitiveServicesSpeechRecognizer requires either a subscriptionKey or a fetchCallback and fetchOnExpiryCallback.';\n }\n\n if(window.navigator.getUserMedia){\n this.actualRecognizer = CognitiveSpeech.CreateRecognizer(recognizerConfig, authentication);\n }\n else{\n console.error(\"This browser does not support speech recognition\");\n }\n }\n\n public warmup() {\n }\n\n public setGrammars(grammars: string[]) {\n this.grammars = grammars;\n }\n\n public async startRecognizing() {\n if (!this.actualRecognizer) {\n this.log('ERROR: no recognizer?');\n return;\n }\n let eventhandler = (event: any) => {\n this.log(event.Name);\n switch (event.Name) {\n case 'RecognitionTriggeredEvent':\n case 'ListeningStartedEvent':\n case 'SpeechStartDetectedEvent':\n case 'SpeechEndDetectedEvent':\n case 'SpeechDetailedPhraseEvent':\n case 'ConnectingToServiceEvent':\n break;\n case 'RecognitionStartedEvent':\n if (this.onAudioStreamingToService) {\n this.onAudioStreamingToService()\n }\n this.isStreamingToService = true;\n break;\n case 'SpeechHypothesisEvent':\n let hypothesisEvent = event as CognitiveSpeech.SpeechHypothesisEvent;\n this.log('Hypothesis Result: ' + hypothesisEvent.Result.Text);\n if (this.onIntermediateResult) {\n this.onIntermediateResult(hypothesisEvent.Result.Text);\n }\n break;\n case 'SpeechSimplePhraseEvent':\n let simplePhraseEvent = event as CognitiveSpeech.SpeechSimplePhraseEvent;\n if (CognitiveSpeech.RecognitionStatus[simplePhraseEvent.Result.RecognitionStatus] as any === CognitiveSpeech.RecognitionStatus.Success) {\n if (this.onFinalResult) {\n this.onFinalResult(simplePhraseEvent.Result.DisplayText);\n }\n } else {\n if (this.onRecognitionFailed) {\n this.onRecognitionFailed();\n }\n this.log('Recognition Status: ' + simplePhraseEvent.Result.RecognitionStatus.toString());\n }\n break;\n case 'RecognitionEndedEvent':\n this.isStreamingToService = false;\n break;\n default:\n this.log(event.Name + \" is unexpected\");\n }\n }\n\n let speechContext: ISpeechContext;\n\n if (this.referenceGrammarId) {\n speechContext = updateIn(speechContext, ['dgi', 'Groups'], (groups: any[] = []) => [...groups, {\n Type: 'Generic',\n Hints: { ReferenceGrammar: this.referenceGrammarId }\n }]);\n }\n\n if (this.grammars) {\n speechContext = updateIn(speechContext, ['dgi', 'Groups'], (groups: any[] = []) => [...groups, {\n Type: 'Generic',\n Items: this.grammars.map(grammar => ({ Text: grammar }))\n }]);\n }\n\n return this.actualRecognizer.Recognize(eventhandler, speechContext && JSON.stringify(speechContext));\n }\n\n public speechIsAvailable(){\n return this.actualRecognizer != null;\n }\n\n public async stopRecognizing() {\n if (this.actualRecognizer != null) {\n this.actualRecognizer.AudioSource.TurnOff();\n }\n\n this.isStreamingToService = false;\n\n return;\n }\n\n private log(message: string) {\n konsole.log('CognitiveServicesSpeechRecognizer: ' + message);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/CognitiveServices/SpeechRecognition.ts","import { Speech, Action } from '../SpeechModule'\nimport * as konsole from '../Konsole';\n\nexport interface ICognitiveServicesSpeechSynthesisProperties {\n subscriptionKey?: string,\n gender?: SynthesisGender,\n voiceName?: string,\n customVoiceEndpointUrl?: string,\n fetchCallback?: (authFetchEventId: string) => Promise,\n fetchOnExpiryCallback?: (authFetchEventId: string) => Promise\n}\n\nexport enum SynthesisGender { Male, Female };\n\ninterface SpeakRequest {\n isReadyToPlay: boolean,\n data: ArrayBuffer,\n text: string,\n locale: string,\n onSpeakingStarted: Action,\n onSpeakingFinished: Action,\n}\n\ninterface HttpHeader {\n name: string,\n value: string\n}\n\ninterface webkitAudioContext extends AudioContext {\n}\n\ndeclare var webkitAudioContext: {\n prototype: webkitAudioContext;\n new(): webkitAudioContext;\n}\n\nexport class SpeechSynthesizer implements Speech.ISpeechSynthesizer {\n private _requestQueue: SpeakRequest[] = null;\n private _isPlaying: boolean = false;\n private _audioElement: AudioContext;\n private _helper: CognitiveServicesHelper;\n private _properties: ICognitiveServicesSpeechSynthesisProperties;\n\n constructor(properties: ICognitiveServicesSpeechSynthesisProperties) {\n this._helper = new CognitiveServicesHelper(properties);\n this._properties = properties;\n this._requestQueue = new Array();\n }\n\n speak(text: string, lang: string, onSpeakingStarted: Action = null, onSpeakingFinished: Action = null): void {\n this._requestQueue.push(\n {\n isReadyToPlay: false,\n data: null,\n text: text,\n locale: lang,\n onSpeakingStarted: onSpeakingStarted,\n onSpeakingFinished: onSpeakingFinished\n }\n );\n this.getSpeechData().then(() => {\n this.playAudio();\n });\n }\n\n stopSpeaking(): void {\n if (this._isPlaying) {\n this._requestQueue = [];\n this._isPlaying = false;\n if (this._audioElement && this._audioElement.state !== \"closed\") {\n this._audioElement.close();\n }\n }\n }\n\n private playAudio() {\n if (this._requestQueue.length == 0) {\n return;\n }\n const top = this._requestQueue[0];\n if (!top) {\n return;\n }\n if (!top.isReadyToPlay) {\n window.setTimeout(() => this.playAudio(), 100);\n return;\n }\n if (!this._isPlaying) {\n this._isPlaying = true;\n if (!this._audioElement || this._audioElement.state === \"closed\") {\n if (typeof webkitAudioContext !== \"undefined\") {\n this._audioElement = new webkitAudioContext();\n }\n else {\n this._audioElement = new AudioContext();\n }\n }\n this._audioElement.decodeAudioData(top.data, (buffer) => {\n const source = this._audioElement.createBufferSource();\n source.buffer = buffer;\n source.connect(this._audioElement.destination);\n if (top.onSpeakingStarted) {\n top.onSpeakingStarted();\n }\n source.start(0);\n source.onended = (event) => {\n this._isPlaying = false;\n if (top.onSpeakingFinished) {\n top.onSpeakingFinished();\n }\n this._requestQueue = this._requestQueue.slice(1, this._requestQueue.length);\n if (this._requestQueue.length > 0) {\n this.playAudio();\n }\n }\n }, (ex) => {\n this.log(ex.message);\n this._isPlaying = false;\n this._requestQueue = this._requestQueue.slice(1, this._requestQueue.length);\n if (this._requestQueue.length > 0) {\n this.playAudio();\n }\n });\n }\n }\n\n private getSpeechData(): Promise {\n if (this._requestQueue.length == 0) {\n return;\n }\n const latest = this._requestQueue[this._requestQueue.length - 1];\n return this._helper.fetchSpeechData(latest.text, latest.locale, this._properties).then((result) => {\n latest.data = result;\n latest.isReadyToPlay = true;\n }, (ex) => {\n // Failed to get the speech data, ignore this item\n this.log(ex);\n this._requestQueue = this._requestQueue.slice(0, this._requestQueue.length - 1);\n });\n }\n\n private log(message: string) {\n konsole.log('CognitiveServicesSpeechSynthesis: ' + message);\n }\n}\n\nclass CognitiveServicesHelper {\n private readonly _customVoiceTokenURL = \"https://westus.api.cognitive.microsoft.com/sts/v1.0/issueToken\";\n private readonly _outputFormat = \"riff-16khz-16bit-mono-pcm\";\n private _tokenURL = \"https://api.cognitive.microsoft.com/sts/v1.0/issueToken\";\n private _synthesisURL = \"https://speech.platform.bing.com/synthesize\";\n private _tokenCallback: (id: string) => Promise;\n private _tokenExpiredCallback: (id: string) => Promise;\n private _lastTokenTime: number;\n\n constructor(props: ICognitiveServicesSpeechSynthesisProperties) {\n if (props.customVoiceEndpointUrl) {\n console.log(\"Using Custom Voice endpoint: \" + props.customVoiceEndpointUrl);\n this._synthesisURL = props.customVoiceEndpointUrl;\n this._tokenURL = this._customVoiceTokenURL;\n }\n if (props.subscriptionKey) {\n this._tokenCallback = (id: string) => this.fetchSpeechToken(id);\n this._tokenExpiredCallback = (id: string) => this.fetchSpeechToken(id);\n }\n else if (props.fetchCallback && props.fetchOnExpiryCallback) {\n this._tokenCallback = props.fetchCallback;\n this._tokenExpiredCallback = props.fetchOnExpiryCallback;\n }\n else {\n throw 'Error: The CognitiveServicesSpeechSynthesis requires either a subscriptionKey or a fetchCallback and a fetchOnExpiryCallback.';\n }\n }\n\n public fetchSpeechData(text: string, locale: string, synthesisProperties: ICognitiveServicesSpeechSynthesisProperties): Promise {\n const SSML = this.makeSSML(text, locale, synthesisProperties);\n const cbAfterToken = (token: string) => {\n this._lastTokenTime = Date.now();\n\n const optionalHeaders = [{ name: \"Content-type\", value: 'application/ssml+xml' },\n { name: \"X-Microsoft-OutputFormat\", value: this._outputFormat },\n { name: \"Authorization\", value: token }];\n\n return this.makeHttpCall(\"POST\", this._synthesisURL, true, optionalHeaders, SSML);\n };\n\n if (Date.now() - this._lastTokenTime > 500000) {\n return this._tokenExpiredCallback(synthesisProperties.subscriptionKey).then(token => cbAfterToken(token));\n }\n else {\n return this._tokenCallback(synthesisProperties.subscriptionKey).then(token => cbAfterToken(token));\n }\n }\n\n private makeSSML(text: string, locale: string, synthesisProperties: ICognitiveServicesSpeechSynthesisProperties): string {\n if (text.indexOf(\"\" + this.encodeHTML(text) + \"\";\n }\n }\n\n private processSSML(ssml: string, synthesisProperties: ICognitiveServicesSpeechSynthesisProperties): string {\n let processDone: boolean = false;\n\n // Extract locale info from ssml\n let locale: string;\n const match = /xml:lang=['\"](\\w\\w-\\w\\w)['\"]/.exec(ssml);\n if (match) {\n locale = match[1];\n }\n else {\n locale = \"en-us\";\n }\n\n // Extract gender from properties\n let gender = synthesisProperties && synthesisProperties.gender;\n if (gender === null || gender === undefined && synthesisProperties.customVoiceEndpointUrl === undefined) {\n gender = SynthesisGender.Female;\n }\n const parser = new DOMParser();\n const dom = parser.parseFromString(ssml, 'text/xml');\n const nodes = dom.documentElement.childNodes;\n\n // Check if there is a voice node\n for (let i = 0; i < nodes.length; ++i) {\n if (nodes[i].nodeName === \"voice\") {\n // Check if there is a name attribute on voice element\n for (let j = 0; j < nodes[i].attributes.length; ++j) {\n if (nodes[i].attributes[j].nodeName === \"name\") {\n // Name attribute is found on voice element, use it directly\n processDone = true;\n break;\n }\n\n // Find the gender info from voice element, this will override what is in the properties\n if (nodes[i].attributes[j].nodeName === \"xml:gender\") {\n gender = nodes[i].attributes[j].nodeValue.toLowerCase() === 'male' ? SynthesisGender.Male : SynthesisGender.Female;\n }\n }\n\n if (!processDone) {\n // Otherwise add the name attribute based on locale and gender\n const attribute = dom.createAttribute(\"name\");\n attribute.value = (synthesisProperties && synthesisProperties.voiceName) || this.fetchVoiceName(locale, gender);\n nodes[i].attributes.setNamedItem(attribute);\n processDone = true;\n }\n break;\n }\n }\n const serializer = new XMLSerializer();\n if (!processDone) {\n // There is no voice element, add one based on locale\n const voiceNode = dom.createElement(\"voice\") as Node;\n const attribute = dom.createAttribute(\"name\");\n attribute.value = (synthesisProperties && synthesisProperties.voiceName) || this.fetchVoiceName(locale, gender);\n voiceNode.attributes.setNamedItem(attribute);\n while (nodes.length > 0) {\n voiceNode.appendChild(dom.documentElement.firstChild);\n }\n dom.documentElement.appendChild(voiceNode);\n }\n return serializer.serializeToString(dom);\n }\n\n private encodeHTML(text: string): string {\n return text.replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n }\n\n private fetchSpeechToken(apiKey: string): Promise {\n const optionalHeaders: HttpHeader[] = [{ name: \"Ocp-Apim-Subscription-Key\", value: apiKey },\n // required for Firefox otherwise a CORS error is raised\n { name: \"Access-Control-Allow-Origin\", value: \"*\" }];\n return this.makeHttpCall(\"POST\", this._tokenURL, false, optionalHeaders).then((text) => {\n konsole.log(\"New authentication token generated.\");\n return Promise.resolve(text);\n }, (ex) => {\n const reason = \"Failed to generate authentication token\";\n konsole.log(reason);\n return Promise.reject(reason);\n });\n }\n\n private makeHttpCall(actionType: string, url: string, isArrayBuffer: boolean = false, optionalHeaders?: HttpHeader[], dataToSend?: any): Promise {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n if (isArrayBuffer) {\n xhr.responseType = 'arraybuffer';\n }\n xhr.onreadystatechange = function (event) {\n if (xhr.readyState !== 4) return;\n if (xhr.status >= 200 && xhr.status < 300) {\n if (!isArrayBuffer) {\n resolve(xhr.responseText);\n }\n else {\n resolve(xhr.response);\n }\n } else {\n reject(xhr.status);\n }\n };\n try {\n xhr.open(actionType, url, true);\n if (optionalHeaders) {\n optionalHeaders.forEach((header) => {\n xhr.setRequestHeader(header.name, header.value);\n });\n }\n if (dataToSend) {\n xhr.send(dataToSend);\n }\n else {\n xhr.send();\n }\n }\n catch (ex) {\n reject(ex)\n }\n });\n }\n\n private fetchVoiceName(locale: string, gender: SynthesisGender): string {\n let voiceName: string;\n const localeLowerCase = locale.toLowerCase();\n if (gender === SynthesisGender.Female) {\n voiceName = this._femaleVoiceMap[localeLowerCase] || this._femaleVoiceMap[\"en-us\"];\n }\n else {\n voiceName = this._maleVoiceMap[localeLowerCase] || this._maleVoiceMap[\"en-us\"];\n }\n return voiceName;\n }\n\n // source: https://docs.microsoft.com/en-us/azure/cognitive-services/speech/api-reference-rest/bingvoiceoutput\n private readonly _femaleVoiceMap: { [key: string]: string } = {\n \"ar-eg\": \"Microsoft Server Speech Text to Speech Voice (ar-EG, Hoda)\",\n \"ca-es\": \"Microsoft Server Speech Text to Speech Voice (ca-ES, HerenaRUS)\",\n \"da-dk\": \"Microsoft Server Speech Text to Speech Voice (da-DK, HelleRUS)\",\n \"de-de\": \"Microsoft Server Speech Text to Speech Voice (de-DE, Hedda)\",\n \"en-au\": \"Microsoft Server Speech Text to Speech Voice (en-AU, Catherine)\",\n \"en-ca\": \"Microsoft Server Speech Text to Speech Voice (en-CA, Linda)\",\n \"en-gb\": \"Microsoft Server Speech Text to Speech Voice (en-GB, Susan, Apollo)\",\n \"en-in\": \"Microsoft Server Speech Text to Speech Voice (en-IN, Heera, Apollo)\",\n \"en-us\": \"Microsoft Server Speech Text to Speech Voice (en-US, ZiraRUS)\",\n \"es-es\": \"Microsoft Server Speech Text to Speech Voice (es-ES, Laura, Apollo)\",\n \"es-mx\": \"Microsoft Server Speech Text to Speech Voice (es-MX, HildaRUS)\",\n \"fi-fi\": \"Microsoft Server Speech Text to Speech Voice (fi-FI, HeidiRUS)\",\n \"fr-ca\": \"Microsoft Server Speech Text to Speech Voice (fr-CA, Caroline)\",\n \"fr-fr\": \"Microsoft Server Speech Text to Speech Voice (fr-FR, Julie, Apollo)\",\n \"hi-in\": \"Microsoft Server Speech Text to Speech Voice (hi-IN, Kalpana, Apollo)\",\n \"ja-jp\": \"Microsoft Server Speech Text to Speech Voice (ja-JP, Ayumi, Apollo)\",\n \"ko-kr\": \"Microsoft Server Speech Text to Speech Voice (ko-KR, HeamiRUS)\",\n \"nb-no\": \"Microsoft Server Speech Text to Speech Voice (nb-NO, HuldaRUS)\",\n \"nl-nl\": \"Microsoft Server Speech Text to Speech Voice (nl-NL, HannaRUS)\",\n \"pl-pl\": \"Microsoft Server Speech Text to Speech Voice (pl-PL, PaulinaRUS)\",\n \"pt-br\": \"Microsoft Server Speech Text to Speech Voice (pt-BR, HeloisaRUS)\",\n \"pt-pt\": \"Microsoft Server Speech Text to Speech Voice (pt-PT, HeliaRUS)\",\n \"ru-ru\": \"Microsoft Server Speech Text to Speech Voice (ru-RU, Irina, Apollo)\",\n \"sv-se\": \"Microsoft Server Speech Text to Speech Voice (sv-SE, HedvigRUS)\",\n \"tr-tr\": \"Microsoft Server Speech Text to Speech Voice (tr-TR, SedaRUS)\",\n \"zh-cn\": \"Microsoft Server Speech Text to Speech Voice (zh-CN, HuihuiRUS)\",\n \"zh-hk\": \"Microsoft Server Speech Text to Speech Voice (zh-HK, Tracy, Apollo)\",\n \"zh-tw\": \"Microsoft Server Speech Text to Speech Voice (zh-TW, Yating, Apollo)\"\n };\n\n private readonly _maleVoiceMap: { [key: string]: string } = {\n \"ar-sa\": \"Microsoft Server Speech Text to Speech Voice (ar-SA, Naayf)\",\n \"cs-cz\": \"Microsoft Server Speech Text to Speech Voice (cs-CZ, Vit)\",\n \"de-at\": \"Microsoft Server Speech Text to Speech Voice (de-AT, Michael)\",\n \"de-ch\": \"Microsoft Server Speech Text to Speech Voice (de-CH, Karsten)\",\n \"de-de\": \"Microsoft Server Speech Text to Speech Voice (de-DE, Stefan, Apollo)\",\n \"el-gr\": \"Microsoft Server Speech Text to Speech Voice (el-GR, Stefanos)\",\n \"en-gb\": \"Microsoft Server Speech Text to Speech Voice (en-GB, George, Apollo)\",\n \"en-ie\": \"Microsoft Server Speech Text to Speech Voice (en-IE, Shaun)\",\n \"en-in\": \"Microsoft Server Speech Text to Speech Voice (en-IN, Ravi, Apollo)\",\n \"en-us\": \"Microsoft Server Speech Text to Speech Voice (en-US, BenjaminRUS)\",\n \"es-es\": \"Microsoft Server Speech Text to Speech Voice (es-ES, Pablo, Apollo)\",\n \"es-mx\": \"Microsoft Server Speech Text to Speech Voice (es-MX, Raul, Apollo)\",\n \"fr-ch\": \"Microsoft Server Speech Text to Speech Voice (fr-CH, Guillaume)\",\n \"fr-fr\": \"Microsoft Server Speech Text to Speech Voice (fr-FR, Paul, Apollo)\",\n \"he-il\": \"Microsoft Server Speech Text to Speech Voice (he-IL, Asaf)\",\n \"hi-in\": \"Microsoft Server Speech Text to Speech Voice (hi-IN, Hemant)\",\n \"hu-hu\": \"Microsoft Server Speech Text to Speech Voice (hu-HU, Szabolcs)\",\n \"id-id\": \"Microsoft Server Speech Text to Speech Voice (id-ID, Andika)\",\n \"it-it\": \"Microsoft Server Speech Text to Speech Voice (it-IT, Cosimo, Apollo)\",\n \"ja-jp\": \"Microsoft Server Speech Text to Speech Voice (ja-JP, Ichiro, Apollo)\",\n \"pt-br\": \"Microsoft Server Speech Text to Speech Voice (pt-BR, Daniel, Apollo)\",\n \"ro-ro\": \"Microsoft Server Speech Text to Speech Voice (ro-RO, Andrei)\",\n \"ru-ru\": \"Microsoft Server Speech Text to Speech Voice (ru-RU, Pavel, Apollo)\",\n \"sk-sk\": \"Microsoft Server Speech Text to Speech Voice (sk-SK, Filip)\",\n \"th-th\": \"Microsoft Server Speech Text to Speech Voice (th-TH, Pattara)\",\n \"zh-cn\": \"Microsoft Server Speech Text to Speech Voice (zh-CN, Kangkang, Apollo)\",\n \"zh-hk\": \"Microsoft Server Speech Text to Speech Voice (zh-HK, Danny, Apollo)\",\n \"zh-tw\": \"Microsoft Server Speech Text to Speech Voice (zh-TW, Zhiwei, Apollo)\"\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/CognitiveServices/SpeechSynthesis.ts","import { ConsoleLoggingListener, LocalStorage, SessionStorage } from \"./src/common.browser/Exports\";\r\nimport { Events, Storage } from \"./src/common/Exports\";\r\n\r\n// Common.Storage.SetLocalStorage(new Common.Browser.LocalStorage());\r\n// Common.Storage.SetSessionStorage(new Common.Browser.SessionStorage());\r\nEvents.Instance.AttachListener(new ConsoleLoggingListener());\r\n\r\nexport * from \"./src/common/Exports\";\r\nexport * from \"./src/common.browser/Exports\";\r\nexport * from \"./src/sdk/speech/Exports\";\r\nexport * from \"./src/sdk/speech.browser/Exports\";\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/Speech.Browser.Sdk.ts","import { EventType, IEventListener, PlatformEvent } from \"../common/Exports\";\r\n\r\nexport class ConsoleLoggingListener implements IEventListener {\r\n private logLevelFilter: EventType;\r\n\r\n public constructor(logLevelFilter: EventType = EventType.Warning) {\r\n this.logLevelFilter = logLevelFilter;\r\n }\r\n\r\n public OnEvent = (event: PlatformEvent): void => {\r\n if (event.EventType >= this.logLevelFilter) {\r\n const log = this.ToString(event);\r\n\r\n switch (event.EventType) {\r\n case EventType.Debug:\r\n // tslint:disable-next-line:no-console\r\n console.debug(log);\r\n break;\r\n case EventType.Info:\r\n // tslint:disable-next-line:no-console\r\n console.info(log);\r\n break;\r\n case EventType.Warning:\r\n // tslint:disable-next-line:no-console\r\n console.warn(log);\r\n break;\r\n case EventType.Error:\r\n // tslint:disable-next-line:no-console\r\n console.error(log);\r\n break;\r\n default:\r\n // tslint:disable-next-line:no-console\r\n console.log(log);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private ToString = (event: any): string => {\r\n const logFragments = [\r\n `${event.EventTime}`,\r\n `${event.Name}`,\r\n ];\r\n\r\n for (const prop in event) {\r\n if (prop && event.hasOwnProperty(prop) && prop !== \"eventTime\" && prop !== \"eventType\" && prop !== \"eventId\" && prop !== \"name\" && prop !== \"constructor\") {\r\n const value = event[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\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common.browser/ConsoleLoggingListener.ts","import {\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 CreateNoDashGuid,\r\n Events,\r\n EventSource,\r\n IAudioSource,\r\n IAudioStreamNode,\r\n IStringDictionary,\r\n PlatformEvent,\r\n Promise,\r\n PromiseHelper,\r\n Stream,\r\n StreamReader,\r\n} from \"../common/Exports\";\r\n\r\nimport { Timer } from \"../common.browser/Exports\";\r\n\r\nexport class FileAudioSource implements IAudioSource {\r\n\r\n // Recommended sample rate (bytes/second).\r\n private static readonly SAMPLE_RATE: number = 16000 * 2; // 16 kHz * 16 bits\r\n\r\n // We should stream audio at no faster than 2x real-time (i.e., send five chunks\r\n // per second, with the chunk size == sample rate in bytes per second * 2 / 5).\r\n private static readonly CHUNK_SIZE: number = FileAudioSource.SAMPLE_RATE * 2 / 5;\r\n\r\n private static readonly UPLOAD_INTERVAL: number = 200; // milliseconds\r\n\r\n // 10 seconds of audio in bytes =\r\n // sample rate (bytes/second) * 600 (seconds) + 44 (size of the wave header).\r\n private static readonly MAX_SIZE: number = FileAudioSource.SAMPLE_RATE * 600 + 44;\r\n\r\n private streams: IStringDictionary> = {};\r\n\r\n private id: string;\r\n\r\n private events: EventSource;\r\n\r\n private file: File;\r\n\r\n public constructor(file: File, audioSourceId?: string) {\r\n this.id = audioSourceId ? audioSourceId : CreateNoDashGuid();\r\n this.events = new EventSource();\r\n this.file = file;\r\n }\r\n\r\n public TurnOn = (): Promise => {\r\n if (typeof FileReader === \"undefined\") {\r\n const errorMsg = \"Browser does not support FileReader.\";\r\n this.OnEvent(new AudioSourceErrorEvent(errorMsg, \"\")); // initialization error - no streamid at this point\r\n return PromiseHelper.FromError(errorMsg);\r\n } else if (this.file.name.lastIndexOf(\".wav\") !== this.file.name.length - 4) {\r\n const errorMsg = this.file.name + \" is not supported. Only WAVE files are allowed at the moment.\";\r\n this.OnEvent(new AudioSourceErrorEvent(errorMsg, \"\"));\r\n return PromiseHelper.FromError(errorMsg);\r\n } else if (this.file.size > FileAudioSource.MAX_SIZE) {\r\n const errorMsg = this.file.name + \" exceeds the maximum allowed file size (\" + FileAudioSource.MAX_SIZE + \").\";\r\n this.OnEvent(new AudioSourceErrorEvent(errorMsg, \"\"));\r\n return PromiseHelper.FromError(errorMsg);\r\n }\r\n\r\n this.OnEvent(new AudioSourceInitializingEvent(this.id)); // no stream id\r\n this.OnEvent(new AudioSourceReadyEvent(this.id));\r\n return PromiseHelper.FromResult(true);\r\n }\r\n\r\n public Id = (): string => {\r\n return this.id;\r\n }\r\n\r\n public Attach = (audioNodeId: string): Promise => {\r\n this.OnEvent(new AudioStreamNodeAttachingEvent(this.id, audioNodeId));\r\n\r\n return this.Upload(audioNodeId).OnSuccessContinueWith(\r\n (streamReader: StreamReader) => {\r\n this.OnEvent(new AudioStreamNodeAttachedEvent(this.id, audioNodeId));\r\n return {\r\n Detach: () => {\r\n streamReader.Close();\r\n delete this.streams[audioNodeId];\r\n this.OnEvent(new AudioStreamNodeDetachedEvent(this.id, audioNodeId));\r\n this.TurnOff();\r\n },\r\n Id: () => {\r\n return audioNodeId;\r\n },\r\n Read: () => {\r\n return streamReader.Read();\r\n },\r\n };\r\n });\r\n }\r\n\r\n public Detach = (audioNodeId: string): void => {\r\n if (audioNodeId && this.streams[audioNodeId]) {\r\n this.streams[audioNodeId].Close();\r\n delete this.streams[audioNodeId];\r\n this.OnEvent(new AudioStreamNodeDetachedEvent(this.id, audioNodeId));\r\n }\r\n }\r\n\r\n public TurnOff = (): Promise => {\r\n for (const streamId in this.streams) {\r\n if (streamId) {\r\n const stream = this.streams[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.id)); // no stream now\r\n return PromiseHelper.FromResult(true);\r\n }\r\n\r\n public get Events(): EventSource {\r\n return this.events;\r\n }\r\n\r\n private Upload = (audioNodeId: string): Promise> => {\r\n return this.TurnOn()\r\n .OnSuccessContinueWith>((_: boolean) => {\r\n const stream = new Stream(audioNodeId);\r\n\r\n this.streams[audioNodeId] = stream;\r\n\r\n const reader: FileReader = new FileReader();\r\n\r\n let startOffset = 0;\r\n let endOffset = FileAudioSource.CHUNK_SIZE;\r\n let lastWriteTimestamp = 0;\r\n\r\n const processNextChunk = (event: Event): 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 if (lastWriteTimestamp !== 0) {\r\n const delay = Date.now() - lastWriteTimestamp;\r\n if (delay < FileAudioSource.UPLOAD_INTERVAL) {\r\n // It's been less than the \"upload interval\" since we've uploaded the\r\n // last chunk. Schedule the next upload to make sure that we're sending\r\n // upstream roughly one chunk per upload interval.\r\n new Timer(FileAudioSource.UPLOAD_INTERVAL - delay, processNextChunk).start();\r\n return;\r\n }\r\n }\r\n\r\n stream.Write(reader.result);\r\n lastWriteTimestamp = Date.now();\r\n\r\n if (endOffset < this.file.size) {\r\n startOffset = endOffset;\r\n endOffset = Math.min(endOffset + FileAudioSource.CHUNK_SIZE, this.file.size);\r\n const chunk = this.file.slice(startOffset, endOffset);\r\n reader.readAsArrayBuffer(chunk);\r\n } else {\r\n // we've written the entire file to the output stream, can close it now.\r\n stream.Close();\r\n }\r\n };\r\n\r\n reader.onload = processNextChunk;\r\n\r\n reader.onerror = (event: ErrorEvent) => {\r\n const errorMsg = `Error occurred while processing '${this.file.name}'. ${event.error}`;\r\n this.OnEvent(new AudioStreamNodeErrorEvent(this.id, audioNodeId, event.error));\r\n throw new Error(errorMsg);\r\n };\r\n\r\n const chunk = this.file.slice(startOffset, endOffset);\r\n reader.readAsArrayBuffer(chunk);\r\n\r\n return stream.GetReader();\r\n });\r\n }\r\n\r\n private OnEvent = (event: AudioSourceEvent): void => {\r\n this.events.OnEvent(event);\r\n Events.Instance.OnEvent(event);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common.browser/FileAudioSource.ts","import { ArgumentNullError, IKeyValueStorage } from \"../common/Exports\";\r\n\r\nexport class LocalStorage implements IKeyValueStorage {\r\n\r\n public Get = (key: string): string => {\r\n if (!key) {\r\n throw new ArgumentNullError(\"key\");\r\n }\r\n\r\n return localStorage.getItem(key);\r\n }\r\n\r\n public GetOrAdd = (key: string, valueToAdd: string): string => {\r\n if (!key) {\r\n throw new ArgumentNullError(\"key\");\r\n }\r\n\r\n const value = localStorage.getItem(key);\r\n if (value === null || value === undefined) {\r\n localStorage.setItem(key, valueToAdd);\r\n }\r\n\r\n return localStorage.getItem(key);\r\n }\r\n\r\n public Set = (key: string, value: string): void => {\r\n if (!key) {\r\n throw new ArgumentNullError(\"key\");\r\n }\r\n\r\n localStorage.setItem(key, value);\r\n }\r\n\r\n public Remove = (key: string): void => {\r\n if (!key) {\r\n throw new ArgumentNullError(\"key\");\r\n }\r\n\r\n localStorage.removeItem(key);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common.browser/LocalStorage.ts","import {\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 CreateNoDashGuid,\r\n Deferred,\r\n Events,\r\n EventSource,\r\n IAudioSource,\r\n IAudioStreamNode,\r\n IStringDictionary,\r\n PlatformEvent,\r\n Promise,\r\n PromiseHelper,\r\n Stream,\r\n StreamReader,\r\n} from \"../common/Exports\";\r\nimport { IRecorder } from \"./IRecorder\";\r\n\r\n// Extending the default definition with browser specific definitions for backward compatibility\r\ninterface INavigatorUserMedia extends NavigatorUserMedia {\r\n webkitGetUserMedia?: (constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback, errorCallback: NavigatorUserMediaErrorCallback) => void;\r\n mozGetUserMedia?: (constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback, errorCallback: NavigatorUserMediaErrorCallback) => void;\r\n msGetUserMedia?: (constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback, errorCallback: NavigatorUserMediaErrorCallback) => void;\r\n}\r\n\r\nexport class MicAudioSource implements IAudioSource {\r\n\r\n private streams: IStringDictionary> = {};\r\n\r\n private id: string;\r\n\r\n private events: EventSource;\r\n\r\n private initializeDeferral: Deferred;\r\n\r\n private recorder: IRecorder;\r\n\r\n private mediaStream: MediaStream;\r\n\r\n private context: AudioContext;\r\n\r\n public constructor(recorder: IRecorder, audioSourceId?: string) {\r\n this.id = audioSourceId ? audioSourceId : CreateNoDashGuid();\r\n this.events = new EventSource();\r\n this.recorder = recorder;\r\n }\r\n\r\n public TurnOn = (): Promise => {\r\n if (this.initializeDeferral) {\r\n return this.initializeDeferral.Promise();\r\n }\r\n\r\n this.initializeDeferral = new Deferred();\r\n\r\n this.CreateAudioContext();\r\n\r\n const nav = window.navigator as INavigatorUserMedia;\r\n\r\n let getUserMedia = (\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.initializeDeferral.Reject(errorMsg);\r\n this.OnEvent(new AudioSourceErrorEvent(errorMsg, \"\")); // mic initialized error - no streamid at this point\r\n } else {\r\n const next = () => {\r\n this.OnEvent(new AudioSourceInitializingEvent(this.id)); // no stream id\r\n getUserMedia(\r\n { audio: true, video: false },\r\n (mediaStream: MediaStream) => {\r\n this.mediaStream = mediaStream;\r\n this.OnEvent(new AudioSourceReadyEvent(this.id));\r\n this.initializeDeferral.Resolve(true);\r\n }, (error: MediaStreamError) => {\r\n const errorMsg = `Error occurred during microphone initialization: ${error}`;\r\n const tmp = this.initializeDeferral;\r\n // HACK: this should be handled through onError callbacks of all promises up the stack.\r\n // Unfortunately, the current implementation does not provide an easy way to reject promises\r\n // without a lot of code replication.\r\n // TODO: fix promise implementation, allow for a graceful reject chaining.\r\n this.initializeDeferral = null;\r\n tmp.Reject(errorMsg); // this will bubble up through the whole chain of promises,\r\n // with each new level adding extra \"Unhandled callback error\" prefix to the error message.\r\n // The following line is not guaranteed to be executed.\r\n this.OnEvent(new AudioSourceErrorEvent(this.id, errorMsg));\r\n });\r\n };\r\n\r\n if (this.context.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.context.resume().then(next, (reason: any) => {\r\n this.initializeDeferral.Reject(`Failed to initialize audio context: ${reason}`);\r\n });\r\n } else {\r\n next();\r\n }\r\n }\r\n\r\n return this.initializeDeferral.Promise();\r\n }\r\n\r\n public Id = (): string => {\r\n return this.id;\r\n }\r\n\r\n public Attach = (audioNodeId: string): Promise => {\r\n this.OnEvent(new AudioStreamNodeAttachingEvent(this.id, audioNodeId));\r\n\r\n return this.Listen(audioNodeId).OnSuccessContinueWith(\r\n (streamReader: StreamReader) => {\r\n this.OnEvent(new AudioStreamNodeAttachedEvent(this.id, audioNodeId));\r\n return {\r\n Detach: () => {\r\n streamReader.Close();\r\n delete this.streams[audioNodeId];\r\n this.OnEvent(new AudioStreamNodeDetachedEvent(this.id, audioNodeId));\r\n this.TurnOff();\r\n },\r\n Id: () => {\r\n return audioNodeId;\r\n },\r\n Read: () => {\r\n return streamReader.Read();\r\n },\r\n };\r\n });\r\n }\r\n\r\n public Detach = (audioNodeId: string): void => {\r\n if (audioNodeId && this.streams[audioNodeId]) {\r\n this.streams[audioNodeId].Close();\r\n delete this.streams[audioNodeId];\r\n this.OnEvent(new AudioStreamNodeDetachedEvent(this.id, audioNodeId));\r\n }\r\n }\r\n\r\n public TurnOff = (): Promise => {\r\n for (const streamId in this.streams) {\r\n if (streamId) {\r\n const stream = this.streams[streamId];\r\n if (stream) {\r\n stream.Close();\r\n }\r\n }\r\n }\r\n\r\n this.OnEvent(new AudioSourceOffEvent(this.id)); // no stream now\r\n this.initializeDeferral = null;\r\n\r\n this.DestroyAudioContext();\r\n\r\n return PromiseHelper.FromResult(true);\r\n }\r\n\r\n public get Events(): EventSource {\r\n return this.events;\r\n }\r\n\r\n private Listen = (audioNodeId: string): Promise> => {\r\n return this.TurnOn()\r\n .OnSuccessContinueWith>((_: boolean) => {\r\n const stream = new Stream(audioNodeId);\r\n this.streams[audioNodeId] = stream;\r\n\r\n try {\r\n this.recorder.Record(this.context, this.mediaStream, stream);\r\n } catch (error) {\r\n this.OnEvent(new AudioStreamNodeErrorEvent(this.id, audioNodeId, error));\r\n throw error;\r\n }\r\n\r\n return stream.GetReader();\r\n });\r\n }\r\n\r\n private OnEvent = (event: AudioSourceEvent): void => {\r\n this.events.OnEvent(event);\r\n Events.Instance.OnEvent(event);\r\n }\r\n\r\n private CreateAudioContext = (): void => {\r\n if (!!this.context) {\r\n return;\r\n }\r\n\r\n // https://developer.mozilla.org/en-US/docs/Web/API/AudioContext\r\n const AudioContext = ((window as any).AudioContext)\r\n || ((window as any).webkitAudioContext)\r\n || false;\r\n\r\n if (!AudioContext) {\r\n throw new Error(\"Browser does not support Web Audio API (AudioContext is not available).\");\r\n }\r\n\r\n this.context = new AudioContext();\r\n }\r\n\r\n private DestroyAudioContext = (): void => {\r\n if (!this.context) {\r\n return;\r\n }\r\n\r\n this.recorder.ReleaseMediaResources(this.context);\r\n\r\n if (\"close\" in this.context) {\r\n this.context.close();\r\n this.context = null;\r\n } else if (this.context.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 this.context.suspend();\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common.browser/MicAudioSource.ts","import { Stream } from \"../common/Exports\";\r\nimport { IRecorder } from \"./IRecorder\";\r\n\r\n// getting around the build error for MediaRecorder as Typescript does not have a definition for this one.\r\ndeclare var MediaRecorder: any;\r\n\r\nexport class OpusRecorder implements IRecorder {\r\n private mediaResources: IMediaResources;\r\n private mediaRecorderOptions: any;\r\n\r\n constructor(options?: { mimeType: string, bitsPerSecond: number }) {\r\n this.mediaRecorderOptions = options;\r\n }\r\n\r\n public Record = (context: AudioContext, mediaStream: MediaStream, outputStream: Stream): void => {\r\n const mediaRecorder: any = new MediaRecorder(mediaStream, this.mediaRecorderOptions);\r\n const timeslice = 100; // this is in ms - 100 ensures that the chunk doesn't exceed the max size of chunk allowed in WS connection\r\n mediaRecorder.ondataavailable = (dataAvailableEvent: any) => {\r\n if (outputStream) {\r\n const reader = new FileReader();\r\n reader.readAsArrayBuffer(dataAvailableEvent.data);\r\n reader.onloadend = (event: ProgressEvent) => {\r\n outputStream.Write(reader.result);\r\n };\r\n }\r\n };\r\n\r\n this.mediaResources = {\r\n recorder: mediaRecorder,\r\n stream: mediaStream,\r\n };\r\n mediaRecorder.start(timeslice);\r\n }\r\n\r\n public ReleaseMediaResources = (context: AudioContext): void => {\r\n if (this.mediaResources.recorder.state !== \"inactive\") {\r\n this.mediaResources.recorder.stop();\r\n }\r\n this.mediaResources.stream.getTracks().forEach((track: any) => track.stop());\r\n }\r\n}\r\n\r\ninterface IMediaResources {\r\n stream: MediaStream;\r\n recorder: any;\r\n}\r\n\r\n/* Declaring this inline to avoid compiler warnings\r\ndeclare class MediaRecorder {\r\n constructor(mediaStream: MediaStream, options: any);\r\n\r\n public state: string;\r\n\r\n public ondataavailable(dataAvailableEvent: any): void;\r\n public stop(): void;\r\n}*/\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common.browser/OpusRecorder.ts","import { RiffPcmEncoder, Stream } from \"../common/Exports\";\r\nimport { IRecorder } from \"./IRecorder\";\r\n\r\nexport class PcmRecorder implements IRecorder {\r\n private mediaResources: IMediaResources;\r\n\r\n public Record = (context: AudioContext, mediaStream: MediaStream, outputStream: Stream): void => {\r\n const desiredSampleRate = 16000;\r\n\r\n // https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/createScriptProcessor\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\r\n const waveStreamEncoder = new RiffPcmEncoder(context.sampleRate, desiredSampleRate);\r\n let needHeader: boolean = true;\r\n const that = this;\r\n scriptNode.onaudioprocess = (event: AudioProcessingEvent) => {\r\n const inputFrame = event.inputBuffer.getChannelData(0);\r\n\r\n if (outputStream && !outputStream.IsClosed) {\r\n const waveFrame = waveStreamEncoder.Encode(needHeader, inputFrame);\r\n if (!!waveFrame) {\r\n outputStream.Write(waveFrame);\r\n needHeader = false;\r\n }\r\n }\r\n };\r\n\r\n // https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/createMediaStreamSource\r\n const micInput = context.createMediaStreamSource(mediaStream);\r\n\r\n this.mediaResources = {\r\n scriptProcessorNode: scriptNode,\r\n source: micInput,\r\n stream: mediaStream,\r\n };\r\n\r\n micInput.connect(scriptNode);\r\n scriptNode.connect(context.destination);\r\n }\r\n\r\n public ReleaseMediaResources = (context: AudioContext): void => {\r\n if (this.mediaResources) {\r\n if (this.mediaResources.scriptProcessorNode) {\r\n this.mediaResources.scriptProcessorNode.disconnect(context.destination);\r\n this.mediaResources.scriptProcessorNode = null;\r\n }\r\n if (this.mediaResources.source) {\r\n this.mediaResources.source.disconnect();\r\n this.mediaResources.stream.getTracks().forEach((track: any) => track.stop());\r\n this.mediaResources.source = null;\r\n }\r\n }\r\n }\r\n}\r\n\r\ninterface IMediaResources {\r\n source: MediaStreamAudioSourceNode;\r\n scriptProcessorNode: ScriptProcessorNode;\r\n stream: MediaStream;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common.browser/PCMRecorder.ts","import { ArgumentNullError, IKeyValueStorage } from \"../common/Exports\";\r\n\r\nexport class SessionStorage implements IKeyValueStorage {\r\n\r\n public Get = (key: string): string => {\r\n if (!key) {\r\n throw new ArgumentNullError(\"key\");\r\n }\r\n\r\n return sessionStorage.getItem(key);\r\n }\r\n\r\n public GetOrAdd = (key: string, valueToAdd: string): string => {\r\n if (!key) {\r\n throw new ArgumentNullError(\"key\");\r\n }\r\n\r\n const value = sessionStorage.getItem(key);\r\n if (value === null || value === undefined) {\r\n sessionStorage.setItem(key, valueToAdd);\r\n }\r\n\r\n return sessionStorage.getItem(key);\r\n }\r\n\r\n public Set = (key: string, value: string): void => {\r\n if (!key) {\r\n throw new ArgumentNullError(\"key\");\r\n }\r\n\r\n sessionStorage.setItem(key, value);\r\n }\r\n\r\n public Remove = (key: string): void => {\r\n if (!key) {\r\n throw new ArgumentNullError(\"key\");\r\n }\r\n\r\n sessionStorage.removeItem(key);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common.browser/SessionStorage.ts","import { ITimer } from \"../common/Exports\";\r\n\r\nexport class Timer implements ITimer {\r\n private delayInMillisec: number;\r\n private timerId: number;\r\n private successCallback: any;\r\n constructor(delayInMillisec: number, successCallback: any) {\r\n this.delayInMillisec = delayInMillisec;\r\n this.successCallback = successCallback;\r\n }\r\n public start = (...params: any[]): void => {\r\n if (this.timerId) {\r\n this.stop();\r\n }\r\n this.timerId = setTimeout(this.successCallback, this.delayInMillisec, params);\r\n }\r\n\r\n public stop = (): void => {\r\n clearTimeout(this.timerId);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common.browser/Timer.ts","import {\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 PlatformEvent,\r\n Promise,\r\n} from \"../common/Exports\";\r\nimport { RecognitionAPI } from \"../sdk/speech/Exports\";\r\nimport { WebsocketMessageAdapter } from \"./WebsocketMessageAdapter\";\r\n\r\nexport class WebsocketConnection implements IConnection {\r\n\r\n private uri: string;\r\n private messageFormatter: IWebsocketMessageFormatter;\r\n private connectionMessageAdapter: WebsocketMessageAdapter;\r\n private id: string;\r\n private isDisposed: 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 recognitionAPI: RecognitionAPI,\r\n endpointId: string,\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.messageFormatter = messageFormatter;\r\n\r\n let queryParams = \"\";\r\n let i = 0;\r\n if (recognitionAPI === RecognitionAPI.CustomSpeech) {\r\n queryParams = \"?cid=\" + endpointId;\r\n i++;\r\n }\r\n\r\n if (queryParameters) {\r\n for (const paramName in queryParameters) {\r\n if (paramName) {\r\n queryParams += i === 0 ? \"?\" : \"&\";\r\n const val = encodeURIComponent(queryParameters[paramName]);\r\n queryParams += `${paramName}=${val}`;\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 ? \"?\" : \"&\";\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.uri = uri + queryParams;\r\n this.id = connectionId ? connectionId : CreateNoDashGuid();\r\n\r\n this.connectionMessageAdapter = new WebsocketMessageAdapter(\r\n this.uri,\r\n this.Id,\r\n this.messageFormatter);\r\n }\r\n\r\n public Dispose = (): void => {\r\n this.isDisposed = true;\r\n\r\n if (this.connectionMessageAdapter) {\r\n this.connectionMessageAdapter.Close();\r\n }\r\n }\r\n\r\n public IsDisposed = (): boolean => {\r\n return this.isDisposed;\r\n }\r\n\r\n public get Id(): string {\r\n return this.id;\r\n }\r\n\r\n public State = (): ConnectionState => {\r\n return this.connectionMessageAdapter.State;\r\n }\r\n\r\n public Open = (): Promise => {\r\n return this.connectionMessageAdapter.Open();\r\n }\r\n\r\n public Send = (message: ConnectionMessage): Promise => {\r\n return this.connectionMessageAdapter.Send(message);\r\n }\r\n\r\n public Read = (): Promise => {\r\n return this.connectionMessageAdapter.Read();\r\n }\r\n\r\n public get Events(): EventSource {\r\n return this.connectionMessageAdapter.Events;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common.browser/WebsocketConnection.ts","import { EventType, PlatformEvent } from \"./PlatformEvent\";\r\n\r\nexport class AudioSourceEvent extends PlatformEvent {\r\n private audioSourceId: string;\r\n\r\n constructor(eventName: string, audioSourceId: string, eventType: EventType = EventType.Info) {\r\n super(eventName, eventType);\r\n this.audioSourceId = audioSourceId;\r\n }\r\n\r\n public get AudioSourceId(): string {\r\n return this.audioSourceId;\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class AudioSourceInitializingEvent extends AudioSourceEvent {\r\n constructor(audioSourceId: string) {\r\n super(\"AudioSourceInitializingEvent\", audioSourceId);\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class AudioSourceReadyEvent extends AudioSourceEvent {\r\n constructor(audioSourceId: string) {\r\n super(\"AudioSourceReadyEvent\", audioSourceId);\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class AudioSourceOffEvent extends AudioSourceEvent {\r\n constructor(audioSourceId: string) {\r\n super(\"AudioSourceOffEvent\", audioSourceId);\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class AudioSourceErrorEvent extends AudioSourceEvent {\r\n private error: string;\r\n constructor(audioSourceId: string, error: string) {\r\n super(\"AudioSourceErrorEvent\", audioSourceId, EventType.Error);\r\n this.error = error;\r\n }\r\n\r\n public get Error(): string {\r\n return this.error;\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class AudioStreamNodeEvent extends AudioSourceEvent {\r\n private audioNodeId: string;\r\n\r\n constructor(eventName: string, audioSourceId: string, audioNodeId: string) {\r\n super(eventName, audioSourceId);\r\n this.audioNodeId = audioNodeId;\r\n }\r\n\r\n public get AudioNodeId(): string {\r\n return this.audioNodeId;\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class AudioStreamNodeAttachingEvent extends AudioStreamNodeEvent {\r\n constructor(audioSourceId: string, audioNodeId: string) {\r\n super(\"AudioStreamNodeAttachingEvent\", audioSourceId, audioNodeId);\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class AudioStreamNodeAttachedEvent extends AudioStreamNodeEvent {\r\n constructor(audioSourceId: string, audioNodeId: string) {\r\n super(\"AudioStreamNodeAttachedEvent\", audioSourceId, audioNodeId);\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class AudioStreamNodeDetachedEvent extends AudioStreamNodeEvent {\r\n constructor(audioSourceId: string, audioNodeId: string) {\r\n super(\"AudioStreamNodeDetachedEvent\", audioSourceId, audioNodeId);\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class AudioStreamNodeErrorEvent extends AudioStreamNodeEvent {\r\n private error: string;\r\n\r\n constructor(audioSourceId: string, audioNodeId: string, error: string) {\r\n super(\"AudioStreamNodeErrorEvent\", audioSourceId, audioNodeId);\r\n this.error = error;\r\n }\r\n\r\n public get Error(): string {\r\n return this.error;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common/AudioSourceEvents.ts","import { ConnectionMessage } from \"./ConnectionMessage\";\r\nimport { IStringDictionary } from \"./IDictionary\";\r\nimport { EventType, PlatformEvent } from \"./PlatformEvent\";\r\n\r\nexport class ConnectionEvent extends PlatformEvent {\r\n private connectionId: string;\r\n\r\n constructor(eventName: string, connectionId: string, eventType: EventType = EventType.Info) {\r\n super(eventName, eventType);\r\n this.connectionId = connectionId;\r\n }\r\n\r\n public get ConnectionId(): string {\r\n return this.connectionId;\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class ConnectionStartEvent extends ConnectionEvent {\r\n private uri: string;\r\n private headers: IStringDictionary;\r\n\r\n constructor(connectionId: string, uri: string, headers?: IStringDictionary) {\r\n super(\"ConnectionStartEvent\", connectionId);\r\n this.uri = uri;\r\n this.headers = headers;\r\n }\r\n\r\n public get Uri(): string {\r\n return this.uri;\r\n }\r\n\r\n public get Headers(): IStringDictionary {\r\n return this.headers;\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class ConnectionEstablishedEvent extends ConnectionEvent {\r\n constructor(connectionId: string, metadata?: IStringDictionary) {\r\n super(\"ConnectionEstablishedEvent\", connectionId);\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class ConnectionClosedEvent extends ConnectionEvent {\r\n private reason: string;\r\n private statusCode: number;\r\n\r\n constructor(connectionId: string, statusCode: number, reason: string) {\r\n super(\"ConnectionClosedEvent\", connectionId, EventType.Warning);\r\n this.reason = reason;\r\n this.statusCode = statusCode;\r\n }\r\n\r\n public get Reason(): string {\r\n return this.reason;\r\n }\r\n\r\n public get StatusCode(): number {\r\n return this.statusCode;\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class ConnectionEstablishErrorEvent extends ConnectionEvent {\r\n private statusCode: number;\r\n private reason: string;\r\n\r\n constructor(connectionId: string, statuscode: number, reason: string) {\r\n super(\"ConnectionEstablishErrorEvent\", connectionId, EventType.Error);\r\n this.statusCode = statuscode;\r\n this.reason = reason;\r\n }\r\n\r\n public get Reason(): string {\r\n return this.reason;\r\n }\r\n\r\n public get StatusCode(): number {\r\n return this.statusCode;\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class ConnectionMessageReceivedEvent extends ConnectionEvent {\r\n private networkReceivedTime: string;\r\n private message: ConnectionMessage;\r\n\r\n constructor(connectionId: string, networkReceivedTimeISO: string, message: ConnectionMessage) {\r\n super(\"ConnectionMessageReceivedEvent\", connectionId);\r\n this.networkReceivedTime = networkReceivedTimeISO;\r\n this.message = message;\r\n }\r\n\r\n public get NetworkReceivedTime(): string {\r\n return this.networkReceivedTime;\r\n }\r\n\r\n public get Message(): ConnectionMessage {\r\n return this.message;\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class ConnectionMessageSentEvent extends ConnectionEvent {\r\n private networkSentTime: string;\r\n private message: ConnectionMessage;\r\n\r\n constructor(connectionId: string, networkSentTimeISO: string, message: ConnectionMessage) {\r\n super(\"ConnectionMessageSentEvent\", connectionId);\r\n this.networkSentTime = networkSentTimeISO;\r\n this.message = message;\r\n }\r\n\r\n public get NetworkSentTime(): string {\r\n return this.networkSentTime;\r\n }\r\n\r\n public get Message(): ConnectionMessage {\r\n return this.message;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common/ConnectionEvents.ts","\r\nexport class ConnectionOpenResponse {\r\n private statusCode: number;\r\n private reason: string;\r\n\r\n constructor(statusCode: number, reason: string) {\r\n this.statusCode = statusCode;\r\n this.reason = reason;\r\n }\r\n\r\n public get StatusCode(): number {\r\n return this.statusCode;\r\n }\r\n\r\n public get Reason(): string {\r\n return this.reason;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common/ConnectionOpenResponse.ts","import { ArgumentNullError } from \"./Error\";\r\nimport { EventSource } from \"./EventSource\";\r\nimport { IEventSource } from \"./IEventSource\";\r\nimport { PlatformEvent } from \"./PlatformEvent\";\r\n\r\nexport class Events {\r\n private static instance: 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.instance = eventSource;\r\n }\r\n\r\n public static get Instance(): IEventSource {\r\n return Events.instance;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common/Events.ts","import { ConnectionEvent } from \"./ConnectionEvents\";\r\nimport { ConnectionMessage } from \"./ConnectionMessage\";\r\nimport { ConnectionOpenResponse } from \"./ConnectionOpenResponse\";\r\nimport { EventSource } from \"./EventSource\";\r\nimport { IDisposable } from \"./IDisposable\";\r\nimport { Promise } from \"./Promise\";\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 extends IDisposable {\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}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common/IConnection.ts","import { MessageType } from \"./ConnectionMessage\";\r\nimport { ArgumentNullError, InvalidOperationError } from \"./Error\";\r\nimport { CreateNoDashGuid } from \"./Guid\";\r\n\r\nexport class RawWebsocketMessage {\r\n\r\n private messageType: MessageType;\r\n private payload: any = null;\r\n private id: 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 if (messageType === MessageType.Binary && !(payload instanceof 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.messageType = messageType;\r\n this.payload = payload;\r\n this.id = id ? id : CreateNoDashGuid();\r\n }\r\n\r\n public get MessageType(): MessageType {\r\n return this.messageType;\r\n }\r\n\r\n public get Payload(): any {\r\n return this.payload;\r\n }\r\n\r\n public get TextContent(): string {\r\n if (this.messageType === MessageType.Binary) {\r\n throw new InvalidOperationError(\"Not supported for binary message\");\r\n }\r\n\r\n return this.payload as string;\r\n }\r\n\r\n public get BinaryContent(): ArrayBuffer {\r\n if (this.messageType === MessageType.Text) {\r\n throw new InvalidOperationError(\"Not supported for text message\");\r\n }\r\n\r\n return this.payload;\r\n }\r\n\r\n public get Id(): string {\r\n return this.id;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common/RawWebsocketMessage.ts","\r\nexport class RiffPcmEncoder {\r\n\r\n private actualSampleRate: number;\r\n private desiredSampleRate: number;\r\n private channelCount: number = 1;\r\n\r\n public constructor(actualSampleRate: number, desiredSampleRate: number) {\r\n this.actualSampleRate = actualSampleRate;\r\n this.desiredSampleRate = desiredSampleRate;\r\n }\r\n\r\n public Encode = (\r\n needHeader: boolean,\r\n actualAudioFrame: Float32Array): ArrayBuffer => {\r\n\r\n const audioFrame = this.DownSampleAudioFrame(actualAudioFrame, this.actualSampleRate, this.desiredSampleRate);\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 if (!needHeader) {\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 const buffer = new ArrayBuffer(44 + audioLength);\r\n\r\n const bitsPerSample = 16;\r\n const bytesPerSample = bitsPerSample / 8;\r\n // We dont know ahead of time about the length of audio to stream. So set to 0.\r\n const fileLength = 0;\r\n\r\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView\r\n const view = new DataView(buffer);\r\n\r\n /* RIFF identifier */\r\n this.SetString(view, 0, \"RIFF\");\r\n /* file length */\r\n view.setUint32(4, fileLength, 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 /* sample format (raw) */\r\n view.setUint16(20, 1, true);\r\n /* channel count */\r\n view.setUint16(22, this.channelCount, true);\r\n /* sample rate */\r\n view.setUint32(24, this.desiredSampleRate, true);\r\n /* byte rate (sample rate * block align) */\r\n view.setUint32(28, this.desiredSampleRate * this.channelCount * bytesPerSample, true);\r\n /* block align (channel count * bytes per sample) */\r\n view.setUint16(32, this.channelCount * bytesPerSample, true);\r\n /* bits per sample */\r\n view.setUint16(34, bitsPerSample, true);\r\n /* data chunk identifier */\r\n this.SetString(view, 36, \"data\");\r\n /* data chunk length */\r\n view.setUint32(40, fileLength, true);\r\n\r\n this.FloatTo16BitPCM(view, 44, 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 (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\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common/RiffPcmEncoder.ts","import { ArgumentNullError } from \"./Error\";\r\nimport { IKeyValueStorage } from \"./IKeyValueStorage\";\r\nimport { InMemoryStorage } from \"./InMemoryStorage\";\r\n\r\nexport class Storage {\r\n private static sessionStorage: IKeyValueStorage = new InMemoryStorage();\r\n private static localStorage: IKeyValueStorage = new InMemoryStorage();\r\n\r\n public static SetSessionStorage = (sessionStorage: IKeyValueStorage): void => {\r\n if (!sessionStorage) {\r\n throw new ArgumentNullError(\"sessionStorage\");\r\n }\r\n\r\n Storage.sessionStorage = sessionStorage;\r\n }\r\n\r\n public static SetLocalStorage = (localStorage: IKeyValueStorage): void => {\r\n if (!localStorage) {\r\n throw new ArgumentNullError(\"localStorage\");\r\n }\r\n\r\n Storage.localStorage = localStorage;\r\n }\r\n\r\n public static get Session(): IKeyValueStorage {\r\n return Storage.sessionStorage;\r\n }\r\n\r\n public static get Local(): IKeyValueStorage {\r\n return Storage.localStorage;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common/Storage.ts","import { InvalidOperationError } from \"./Error\";\r\nimport { CreateNoDashGuid } from \"./Guid\";\r\nimport { IStringDictionary } from \"./IDictionary\";\r\nimport { Promise } from \"./Promise\";\r\nimport { Queue } from \"./Queue\";\r\nimport { IStreamChunk } from \"./Stream\";\r\n\r\nexport interface IStreamChunk {\r\n IsEnd: boolean;\r\n Buffer: TBuffer;\r\n}\r\n\r\nexport class Stream {\r\n private id: string;\r\n private readerIdCounter: number = 1;\r\n private streambuffer: Array>;\r\n private isEnded: boolean = false;\r\n private readerQueues: IStringDictionary>>;\r\n\r\n public constructor(streamId?: string) {\r\n this.id = streamId ? streamId : CreateNoDashGuid();\r\n this.streambuffer = [];\r\n this.readerQueues = {};\r\n }\r\n\r\n public get IsClosed(): boolean {\r\n return this.isEnded;\r\n }\r\n\r\n public get Id(): string {\r\n return this.id;\r\n }\r\n\r\n public Write = (buffer: TBuffer): void => {\r\n this.ThrowIfClosed();\r\n this.WriteStreamChunk({\r\n Buffer: buffer,\r\n IsEnd: false,\r\n });\r\n }\r\n\r\n public GetReader = (): StreamReader => {\r\n const readerId = this.readerIdCounter;\r\n this.readerIdCounter++;\r\n const readerQueue = new Queue>();\r\n const currentLength = this.streambuffer.length;\r\n this.readerQueues[readerId] = readerQueue;\r\n for (let i = 0; i < currentLength; i++) {\r\n readerQueue.Enqueue(this.streambuffer[i]);\r\n }\r\n return new StreamReader(\r\n this.id,\r\n readerQueue,\r\n () => {\r\n delete this.readerQueues[readerId];\r\n });\r\n }\r\n\r\n public Close = (): void => {\r\n if (!this.isEnded) {\r\n this.WriteStreamChunk({\r\n Buffer: null,\r\n IsEnd: true,\r\n });\r\n this.isEnded = true;\r\n }\r\n }\r\n\r\n private WriteStreamChunk = (streamChunk: IStreamChunk): void => {\r\n this.ThrowIfClosed();\r\n this.streambuffer.push(streamChunk);\r\n for (const readerId in this.readerQueues) {\r\n if (!this.readerQueues[readerId].IsDisposed()) {\r\n try {\r\n this.readerQueues[readerId].Enqueue(streamChunk);\r\n } catch (e) {\r\n // Do nothing\r\n }\r\n }\r\n }\r\n }\r\n\r\n private ThrowIfClosed = (): void => {\r\n if (this.isEnded) {\r\n throw new InvalidOperationError(\"Stream closed\");\r\n }\r\n }\r\n}\r\n\r\n// tslint:disable-next-line:max-classes-per-file\r\nexport class StreamReader {\r\n private readerQueue: Queue>;\r\n private onClose: () => void;\r\n private isClosed: boolean = false;\r\n private streamId: string;\r\n\r\n public constructor(streamId: string, readerQueue: Queue>, onClose: () => void) {\r\n this.readerQueue = readerQueue;\r\n this.onClose = onClose;\r\n this.streamId = streamId;\r\n }\r\n\r\n public get IsClosed(): boolean {\r\n return this.isClosed;\r\n }\r\n\r\n public get StreamId(): string {\r\n return this.streamId;\r\n }\r\n\r\n public Read = (): Promise> => {\r\n if (this.IsClosed) {\r\n throw new InvalidOperationError(\"StreamReader closed\");\r\n }\r\n\r\n return this.readerQueue\r\n .Dequeue()\r\n .OnSuccessContinueWith((streamChunk: IStreamChunk) => {\r\n if (streamChunk.IsEnd) {\r\n this.readerQueue.Dispose(\"End of stream reached\");\r\n }\r\n\r\n return streamChunk;\r\n });\r\n }\r\n\r\n public Close = (): void => {\r\n if (!this.isClosed) {\r\n this.isClosed = true;\r\n this.readerQueue.Dispose(\"StreamReader closed\");\r\n this.onClose();\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/common/Stream.ts","\r\nexport * from \"./Recognizer\";\r\nexport * from \"./SpeechConnectionFactory\";\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/sdk/speech.browser/Exports.ts","import { FileAudioSource, MicAudioSource, PcmRecorder } from \"../../common.browser/Exports\";\r\nimport { IAudioSource, Promise, Storage } from \"../../common/Exports\";\r\nimport { IAuthentication, Recognizer, RecognizerConfig } from \"../speech/Exports\";\r\nimport { SpeechConnectionFactory } from \"./SpeechConnectionFactory\";\r\n\r\nconst CreateRecognizer = (recognizerConfig: RecognizerConfig, authentication: IAuthentication): Recognizer => {\r\n return CreateRecognizerWithPcmRecorder(\r\n recognizerConfig,\r\n authentication);\r\n};\r\n\r\nconst CreateRecognizerWithPcmRecorder = (recognizerConfig: RecognizerConfig, authentication: IAuthentication): Recognizer => {\r\n return CreateRecognizerWithCustomAudioSource(\r\n recognizerConfig,\r\n authentication,\r\n new MicAudioSource(new PcmRecorder()));\r\n};\r\n\r\nconst CreateRecognizerWithFileAudioSource = (recognizerConfig: RecognizerConfig, authentication: IAuthentication, file: File): Recognizer => {\r\n return CreateRecognizerWithCustomAudioSource(\r\n recognizerConfig,\r\n authentication,\r\n new FileAudioSource(file));\r\n};\r\n\r\nconst CreateRecognizerWithCustomAudioSource = (recognizerConfig: RecognizerConfig, authentication: IAuthentication, audioSource: IAudioSource): Recognizer => {\r\n return new Recognizer (\r\n authentication,\r\n new SpeechConnectionFactory(),\r\n audioSource,\r\n recognizerConfig);\r\n};\r\n\r\nexport { CreateRecognizer, CreateRecognizerWithCustomAudioSource, CreateRecognizerWithFileAudioSource, CreateRecognizerWithPcmRecorder };\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/sdk/speech.browser/Recognizer.ts","import { ArgumentNullError, Promise, PromiseHelper } from \"../../common/Exports\";\r\nimport { AuthInfo, IAuthentication } from \"./IAuthentication\";\r\n\r\nconst AuthHeader: string = \"Ocp-Apim-Subscription-Key\";\r\n\r\nexport class CognitiveSubscriptionKeyAuthentication implements IAuthentication {\r\n private authInfo: AuthInfo;\r\n\r\n constructor(subscriptionKey: string) {\r\n if (!subscriptionKey) {\r\n throw new ArgumentNullError(\"subscriptionKey\");\r\n }\r\n\r\n this.authInfo = new AuthInfo(AuthHeader, subscriptionKey);\r\n }\r\n\r\n public Fetch = (authFetchEventId: string): Promise => {\r\n return PromiseHelper.FromResult(this.authInfo);\r\n }\r\n\r\n public FetchOnExpiry = (authFetchEventId: string): Promise => {\r\n return PromiseHelper.FromResult(this.authInfo);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/sdk/speech/CognitiveSubscriptionKeyAuthentication.ts","import { ArgumentNullError, Promise, PromiseHelper } from \"../../common/Exports\";\r\nimport { AuthInfo, IAuthentication } from \"./IAuthentication\";\r\n\r\nconst AuthHeader: string = \"Authorization\";\r\n\r\nexport class CognitiveTokenAuthentication implements IAuthentication {\r\n private fetchCallback: (authFetchEventId: string) => Promise;\r\n private fetchOnExpiryCallback: (authFetchEventId: string) => Promise;\r\n\r\n 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.fetchCallback = fetchCallback;\r\n this.fetchOnExpiryCallback = fetchOnExpiryCallback;\r\n }\r\n\r\n public Fetch = (authFetchEventId: string): Promise => {\r\n return this.fetchCallback(authFetchEventId).OnSuccessContinueWith((token: string) => new AuthInfo(AuthHeader, token));\r\n }\r\n\r\n public FetchOnExpiry = (authFetchEventId: string): Promise => {\r\n return this.fetchOnExpiryCallback(authFetchEventId).OnSuccessContinueWith((token: string) => new AuthInfo(AuthHeader, token));\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/microsoft-speech-browser-sdk/src/sdk/speech/CognitiveTokenAuthentication.ts","import {\r\n ArgumentNullError,\r\n ConnectionMessage,\r\n ConnectionOpenResponse,\r\n ConnectionState,\r\n CreateNoDashGuid,\r\n Deferred,\r\n Events,\r\n IAudioSource,\r\n IAudioStreamNode,\r\n IConnection,\r\n IDetachable,\r\n IEventSource,\r\n IStreamChunk,\r\n MessageType,\r\n PlatformEvent,\r\n Promise,\r\n PromiseHelper,\r\n PromiseResult,\r\n} from \"../../common/Exports\";\r\nimport { AuthInfo, IAuthentication } from \"./IAuthentication\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory\";\r\nimport {\r\n ConnectingToServiceEvent,\r\n ListeningStartedEvent,\r\n RecognitionCompletionStatus,\r\n RecognitionEndedEvent,\r\n RecognitionStartedEvent,\r\n RecognitionTriggeredEvent,\r\n SpeechDetailedPhraseEvent,\r\n SpeechEndDetectedEvent,\r\n SpeechFragmentEvent,\r\n SpeechHypothesisEvent,\r\n SpeechRecognitionEvent,\r\n SpeechRecognitionResultEvent,\r\n SpeechSimplePhraseEvent,\r\n SpeechStartDetectedEvent,\r\n} from \"./RecognitionEvents\";\r\nimport { RecognitionMode, RecognizerConfig, SpeechResultFormat } from \"./RecognizerConfig\";\r\nimport { ServiceTelemetryListener } from \"./ServiceTelemetryListener.Internal\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal\";\r\nimport {\r\n IDetailedSpeechPhrase,\r\n ISimpleSpeechPhrase,\r\n ISpeechEndDetectedResult,\r\n ISpeechFragment,\r\n ISpeechStartDetectedResult,\r\n} from \"./SpeechResults\";\r\n\r\nexport class Recognizer {\r\n private authentication: IAuthentication;\r\n private connectionFactory: IConnectionFactory;\r\n private audioSource: IAudioSource;\r\n private recognizerConfig: RecognizerConfig;\r\n private speechConfigConnectionId: string;\r\n private connectionFetchPromise: Promise;\r\n private connectionId: string;\r\n private authFetchEventId: 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\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.authentication = authentication;\r\n this.connectionFactory = connectionFactory;\r\n this.audioSource = audioSource;\r\n this.recognizerConfig = recognizerConfig;\r\n }\r\n\r\n public get AudioSource(): IAudioSource {\r\n return this.audioSource;\r\n }\r\n\r\n public Recognize = (onEventCallback: (event: SpeechRecognitionEvent) => void, speechContextJson?: string): Promise => {\r\n const requestSession = new RequestSession(this.audioSource.Id(), onEventCallback);\r\n requestSession.ListenForServiceTelemetry(this.audioSource.Events);\r\n\r\n return this.audioSource\r\n .Attach(requestSession.AudioNodeId)\r\n .ContinueWithPromise((result: PromiseResult