{"version":3,"sources":["webpack:///./node_modules/@microsoft/signalr/dist/esm/ILogger.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/HttpClient.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/NodeHttpClient.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/Utils.js","webpack:///./node_modules/core-js/modules/es.function.name.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/Loggers.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/HubConnection.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/Subject.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/ITransport.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/AbortController.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/HttpConnection.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/Errors.js"],"names":["LogLevel","TextMessageFormat","write","output","RecordSeparator","parse","input","length","Error","messages","split","pop","RecordSeparatorCode","String","fromCharCode","__assign","Object","assign","t","s","i","n","arguments","p","prototype","hasOwnProperty","call","HttpResponse","statusCode","statusText","content","this","HttpClient","get","url","options","send","method","post","delete","getCookieString","requestModule","__extends","extendStatics","setPrototypeOf","__proto__","Array","d","b","__","constructor","create","XMLHttpRequest","requireFunc","NodeHttpClient","_super","logger","_this","cookieJar","jar","request","defaults","httpRequest","abortSignal","aborted","Promise","reject","resolve","requestBody","Buffer","from","currentRequest","body","encoding","responseType","headers","timeout","error","response","onabort","code","log","Warning","statusMessage","abort","HandshakeProtocol","writeHandshakeRequest","handshakeRequest","JSON","stringify","parseHandshakeResponse","data","responseMessage","messageData","remainingData","binaryData","Uint8Array","separatorIndex","indexOf","responseLength","apply","slice","byteLength","buffer","textData","substring","type","__awaiter","thisArg","_arguments","P","generator","fulfilled","value","step","next","e","rejected","result","done","then","__generator","f","y","g","_","label","sent","trys","ops","verb","Symbol","iterator","v","op","TypeError","push","Arg","isRequired","val","name","undefined","isIn","values","Platform","defineProperty","window","enumerable","configurable","self","isBrowser","isWebWorker","getDataDetail","includeContent","detail","isArrayBuffer","formatArrayBuffer","view","str","forEach","num","pad","toString","substr","ArrayBuffer","sendMessage","transportName","httpClient","accessTokenFactory","logMessageContent","_a","token","_b","Trace","createLogger","ConsoleLogger","Information","instance","SubjectSubscription","subject","observer","dispose","index","observers","splice","cancelCallback","catch","minimumLogLevel","outputConsole","console","logLevel","message","Critical","Date","toISOString","warn","info","DESCRIPTORS","FunctionPrototype","Function","FunctionPrototypeToString","nameRE","NAME","match","NullLogger","_logLevel","_message","MessageType","XhrHttpClient","xhr","open","withCredentials","setRequestHeader","keys","header","onload","status","responseText","onerror","ontimeout","DefaultHttpClient","HubConnectionState","Subject","item","_i","err","complete","subscribe","DEFAULT_TIMEOUT_IN_MS","DEFAULT_PING_INTERVAL_IN_MS","HttpTransportType","TransferFormat","HubConnection","connection","protocol","reconnectPolicy","serverTimeoutInMilliseconds","keepAliveIntervalInMilliseconds","handshakeProtocol","onreceive","processIncomingData","onclose","connectionClosed","callbacks","methods","closedCallbacks","reconnectingCallbacks","reconnectedCallbacks","invocationId","receivedHandshakeResponse","connectionState","Disconnected","connectionStarted","cachedPingMessage","writeMessage","Ping","connectionId","baseUrl","set","Reconnecting","start","startPromise","startWithStateTransitions","e_1","Connecting","Debug","startInternal","Connected","handshakePromise","e_2","stopDuringStartError","handshakeResolver","handshakeRejecter","transferFormat","version","cleanupTimeout","resetTimeoutPeriod","resetKeepAliveInterval","cleanupPingTimer","stop","stopPromise","stopInternal","Disconnecting","reconnectDelayHandle","clearTimeout","completeClose","stream","methodName","args","promiseQueue","replaceStreamingParams","streams","streamIds","invocationDescriptor","createStreamInvocation","cancelInvocation","createCancelInvocation","sendWithProtocol","invocationEvent","Completion","launchStreams","sendPromise","createInvocation","invoke","on","newMethod","toLowerCase","off","handlers","removeIdx","callback","onreconnecting","onreconnected","processHandshakeResponse","parseMessages","messages_1","Invocation","invokeClientMethod","StreamItem","Close","allowReconnect","pingServerHandle","setTimeout","features","inherentKeepAlive","timeoutHandle","serverTimeout","invocationMessage","target","m","cancelCallbacksWithError","reconnect","c","reconnectStartTime","previousReconnectAttempts","retryError","nextRetryDelay","e_4","now","getNextRetryDelay","previousRetryCount","elapsedMilliseconds","retryReason","nextRetryDelayInMilliseconds","key","nonblocking","_loop_1","streamId","createCompletionMessage","createStreamItemMessage","argument","isObservable","arg","StreamInvocation","id","CancelInvocation","DEFAULT_RETRY_DELAYS_IN_MILLISECONDS","DefaultReconnectPolicy","retryDelays","concat","retryContext","AbortController","isAborted","LongPollingTransport","pollAbort","running","connect","pollOptions","pollUrl","Binary","signal","getAccessToken","updateHeaderToken","closeError","receiving","poll","pollAborted","raiseOnClose","deleteOptions","logMessage","ServerSentEventsTransport","eventSourceConstructor","encodeURIComponent","opened","Text","eventSource","cookies","Cookie","onmessage","close","onopen","WebSocketTransport","webSocketConstructor","webSocket","replace","isNode","binaryType","_event","event","ErrorEvent","readyState","OPEN","wasClean","reason","MAX_REDIRECTS","WebSocketModule","EventSourceModule","HttpConnection","negotiateVersion","resolveUrl","WebSocket","EventSource","startInternalPromise","sendQueue","TransportSendQueue","transport","stopPromiseResolver","stopError","stopConnection","negotiateResponse","redirects","this_1","e_3","skipNegotiation","WebSockets","constructTransport","startTransport","accessToken_1","getNegotiationResponse","ProtocolVersion","accessToken","createTransport","negotiateUrl","resolveNegotiateUrl","connectionToken","createConnectUrl","requestedTransport","requestedTransferFormat","connectUrl","transportExceptions","transports","negotiate","transports_1","endpoint","transportOrError","ex_1","ex_2","isITransport","availableTransports","resolveTransportOrError","join","ServerSentEvents","LongPolling","transportMatches","transferFormats","map","ex","lastIndexOf","document","aTag","createElement","href","actualTransport","executing","sendBufferedData","PromiseSource","transportResult","sendLoopPromise","sendLoop","bufferData","promise","error_1","concatBuffers","arrayBuffers","totalLength","reduce","a","offset","arrayBuffers_1","resolver","rejecter","JSON_HUB_PROTOCOL_NAME","JsonHubProtocol","hubMessages","parsedMessage","isInvocationMessage","isStreamItemMessage","isCompletionMessage","assertNotEmptyString","errorMessage","LogLevelNameMapping","trace","debug","information","warning","critical","none","None","parseLogLevel","mapping","HubConnectionBuilder","configureLogging","logging","isLogger","withUrl","transportTypeOrOptions","httpConnectionOptions","withHubProtocol","withAutomaticReconnect","retryDelaysOrReconnectPolicy","isArray","build","HttpError","_newTarget","trueProto","TimeoutError","AbortError"],"mappings":"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","file":"js/chunk-29eb9048.bf5b6462.js","sourcesContent":["// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// These values are designed to match the ASP.NET Log Levels since that's the pattern we're emulating here.\r\n/** Indicates the severity of a log message.\r\n *\r\n * Log Levels are ordered in increasing severity. So `Debug` is more severe than `Trace`, etc.\r\n */\r\nexport var LogLevel;\r\n(function (LogLevel) {\r\n /** Log level for very low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Trace\"] = 0] = \"Trace\";\r\n /** Log level for low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\r\n /** Log level for informational diagnostic messages. */\r\n LogLevel[LogLevel[\"Information\"] = 2] = \"Information\";\r\n /** Log level for diagnostic messages that indicate a non-fatal problem. */\r\n LogLevel[LogLevel[\"Warning\"] = 3] = \"Warning\";\r\n /** Log level for diagnostic messages that indicate a failure in the current operation. */\r\n LogLevel[LogLevel[\"Error\"] = 4] = \"Error\";\r\n /** Log level for diagnostic messages that indicate a failure that will terminate the entire application. */\r\n LogLevel[LogLevel[\"Critical\"] = 5] = \"Critical\";\r\n /** The highest possible log level. Used when configuring logging to indicate that no log messages should be emitted. */\r\n LogLevel[LogLevel[\"None\"] = 6] = \"None\";\r\n})(LogLevel || (LogLevel = {}));\r\n//# sourceMappingURL=ILogger.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// Not exported from index\r\n/** @private */\r\nvar TextMessageFormat = /** @class */ (function () {\r\n function TextMessageFormat() {\r\n }\r\n TextMessageFormat.write = function (output) {\r\n return \"\" + output + TextMessageFormat.RecordSeparator;\r\n };\r\n TextMessageFormat.parse = function (input) {\r\n if (input[input.length - 1] !== TextMessageFormat.RecordSeparator) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n var messages = input.split(TextMessageFormat.RecordSeparator);\r\n messages.pop();\r\n return messages;\r\n };\r\n TextMessageFormat.RecordSeparatorCode = 0x1e;\r\n TextMessageFormat.RecordSeparator = String.fromCharCode(TextMessageFormat.RecordSeparatorCode);\r\n return TextMessageFormat;\r\n}());\r\nexport { TextMessageFormat };\r\n//# sourceMappingURL=TextMessageFormat.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __assign = (this && this.__assign) || Object.assign || function(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))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\n/** Represents an HTTP response. */\r\nvar HttpResponse = /** @class */ (function () {\r\n function HttpResponse(statusCode, statusText, content) {\r\n this.statusCode = statusCode;\r\n this.statusText = statusText;\r\n this.content = content;\r\n }\r\n return HttpResponse;\r\n}());\r\nexport { HttpResponse };\r\n/** Abstraction over an HTTP client.\r\n *\r\n * This class provides an abstraction over an HTTP client so that a different implementation can be provided on different platforms.\r\n */\r\nvar HttpClient = /** @class */ (function () {\r\n function HttpClient() {\r\n }\r\n HttpClient.prototype.get = function (url, options) {\r\n return this.send(__assign({}, options, { method: \"GET\", url: url }));\r\n };\r\n HttpClient.prototype.post = function (url, options) {\r\n return this.send(__assign({}, options, { method: \"POST\", url: url }));\r\n };\r\n HttpClient.prototype.delete = function (url, options) {\r\n return this.send(__assign({}, options, { method: \"DELETE\", url: url }));\r\n };\r\n /** Gets all cookies that apply to the specified URL.\r\n *\r\n * @param url The URL that the cookies are valid for.\r\n * @returns {string} A string containing all the key-value cookie pairs for the specified URL.\r\n */\r\n // @ts-ignore\r\n HttpClient.prototype.getCookieString = function (url) {\r\n return \"\";\r\n };\r\n return HttpClient;\r\n}());\r\nexport { HttpClient };\r\n//# sourceMappingURL=HttpClient.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var 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 return function (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 = (this && this.__assign) || Object.assign || function(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))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\nvar requestModule;\r\nif (typeof XMLHttpRequest === \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n var requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n requestModule = requireFunc(\"request\");\r\n}\r\n/** @private */\r\nvar NodeHttpClient = /** @class */ (function (_super) {\r\n __extends(NodeHttpClient, _super);\r\n function NodeHttpClient(logger) {\r\n var _this = _super.call(this) || this;\r\n if (typeof requestModule === \"undefined\") {\r\n throw new Error(\"The 'request' module could not be loaded.\");\r\n }\r\n _this.logger = logger;\r\n _this.cookieJar = requestModule.jar();\r\n _this.request = requestModule.defaults({ jar: _this.cookieJar });\r\n return _this;\r\n }\r\n NodeHttpClient.prototype.send = function (httpRequest) {\r\n var _this = this;\r\n // Check that abort was not signaled before calling send\r\n if (httpRequest.abortSignal) {\r\n if (httpRequest.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n }\r\n return new Promise(function (resolve, reject) {\r\n var requestBody;\r\n if (isArrayBuffer(httpRequest.content)) {\r\n requestBody = Buffer.from(httpRequest.content);\r\n }\r\n else {\r\n requestBody = httpRequest.content || \"\";\r\n }\r\n var currentRequest = _this.request(httpRequest.url, {\r\n body: requestBody,\r\n // If binary is expected 'null' should be used, otherwise for text 'utf8'\r\n encoding: httpRequest.responseType === \"arraybuffer\" ? null : \"utf8\",\r\n headers: __assign({ \r\n // Tell auth middleware to 401 instead of redirecting\r\n \"X-Requested-With\": \"XMLHttpRequest\" }, httpRequest.headers),\r\n method: httpRequest.method,\r\n timeout: httpRequest.timeout,\r\n }, function (error, response, body) {\r\n if (httpRequest.abortSignal) {\r\n httpRequest.abortSignal.onabort = null;\r\n }\r\n if (error) {\r\n if (error.code === \"ETIMEDOUT\") {\r\n _this.logger.log(LogLevel.Warning, \"Timeout from HTTP request.\");\r\n reject(new TimeoutError());\r\n }\r\n _this.logger.log(LogLevel.Warning, \"Error from HTTP request. \" + error);\r\n reject(error);\r\n return;\r\n }\r\n if (response.statusCode >= 200 && response.statusCode < 300) {\r\n resolve(new HttpResponse(response.statusCode, response.statusMessage || \"\", body));\r\n }\r\n else {\r\n reject(new HttpError(response.statusMessage || \"\", response.statusCode || 0));\r\n }\r\n });\r\n if (httpRequest.abortSignal) {\r\n httpRequest.abortSignal.onabort = function () {\r\n currentRequest.abort();\r\n reject(new AbortError());\r\n };\r\n }\r\n });\r\n };\r\n NodeHttpClient.prototype.getCookieString = function (url) {\r\n return this.cookieJar.getCookieString(url);\r\n };\r\n return NodeHttpClient;\r\n}(HttpClient));\r\nexport { NodeHttpClient };\r\n//# sourceMappingURL=NodeHttpClient.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\n/** @private */\r\nvar HandshakeProtocol = /** @class */ (function () {\r\n function HandshakeProtocol() {\r\n }\r\n // Handshake request is always JSON\r\n HandshakeProtocol.prototype.writeHandshakeRequest = function (handshakeRequest) {\r\n return TextMessageFormat.write(JSON.stringify(handshakeRequest));\r\n };\r\n HandshakeProtocol.prototype.parseHandshakeResponse = function (data) {\r\n var responseMessage;\r\n var messageData;\r\n var remainingData;\r\n if (isArrayBuffer(data) || (typeof Buffer !== \"undefined\" && data instanceof Buffer)) {\r\n // Format is binary but still need to read JSON text from handshake response\r\n var binaryData = new Uint8Array(data);\r\n var separatorIndex = binaryData.indexOf(TextMessageFormat.RecordSeparatorCode);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n var responseLength = separatorIndex + 1;\r\n messageData = String.fromCharCode.apply(null, binaryData.slice(0, responseLength));\r\n remainingData = (binaryData.byteLength > responseLength) ? binaryData.slice(responseLength).buffer : null;\r\n }\r\n else {\r\n var textData = data;\r\n var separatorIndex = textData.indexOf(TextMessageFormat.RecordSeparator);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n var responseLength = separatorIndex + 1;\r\n messageData = textData.substring(0, responseLength);\r\n remainingData = (textData.length > responseLength) ? textData.substring(responseLength) : null;\r\n }\r\n // At this point we should have just the single handshake message\r\n var messages = TextMessageFormat.parse(messageData);\r\n var response = JSON.parse(messages[0]);\r\n if (response.type) {\r\n throw new Error(\"Expected a handshake response from the server.\");\r\n }\r\n responseMessage = response;\r\n // multiple messages could have arrived with handshake\r\n // return additional data to be parsed as usual, or null if all parsed\r\n return [remainingData, responseMessage];\r\n };\r\n return HandshakeProtocol;\r\n}());\r\nexport { HandshakeProtocol };\r\n//# sourceMappingURL=HandshakeProtocol.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (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\nvar __generator = (this && this.__generator) || function (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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, 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\nimport { LogLevel } from \"./ILogger\";\r\nimport { NullLogger } from \"./Loggers\";\r\n/** @private */\r\nvar Arg = /** @class */ (function () {\r\n function Arg() {\r\n }\r\n Arg.isRequired = function (val, name) {\r\n if (val === null || val === undefined) {\r\n throw new Error(\"The '\" + name + \"' argument is required.\");\r\n }\r\n };\r\n Arg.isIn = function (val, values, name) {\r\n // TypeScript enums have keys for **both** the name and the value of each enum member on the type itself.\r\n if (!(val in values)) {\r\n throw new Error(\"Unknown \" + name + \" value: \" + val + \".\");\r\n }\r\n };\r\n return Arg;\r\n}());\r\nexport { Arg };\r\n/** @private */\r\nvar Platform = /** @class */ (function () {\r\n function Platform() {\r\n }\r\n Object.defineProperty(Platform, \"isBrowser\", {\r\n get: function () {\r\n return typeof window === \"object\";\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Platform, \"isWebWorker\", {\r\n get: function () {\r\n return typeof self === \"object\" && \"importScripts\" in self;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Platform, \"isNode\", {\r\n get: function () {\r\n return !this.isBrowser && !this.isWebWorker;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Platform;\r\n}());\r\nexport { Platform };\r\n/** @private */\r\nexport function getDataDetail(data, includeContent) {\r\n var detail = \"\";\r\n if (isArrayBuffer(data)) {\r\n detail = \"Binary data of length \" + data.byteLength;\r\n if (includeContent) {\r\n detail += \". Content: '\" + formatArrayBuffer(data) + \"'\";\r\n }\r\n }\r\n else if (typeof data === \"string\") {\r\n detail = \"String data of length \" + data.length;\r\n if (includeContent) {\r\n detail += \". Content: '\" + data + \"'\";\r\n }\r\n }\r\n return detail;\r\n}\r\n/** @private */\r\nexport function formatArrayBuffer(data) {\r\n var view = new Uint8Array(data);\r\n // Uint8Array.map only supports returning another Uint8Array?\r\n var str = \"\";\r\n view.forEach(function (num) {\r\n var pad = num < 16 ? \"0\" : \"\";\r\n str += \"0x\" + pad + num.toString(16) + \" \";\r\n });\r\n // Trim of trailing space.\r\n return str.substr(0, str.length - 1);\r\n}\r\n// Also in signalr-protocol-msgpack/Utils.ts\r\n/** @private */\r\nexport function isArrayBuffer(val) {\r\n return val && typeof ArrayBuffer !== \"undefined\" &&\r\n (val instanceof ArrayBuffer ||\r\n // Sometimes we get an ArrayBuffer that doesn't satisfy instanceof\r\n (val.constructor && val.constructor.name === \"ArrayBuffer\"));\r\n}\r\n/** @private */\r\nexport function sendMessage(logger, transportName, httpClient, url, accessTokenFactory, content, logMessageContent) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, headers, token, responseType, response;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, accessTokenFactory()];\r\n case 1:\r\n token = _b.sent();\r\n if (token) {\r\n headers = (_a = {},\r\n _a[\"Authorization\"] = \"Bearer \" + token,\r\n _a);\r\n }\r\n _b.label = 2;\r\n case 2:\r\n logger.log(LogLevel.Trace, \"(\" + transportName + \" transport) sending data. \" + getDataDetail(content, logMessageContent) + \".\");\r\n responseType = isArrayBuffer(content) ? \"arraybuffer\" : \"text\";\r\n return [4 /*yield*/, httpClient.post(url, {\r\n content: content,\r\n headers: headers,\r\n responseType: responseType,\r\n })];\r\n case 3:\r\n response = _b.sent();\r\n logger.log(LogLevel.Trace, \"(\" + transportName + \" transport) request complete. Response status: \" + response.statusCode + \".\");\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/** @private */\r\nexport function createLogger(logger) {\r\n if (logger === undefined) {\r\n return new ConsoleLogger(LogLevel.Information);\r\n }\r\n if (logger === null) {\r\n return NullLogger.instance;\r\n }\r\n if (logger.log) {\r\n return logger;\r\n }\r\n return new ConsoleLogger(logger);\r\n}\r\n/** @private */\r\nvar SubjectSubscription = /** @class */ (function () {\r\n function SubjectSubscription(subject, observer) {\r\n this.subject = subject;\r\n this.observer = observer;\r\n }\r\n SubjectSubscription.prototype.dispose = function () {\r\n var index = this.subject.observers.indexOf(this.observer);\r\n if (index > -1) {\r\n this.subject.observers.splice(index, 1);\r\n }\r\n if (this.subject.observers.length === 0 && this.subject.cancelCallback) {\r\n this.subject.cancelCallback().catch(function (_) { });\r\n }\r\n };\r\n return SubjectSubscription;\r\n}());\r\nexport { SubjectSubscription };\r\n/** @private */\r\nvar ConsoleLogger = /** @class */ (function () {\r\n function ConsoleLogger(minimumLogLevel) {\r\n this.minimumLogLevel = minimumLogLevel;\r\n this.outputConsole = console;\r\n }\r\n ConsoleLogger.prototype.log = function (logLevel, message) {\r\n if (logLevel >= this.minimumLogLevel) {\r\n switch (logLevel) {\r\n case LogLevel.Critical:\r\n case LogLevel.Error:\r\n this.outputConsole.error(\"[\" + new Date().toISOString() + \"] \" + LogLevel[logLevel] + \": \" + message);\r\n break;\r\n case LogLevel.Warning:\r\n this.outputConsole.warn(\"[\" + new Date().toISOString() + \"] \" + LogLevel[logLevel] + \": \" + message);\r\n break;\r\n case LogLevel.Information:\r\n this.outputConsole.info(\"[\" + new Date().toISOString() + \"] \" + LogLevel[logLevel] + \": \" + message);\r\n break;\r\n default:\r\n // console.debug only goes to attached debuggers in Node, so we use console.log for Trace and Debug\r\n this.outputConsole.log(\"[\" + new Date().toISOString() + \"] \" + LogLevel[logLevel] + \": \" + message);\r\n break;\r\n }\r\n }\r\n };\r\n return ConsoleLogger;\r\n}());\r\nexport { ConsoleLogger };\r\n//# sourceMappingURL=Utils.js.map","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.github.io/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n/** A logger that does nothing when log messages are sent to it. */\r\nvar NullLogger = /** @class */ (function () {\r\n function NullLogger() {\r\n }\r\n /** @inheritDoc */\r\n // tslint:disable-next-line\r\n NullLogger.prototype.log = function (_logLevel, _message) {\r\n };\r\n /** The singleton instance of the {@link @microsoft/signalr.NullLogger}. */\r\n NullLogger.instance = new NullLogger();\r\n return NullLogger;\r\n}());\r\nexport { NullLogger };\r\n//# sourceMappingURL=Loggers.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n/** Defines the type of a Hub Message. */\r\nexport var MessageType;\r\n(function (MessageType) {\r\n /** Indicates the message is an Invocation message and implements the {@link @microsoft/signalr.InvocationMessage} interface. */\r\n MessageType[MessageType[\"Invocation\"] = 1] = \"Invocation\";\r\n /** Indicates the message is a StreamItem message and implements the {@link @microsoft/signalr.StreamItemMessage} interface. */\r\n MessageType[MessageType[\"StreamItem\"] = 2] = \"StreamItem\";\r\n /** Indicates the message is a Completion message and implements the {@link @microsoft/signalr.CompletionMessage} interface. */\r\n MessageType[MessageType[\"Completion\"] = 3] = \"Completion\";\r\n /** Indicates the message is a Stream Invocation message and implements the {@link @microsoft/signalr.StreamInvocationMessage} interface. */\r\n MessageType[MessageType[\"StreamInvocation\"] = 4] = \"StreamInvocation\";\r\n /** Indicates the message is a Cancel Invocation message and implements the {@link @microsoft/signalr.CancelInvocationMessage} interface. */\r\n MessageType[MessageType[\"CancelInvocation\"] = 5] = \"CancelInvocation\";\r\n /** Indicates the message is a Ping message and implements the {@link @microsoft/signalr.PingMessage} interface. */\r\n MessageType[MessageType[\"Ping\"] = 6] = \"Ping\";\r\n /** Indicates the message is a Close message and implements the {@link @microsoft/signalr.CloseMessage} interface. */\r\n MessageType[MessageType[\"Close\"] = 7] = \"Close\";\r\n})(MessageType || (MessageType = {}));\r\n//# sourceMappingURL=IHubProtocol.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var 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 return function (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\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nvar XhrHttpClient = /** @class */ (function (_super) {\r\n __extends(XhrHttpClient, _super);\r\n function XhrHttpClient(logger) {\r\n var _this = _super.call(this) || this;\r\n _this.logger = logger;\r\n return _this;\r\n }\r\n /** @inheritDoc */\r\n XhrHttpClient.prototype.send = function (request) {\r\n var _this = this;\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return new Promise(function (resolve, reject) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(request.method, request.url, true);\r\n xhr.withCredentials = true;\r\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n xhr.setRequestHeader(\"Content-Type\", \"text/plain;charset=UTF-8\");\r\n var headers = request.headers;\r\n if (headers) {\r\n Object.keys(headers)\r\n .forEach(function (header) {\r\n xhr.setRequestHeader(header, headers[header]);\r\n });\r\n }\r\n if (request.responseType) {\r\n xhr.responseType = request.responseType;\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = function () {\r\n xhr.abort();\r\n reject(new AbortError());\r\n };\r\n }\r\n if (request.timeout) {\r\n xhr.timeout = request.timeout;\r\n }\r\n xhr.onload = function () {\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n resolve(new HttpResponse(xhr.status, xhr.statusText, xhr.response || xhr.responseText));\r\n }\r\n else {\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n }\r\n };\r\n xhr.onerror = function () {\r\n _this.logger.log(LogLevel.Warning, \"Error from HTTP request. \" + xhr.status + \": \" + xhr.statusText + \".\");\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n };\r\n xhr.ontimeout = function () {\r\n _this.logger.log(LogLevel.Warning, \"Timeout from HTTP request.\");\r\n reject(new TimeoutError());\r\n };\r\n xhr.send(request.content || \"\");\r\n });\r\n };\r\n return XhrHttpClient;\r\n}(HttpClient));\r\nexport { XhrHttpClient };\r\n//# sourceMappingURL=XhrHttpClient.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var 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 return function (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\nimport { AbortError } from \"./Errors\";\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { NodeHttpClient } from \"./NodeHttpClient\";\r\nimport { XhrHttpClient } from \"./XhrHttpClient\";\r\n/** Default implementation of {@link @microsoft/signalr.HttpClient}. */\r\nvar DefaultHttpClient = /** @class */ (function (_super) {\r\n __extends(DefaultHttpClient, _super);\r\n /** Creates a new instance of the {@link @microsoft/signalr.DefaultHttpClient}, using the provided {@link @microsoft/signalr.ILogger} to log messages. */\r\n function DefaultHttpClient(logger) {\r\n var _this = _super.call(this) || this;\r\n if (typeof XMLHttpRequest !== \"undefined\") {\r\n _this.httpClient = new XhrHttpClient(logger);\r\n }\r\n else {\r\n _this.httpClient = new NodeHttpClient(logger);\r\n }\r\n return _this;\r\n }\r\n /** @inheritDoc */\r\n DefaultHttpClient.prototype.send = function (request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return this.httpClient.send(request);\r\n };\r\n DefaultHttpClient.prototype.getCookieString = function (url) {\r\n return this.httpClient.getCookieString(url);\r\n };\r\n return DefaultHttpClient;\r\n}(HttpClient));\r\nexport { DefaultHttpClient };\r\n//# sourceMappingURL=DefaultHttpClient.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (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\nvar __generator = (this && this.__generator) || function (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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, 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\nimport { HandshakeProtocol } from \"./HandshakeProtocol\";\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { Subject } from \"./Subject\";\r\nimport { Arg } from \"./Utils\";\r\nvar DEFAULT_TIMEOUT_IN_MS = 30 * 1000;\r\nvar DEFAULT_PING_INTERVAL_IN_MS = 15 * 1000;\r\n/** Describes the current state of the {@link HubConnection} to the server. */\r\nexport var HubConnectionState;\r\n(function (HubConnectionState) {\r\n /** The hub connection is disconnected. */\r\n HubConnectionState[\"Disconnected\"] = \"Disconnected\";\r\n /** The hub connection is connecting. */\r\n HubConnectionState[\"Connecting\"] = \"Connecting\";\r\n /** The hub connection is connected. */\r\n HubConnectionState[\"Connected\"] = \"Connected\";\r\n /** The hub connection is disconnecting. */\r\n HubConnectionState[\"Disconnecting\"] = \"Disconnecting\";\r\n /** The hub connection is reconnecting. */\r\n HubConnectionState[\"Reconnecting\"] = \"Reconnecting\";\r\n})(HubConnectionState || (HubConnectionState = {}));\r\n/** Represents a connection to a SignalR Hub. */\r\nvar HubConnection = /** @class */ (function () {\r\n function HubConnection(connection, logger, protocol, reconnectPolicy) {\r\n var _this = this;\r\n Arg.isRequired(connection, \"connection\");\r\n Arg.isRequired(logger, \"logger\");\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.serverTimeoutInMilliseconds = DEFAULT_TIMEOUT_IN_MS;\r\n this.keepAliveIntervalInMilliseconds = DEFAULT_PING_INTERVAL_IN_MS;\r\n this.logger = logger;\r\n this.protocol = protocol;\r\n this.connection = connection;\r\n this.reconnectPolicy = reconnectPolicy;\r\n this.handshakeProtocol = new HandshakeProtocol();\r\n this.connection.onreceive = function (data) { return _this.processIncomingData(data); };\r\n this.connection.onclose = function (error) { return _this.connectionClosed(error); };\r\n this.callbacks = {};\r\n this.methods = {};\r\n this.closedCallbacks = [];\r\n this.reconnectingCallbacks = [];\r\n this.reconnectedCallbacks = [];\r\n this.invocationId = 0;\r\n this.receivedHandshakeResponse = false;\r\n this.connectionState = HubConnectionState.Disconnected;\r\n this.connectionStarted = false;\r\n this.cachedPingMessage = this.protocol.writeMessage({ type: MessageType.Ping });\r\n }\r\n /** @internal */\r\n // Using a public static factory method means we can have a private constructor and an _internal_\r\n // create method that can be used by HubConnectionBuilder. An \"internal\" constructor would just\r\n // be stripped away and the '.d.ts' file would have no constructor, which is interpreted as a\r\n // public parameter-less constructor.\r\n HubConnection.create = function (connection, logger, protocol, reconnectPolicy) {\r\n return new HubConnection(connection, logger, protocol, reconnectPolicy);\r\n };\r\n Object.defineProperty(HubConnection.prototype, \"state\", {\r\n /** Indicates the state of the {@link HubConnection} to the server. */\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(HubConnection.prototype, \"connectionId\", {\r\n /** Represents the connection id of the {@link HubConnection} on the server. The connection id will be null when the connection is either\r\n * in the disconnected state or if the negotiation step was skipped.\r\n */\r\n get: function () {\r\n return this.connection ? (this.connection.connectionId || null) : null;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(HubConnection.prototype, \"baseUrl\", {\r\n /** Indicates the url of the {@link HubConnection} to the server. */\r\n get: function () {\r\n return this.connection.baseUrl || \"\";\r\n },\r\n /**\r\n * Sets a new url for the HubConnection. Note that the url can only be changed when the connection is in either the Disconnected or\r\n * Reconnecting states.\r\n * @param {string} url The url to connect to.\r\n */\r\n set: function (url) {\r\n if (this.connectionState !== HubConnectionState.Disconnected && this.connectionState !== HubConnectionState.Reconnecting) {\r\n throw new Error(\"The HubConnection must be in the Disconnected or Reconnecting state to change the url.\");\r\n }\r\n if (!url) {\r\n throw new Error(\"The HubConnection url must be a valid url.\");\r\n }\r\n this.connection.baseUrl = url;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /** Starts the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully established, or rejects with an error.\r\n */\r\n HubConnection.prototype.start = function () {\r\n this.startPromise = this.startWithStateTransitions();\r\n return this.startPromise;\r\n };\r\n HubConnection.prototype.startWithStateTransitions = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (this.connectionState !== HubConnectionState.Disconnected) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Cannot start a HubConnection that is not in the 'Disconnected' state.\"))];\r\n }\r\n this.connectionState = HubConnectionState.Connecting;\r\n this.logger.log(LogLevel.Debug, \"Starting HubConnection.\");\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.startInternal()];\r\n case 2:\r\n _a.sent();\r\n this.connectionState = HubConnectionState.Connected;\r\n this.connectionStarted = true;\r\n this.logger.log(LogLevel.Debug, \"HubConnection connected successfully.\");\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _a.sent();\r\n this.connectionState = HubConnectionState.Disconnected;\r\n this.logger.log(LogLevel.Debug, \"HubConnection failed to start successfully because of error '\" + e_1 + \"'.\");\r\n return [2 /*return*/, Promise.reject(e_1)];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HubConnection.prototype.startInternal = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var handshakePromise, handshakeRequest, e_2;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.stopDuringStartError = undefined;\r\n this.receivedHandshakeResponse = false;\r\n handshakePromise = new Promise(function (resolve, reject) {\r\n _this.handshakeResolver = resolve;\r\n _this.handshakeRejecter = reject;\r\n });\r\n return [4 /*yield*/, this.connection.start(this.protocol.transferFormat)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 5, , 7]);\r\n handshakeRequest = {\r\n protocol: this.protocol.name,\r\n version: this.protocol.version,\r\n };\r\n this.logger.log(LogLevel.Debug, \"Sending handshake request.\");\r\n return [4 /*yield*/, this.sendMessage(this.handshakeProtocol.writeHandshakeRequest(handshakeRequest))];\r\n case 3:\r\n _a.sent();\r\n this.logger.log(LogLevel.Information, \"Using HubProtocol '\" + this.protocol.name + \"'.\");\r\n // defensively cleanup timeout in case we receive a message from the server before we finish start\r\n this.cleanupTimeout();\r\n this.resetTimeoutPeriod();\r\n this.resetKeepAliveInterval();\r\n return [4 /*yield*/, handshakePromise];\r\n case 4:\r\n _a.sent();\r\n // It's important to check the stopDuringStartError instead of just relying on the handshakePromise\r\n // being rejected on close, because this continuation can run after both the handshake completed successfully\r\n // and the connection was closed.\r\n if (this.stopDuringStartError) {\r\n // It's important to throw instead of returning a rejected promise, because we don't want to allow any state\r\n // transitions to occur between now and the calling code observing the exceptions. Returning a rejected promise\r\n // will cause the calling continuation to get scheduled to run later.\r\n throw this.stopDuringStartError;\r\n }\r\n return [3 /*break*/, 7];\r\n case 5:\r\n e_2 = _a.sent();\r\n this.logger.log(LogLevel.Debug, \"Hub handshake failed with error '\" + e_2 + \"' during start(). Stopping HubConnection.\");\r\n this.cleanupTimeout();\r\n this.cleanupPingTimer();\r\n // HttpConnection.stop() should not complete until after the onclose callback is invoked.\r\n // This will transition the HubConnection to the disconnected state before HttpConnection.stop() completes.\r\n return [4 /*yield*/, this.connection.stop(e_2)];\r\n case 6:\r\n // HttpConnection.stop() should not complete until after the onclose callback is invoked.\r\n // This will transition the HubConnection to the disconnected state before HttpConnection.stop() completes.\r\n _a.sent();\r\n throw e_2;\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /** Stops the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully terminated, or rejects with an error.\r\n */\r\n HubConnection.prototype.stop = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var startPromise, e_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n startPromise = this.startPromise;\r\n this.stopPromise = this.stopInternal();\r\n return [4 /*yield*/, this.stopPromise];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n // Awaiting undefined continues immediately\r\n return [4 /*yield*/, startPromise];\r\n case 3:\r\n // Awaiting undefined continues immediately\r\n _a.sent();\r\n return [3 /*break*/, 5];\r\n case 4:\r\n e_3 = _a.sent();\r\n return [3 /*break*/, 5];\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HubConnection.prototype.stopInternal = function (error) {\r\n if (this.connectionState === HubConnectionState.Disconnected) {\r\n this.logger.log(LogLevel.Debug, \"Call to HubConnection.stop(\" + error + \") ignored because it is already in the disconnected state.\");\r\n return Promise.resolve();\r\n }\r\n if (this.connectionState === HubConnectionState.Disconnecting) {\r\n this.logger.log(LogLevel.Debug, \"Call to HttpConnection.stop(\" + error + \") ignored because the connection is already in the disconnecting state.\");\r\n return this.stopPromise;\r\n }\r\n this.connectionState = HubConnectionState.Disconnecting;\r\n this.logger.log(LogLevel.Debug, \"Stopping HubConnection.\");\r\n if (this.reconnectDelayHandle) {\r\n // We're in a reconnect delay which means the underlying connection is currently already stopped.\r\n // Just clear the handle to stop the reconnect loop (which no one is waiting on thankfully) and\r\n // fire the onclose callbacks.\r\n this.logger.log(LogLevel.Debug, \"Connection stopped during reconnect delay. Done reconnecting.\");\r\n clearTimeout(this.reconnectDelayHandle);\r\n this.reconnectDelayHandle = undefined;\r\n this.completeClose();\r\n return Promise.resolve();\r\n }\r\n this.cleanupTimeout();\r\n this.cleanupPingTimer();\r\n this.stopDuringStartError = error || new Error(\"The connection was stopped before the hub handshake could complete.\");\r\n // HttpConnection.stop() should not complete until after either HttpConnection.start() fails\r\n // or the onclose callback is invoked. The onclose callback will transition the HubConnection\r\n // to the disconnected state if need be before HttpConnection.stop() completes.\r\n return this.connection.stop(error);\r\n };\r\n /** Invokes a streaming hub method on the server using the specified name and arguments.\r\n *\r\n * @typeparam T The type of the items returned by the server.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {IStreamResult} An object that yields results from the server as they are received.\r\n */\r\n HubConnection.prototype.stream = function (methodName) {\r\n var _this = this;\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var _a = this.replaceStreamingParams(args), streams = _a[0], streamIds = _a[1];\r\n var invocationDescriptor = this.createStreamInvocation(methodName, args, streamIds);\r\n var promiseQueue;\r\n var subject = new Subject();\r\n subject.cancelCallback = function () {\r\n var cancelInvocation = _this.createCancelInvocation(invocationDescriptor.invocationId);\r\n delete _this.callbacks[invocationDescriptor.invocationId];\r\n return promiseQueue.then(function () {\r\n return _this.sendWithProtocol(cancelInvocation);\r\n });\r\n };\r\n this.callbacks[invocationDescriptor.invocationId] = function (invocationEvent, error) {\r\n if (error) {\r\n subject.error(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n subject.error(new Error(invocationEvent.error));\r\n }\r\n else {\r\n subject.complete();\r\n }\r\n }\r\n else {\r\n subject.next((invocationEvent.item));\r\n }\r\n }\r\n };\r\n promiseQueue = this.sendWithProtocol(invocationDescriptor)\r\n .catch(function (e) {\r\n subject.error(e);\r\n delete _this.callbacks[invocationDescriptor.invocationId];\r\n });\r\n this.launchStreams(streams, promiseQueue);\r\n return subject;\r\n };\r\n HubConnection.prototype.sendMessage = function (message) {\r\n this.resetKeepAliveInterval();\r\n return this.connection.send(message);\r\n };\r\n /**\r\n * Sends a js object to the server.\r\n * @param message The js object to serialize and send.\r\n */\r\n HubConnection.prototype.sendWithProtocol = function (message) {\r\n return this.sendMessage(this.protocol.writeMessage(message));\r\n };\r\n /** Invokes a hub method on the server using the specified name and arguments. Does not wait for a response from the receiver.\r\n *\r\n * The Promise returned by this method resolves when the client has sent the invocation to the server. The server may still\r\n * be processing the invocation.\r\n *\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves when the invocation has been successfully sent, or rejects with an error.\r\n */\r\n HubConnection.prototype.send = function (methodName) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var _a = this.replaceStreamingParams(args), streams = _a[0], streamIds = _a[1];\r\n var sendPromise = this.sendWithProtocol(this.createInvocation(methodName, args, true, streamIds));\r\n this.launchStreams(streams, sendPromise);\r\n return sendPromise;\r\n };\r\n /** Invokes a hub method on the server using the specified name and arguments.\r\n *\r\n * The Promise returned by this method resolves when the server indicates it has finished invoking the method. When the promise\r\n * resolves, the server has finished invoking the method. If the server method returns a result, it is produced as the result of\r\n * resolving the Promise.\r\n *\r\n * @typeparam T The expected return type.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves with the result of the server method (if any), or rejects with an error.\r\n */\r\n HubConnection.prototype.invoke = function (methodName) {\r\n var _this = this;\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var _a = this.replaceStreamingParams(args), streams = _a[0], streamIds = _a[1];\r\n var invocationDescriptor = this.createInvocation(methodName, args, false, streamIds);\r\n var p = new Promise(function (resolve, reject) {\r\n // invocationId will always have a value for a non-blocking invocation\r\n _this.callbacks[invocationDescriptor.invocationId] = function (invocationEvent, error) {\r\n if (error) {\r\n reject(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n reject(new Error(invocationEvent.error));\r\n }\r\n else {\r\n resolve(invocationEvent.result);\r\n }\r\n }\r\n else {\r\n reject(new Error(\"Unexpected message type: \" + invocationEvent.type));\r\n }\r\n }\r\n };\r\n var promiseQueue = _this.sendWithProtocol(invocationDescriptor)\r\n .catch(function (e) {\r\n reject(e);\r\n // invocationId will always have a value for a non-blocking invocation\r\n delete _this.callbacks[invocationDescriptor.invocationId];\r\n });\r\n _this.launchStreams(streams, promiseQueue);\r\n });\r\n return p;\r\n };\r\n /** Registers a handler that will be invoked when the hub method with the specified method name is invoked.\r\n *\r\n * @param {string} methodName The name of the hub method to define.\r\n * @param {Function} newMethod The handler that will be raised when the hub method is invoked.\r\n */\r\n HubConnection.prototype.on = function (methodName, newMethod) {\r\n if (!methodName || !newMethod) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n if (!this.methods[methodName]) {\r\n this.methods[methodName] = [];\r\n }\r\n // Preventing adding the same handler multiple times.\r\n if (this.methods[methodName].indexOf(newMethod) !== -1) {\r\n return;\r\n }\r\n this.methods[methodName].push(newMethod);\r\n };\r\n HubConnection.prototype.off = function (methodName, method) {\r\n if (!methodName) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n var handlers = this.methods[methodName];\r\n if (!handlers) {\r\n return;\r\n }\r\n if (method) {\r\n var removeIdx = handlers.indexOf(method);\r\n if (removeIdx !== -1) {\r\n handlers.splice(removeIdx, 1);\r\n if (handlers.length === 0) {\r\n delete this.methods[methodName];\r\n }\r\n }\r\n }\r\n else {\r\n delete this.methods[methodName];\r\n }\r\n };\r\n /** Registers a handler that will be invoked when the connection is closed.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection is closed. Optionally receives a single argument containing the error that caused the connection to close (if any).\r\n */\r\n HubConnection.prototype.onclose = function (callback) {\r\n if (callback) {\r\n this.closedCallbacks.push(callback);\r\n }\r\n };\r\n /** Registers a handler that will be invoked when the connection starts reconnecting.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection starts reconnecting. Optionally receives a single argument containing the error that caused the connection to start reconnecting (if any).\r\n */\r\n HubConnection.prototype.onreconnecting = function (callback) {\r\n if (callback) {\r\n this.reconnectingCallbacks.push(callback);\r\n }\r\n };\r\n /** Registers a handler that will be invoked when the connection successfully reconnects.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection successfully reconnects.\r\n */\r\n HubConnection.prototype.onreconnected = function (callback) {\r\n if (callback) {\r\n this.reconnectedCallbacks.push(callback);\r\n }\r\n };\r\n HubConnection.prototype.processIncomingData = function (data) {\r\n this.cleanupTimeout();\r\n if (!this.receivedHandshakeResponse) {\r\n data = this.processHandshakeResponse(data);\r\n this.receivedHandshakeResponse = true;\r\n }\r\n // Data may have all been read when processing handshake response\r\n if (data) {\r\n // Parse the messages\r\n var messages = this.protocol.parseMessages(data, this.logger);\r\n for (var _i = 0, messages_1 = messages; _i < messages_1.length; _i++) {\r\n var message = messages_1[_i];\r\n switch (message.type) {\r\n case MessageType.Invocation:\r\n this.invokeClientMethod(message);\r\n break;\r\n case MessageType.StreamItem:\r\n case MessageType.Completion:\r\n var callback = this.callbacks[message.invocationId];\r\n if (callback) {\r\n if (message.type === MessageType.Completion) {\r\n delete this.callbacks[message.invocationId];\r\n }\r\n callback(message);\r\n }\r\n break;\r\n case MessageType.Ping:\r\n // Don't care about pings\r\n break;\r\n case MessageType.Close:\r\n this.logger.log(LogLevel.Information, \"Close message received from server.\");\r\n var error = message.error ? new Error(\"Server returned an error on close: \" + message.error) : undefined;\r\n if (message.allowReconnect === true) {\r\n // It feels wrong not to await connection.stop() here, but processIncomingData is called as part of an onreceive callback which is not async,\r\n // this is already the behavior for serverTimeout(), and HttpConnection.Stop() should catch and log all possible exceptions.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(error);\r\n }\r\n else {\r\n // We cannot await stopInternal() here, but subsequent calls to stop() will await this if stopInternal() is still ongoing.\r\n this.stopPromise = this.stopInternal(error);\r\n }\r\n break;\r\n default:\r\n this.logger.log(LogLevel.Warning, \"Invalid message type: \" + message.type + \".\");\r\n break;\r\n }\r\n }\r\n }\r\n this.resetTimeoutPeriod();\r\n };\r\n HubConnection.prototype.processHandshakeResponse = function (data) {\r\n var _a;\r\n var responseMessage;\r\n var remainingData;\r\n try {\r\n _a = this.handshakeProtocol.parseHandshakeResponse(data), remainingData = _a[0], responseMessage = _a[1];\r\n }\r\n catch (e) {\r\n var message = \"Error parsing handshake response: \" + e;\r\n this.logger.log(LogLevel.Error, message);\r\n var error = new Error(message);\r\n this.handshakeRejecter(error);\r\n throw error;\r\n }\r\n if (responseMessage.error) {\r\n var message = \"Server returned handshake error: \" + responseMessage.error;\r\n this.logger.log(LogLevel.Error, message);\r\n var error = new Error(message);\r\n this.handshakeRejecter(error);\r\n throw error;\r\n }\r\n else {\r\n this.logger.log(LogLevel.Debug, \"Server handshake complete.\");\r\n }\r\n this.handshakeResolver();\r\n return remainingData;\r\n };\r\n HubConnection.prototype.resetKeepAliveInterval = function () {\r\n var _this = this;\r\n this.cleanupPingTimer();\r\n this.pingServerHandle = setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!(this.connectionState === HubConnectionState.Connected)) return [3 /*break*/, 4];\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.sendMessage(this.cachedPingMessage)];\r\n case 2:\r\n _b.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n _a = _b.sent();\r\n // We don't care about the error. It should be seen elsewhere in the client.\r\n // The connection is probably in a bad or closed state now, cleanup the timer so it stops triggering\r\n this.cleanupPingTimer();\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n }); }, this.keepAliveIntervalInMilliseconds);\r\n };\r\n HubConnection.prototype.resetTimeoutPeriod = function () {\r\n var _this = this;\r\n if (!this.connection.features || !this.connection.features.inherentKeepAlive) {\r\n // Set the timeout timer\r\n this.timeoutHandle = setTimeout(function () { return _this.serverTimeout(); }, this.serverTimeoutInMilliseconds);\r\n }\r\n };\r\n HubConnection.prototype.serverTimeout = function () {\r\n // The server hasn't talked to us in a while. It doesn't like us anymore ... :(\r\n // Terminate the connection, but we don't need to wait on the promise. This could trigger reconnecting.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(new Error(\"Server timeout elapsed without receiving a message from the server.\"));\r\n };\r\n HubConnection.prototype.invokeClientMethod = function (invocationMessage) {\r\n var _this = this;\r\n var methods = this.methods[invocationMessage.target.toLowerCase()];\r\n if (methods) {\r\n try {\r\n methods.forEach(function (m) { return m.apply(_this, invocationMessage.arguments); });\r\n }\r\n catch (e) {\r\n this.logger.log(LogLevel.Error, \"A callback for the method \" + invocationMessage.target.toLowerCase() + \" threw error '\" + e + \"'.\");\r\n }\r\n if (invocationMessage.invocationId) {\r\n // This is not supported in v1. So we return an error to avoid blocking the server waiting for the response.\r\n var message = \"Server requested a response, which is not supported in this version of the client.\";\r\n this.logger.log(LogLevel.Error, message);\r\n // We don't want to wait on the stop itself.\r\n this.stopPromise = this.stopInternal(new Error(message));\r\n }\r\n }\r\n else {\r\n this.logger.log(LogLevel.Warning, \"No client method with the name '\" + invocationMessage.target + \"' found.\");\r\n }\r\n };\r\n HubConnection.prototype.connectionClosed = function (error) {\r\n this.logger.log(LogLevel.Debug, \"HubConnection.connectionClosed(\" + error + \") called while in state \" + this.connectionState + \".\");\r\n // Triggering this.handshakeRejecter is insufficient because it could already be resolved without the continuation having run yet.\r\n this.stopDuringStartError = this.stopDuringStartError || error || new Error(\"The underlying connection was closed before the hub handshake could complete.\");\r\n // If the handshake is in progress, start will be waiting for the handshake promise, so we complete it.\r\n // If it has already completed, this should just noop.\r\n if (this.handshakeResolver) {\r\n this.handshakeResolver();\r\n }\r\n this.cancelCallbacksWithError(error || new Error(\"Invocation canceled due to the underlying connection being closed.\"));\r\n this.cleanupTimeout();\r\n this.cleanupPingTimer();\r\n if (this.connectionState === HubConnectionState.Disconnecting) {\r\n this.completeClose(error);\r\n }\r\n else if (this.connectionState === HubConnectionState.Connected && this.reconnectPolicy) {\r\n // tslint:disable-next-line:no-floating-promises\r\n this.reconnect(error);\r\n }\r\n else if (this.connectionState === HubConnectionState.Connected) {\r\n this.completeClose(error);\r\n }\r\n // If none of the above if conditions were true were called the HubConnection must be in either:\r\n // 1. The Connecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail it.\r\n // 2. The Reconnecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail the current reconnect attempt\r\n // and potentially continue the reconnect() loop.\r\n // 3. The Disconnected state in which case we're already done.\r\n };\r\n HubConnection.prototype.completeClose = function (error) {\r\n var _this = this;\r\n if (this.connectionStarted) {\r\n this.connectionState = HubConnectionState.Disconnected;\r\n this.connectionStarted = false;\r\n try {\r\n this.closedCallbacks.forEach(function (c) { return c.apply(_this, [error]); });\r\n }\r\n catch (e) {\r\n this.logger.log(LogLevel.Error, \"An onclose callback called with error '\" + error + \"' threw error '\" + e + \"'.\");\r\n }\r\n }\r\n };\r\n HubConnection.prototype.reconnect = function (error) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var reconnectStartTime, previousReconnectAttempts, retryError, nextRetryDelay, e_4;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n reconnectStartTime = Date.now();\r\n previousReconnectAttempts = 0;\r\n retryError = error !== undefined ? error : new Error(\"Attempting to reconnect due to a unknown error.\");\r\n nextRetryDelay = this.getNextRetryDelay(previousReconnectAttempts++, 0, retryError);\r\n if (nextRetryDelay === null) {\r\n this.logger.log(LogLevel.Debug, \"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt.\");\r\n this.completeClose(error);\r\n return [2 /*return*/];\r\n }\r\n this.connectionState = HubConnectionState.Reconnecting;\r\n if (error) {\r\n this.logger.log(LogLevel.Information, \"Connection reconnecting because of error '\" + error + \"'.\");\r\n }\r\n else {\r\n this.logger.log(LogLevel.Information, \"Connection reconnecting.\");\r\n }\r\n if (this.onreconnecting) {\r\n try {\r\n this.reconnectingCallbacks.forEach(function (c) { return c.apply(_this, [error]); });\r\n }\r\n catch (e) {\r\n this.logger.log(LogLevel.Error, \"An onreconnecting callback called with error '\" + error + \"' threw error '\" + e + \"'.\");\r\n }\r\n // Exit early if an onreconnecting callback called connection.stop().\r\n if (this.connectionState !== HubConnectionState.Reconnecting) {\r\n this.logger.log(LogLevel.Debug, \"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.\");\r\n return [2 /*return*/];\r\n }\r\n }\r\n _a.label = 1;\r\n case 1:\r\n if (!(nextRetryDelay !== null)) return [3 /*break*/, 7];\r\n this.logger.log(LogLevel.Information, \"Reconnect attempt number \" + previousReconnectAttempts + \" will start in \" + nextRetryDelay + \" ms.\");\r\n return [4 /*yield*/, new Promise(function (resolve) {\r\n _this.reconnectDelayHandle = setTimeout(resolve, nextRetryDelay);\r\n })];\r\n case 2:\r\n _a.sent();\r\n this.reconnectDelayHandle = undefined;\r\n if (this.connectionState !== HubConnectionState.Reconnecting) {\r\n this.logger.log(LogLevel.Debug, \"Connection left the reconnecting state during reconnect delay. Done reconnecting.\");\r\n return [2 /*return*/];\r\n }\r\n _a.label = 3;\r\n case 3:\r\n _a.trys.push([3, 5, , 6]);\r\n return [4 /*yield*/, this.startInternal()];\r\n case 4:\r\n _a.sent();\r\n this.connectionState = HubConnectionState.Connected;\r\n this.logger.log(LogLevel.Information, \"HubConnection reconnected successfully.\");\r\n if (this.onreconnected) {\r\n try {\r\n this.reconnectedCallbacks.forEach(function (c) { return c.apply(_this, [_this.connection.connectionId]); });\r\n }\r\n catch (e) {\r\n this.logger.log(LogLevel.Error, \"An onreconnected callback called with connectionId '\" + this.connection.connectionId + \"; threw error '\" + e + \"'.\");\r\n }\r\n }\r\n return [2 /*return*/];\r\n case 5:\r\n e_4 = _a.sent();\r\n this.logger.log(LogLevel.Information, \"Reconnect attempt failed because of error '\" + e_4 + \"'.\");\r\n if (this.connectionState !== HubConnectionState.Reconnecting) {\r\n this.logger.log(LogLevel.Debug, \"Connection left the reconnecting state during reconnect attempt. Done reconnecting.\");\r\n return [2 /*return*/];\r\n }\r\n retryError = e_4 instanceof Error ? e_4 : new Error(e_4.toString());\r\n nextRetryDelay = this.getNextRetryDelay(previousReconnectAttempts++, Date.now() - reconnectStartTime, retryError);\r\n return [3 /*break*/, 6];\r\n case 6: return [3 /*break*/, 1];\r\n case 7:\r\n this.logger.log(LogLevel.Information, \"Reconnect retries have been exhausted after \" + (Date.now() - reconnectStartTime) + \" ms and \" + previousReconnectAttempts + \" failed attempts. Connection disconnecting.\");\r\n this.completeClose();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HubConnection.prototype.getNextRetryDelay = function (previousRetryCount, elapsedMilliseconds, retryReason) {\r\n try {\r\n return this.reconnectPolicy.nextRetryDelayInMilliseconds({\r\n elapsedMilliseconds: elapsedMilliseconds,\r\n previousRetryCount: previousRetryCount,\r\n retryReason: retryReason,\r\n });\r\n }\r\n catch (e) {\r\n this.logger.log(LogLevel.Error, \"IRetryPolicy.nextRetryDelayInMilliseconds(\" + previousRetryCount + \", \" + elapsedMilliseconds + \") threw error '\" + e + \"'.\");\r\n return null;\r\n }\r\n };\r\n HubConnection.prototype.cancelCallbacksWithError = function (error) {\r\n var callbacks = this.callbacks;\r\n this.callbacks = {};\r\n Object.keys(callbacks)\r\n .forEach(function (key) {\r\n var callback = callbacks[key];\r\n callback(null, error);\r\n });\r\n };\r\n HubConnection.prototype.cleanupPingTimer = function () {\r\n if (this.pingServerHandle) {\r\n clearTimeout(this.pingServerHandle);\r\n }\r\n };\r\n HubConnection.prototype.cleanupTimeout = function () {\r\n if (this.timeoutHandle) {\r\n clearTimeout(this.timeoutHandle);\r\n }\r\n };\r\n HubConnection.prototype.createInvocation = function (methodName, args, nonblocking, streamIds) {\r\n if (nonblocking) {\r\n return {\r\n arguments: args,\r\n streamIds: streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n else {\r\n var invocationId = this.invocationId;\r\n this.invocationId++;\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds: streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n };\r\n HubConnection.prototype.launchStreams = function (streams, promiseQueue) {\r\n var _this = this;\r\n if (streams.length === 0) {\r\n return;\r\n }\r\n // Synchronize stream data so they arrive in-order on the server\r\n if (!promiseQueue) {\r\n promiseQueue = Promise.resolve();\r\n }\r\n var _loop_1 = function (streamId) {\r\n streams[streamId].subscribe({\r\n complete: function () {\r\n promiseQueue = promiseQueue.then(function () { return _this.sendWithProtocol(_this.createCompletionMessage(streamId)); });\r\n },\r\n error: function (err) {\r\n var message;\r\n if (err instanceof Error) {\r\n message = err.message;\r\n }\r\n else if (err && err.toString) {\r\n message = err.toString();\r\n }\r\n else {\r\n message = \"Unknown error\";\r\n }\r\n promiseQueue = promiseQueue.then(function () { return _this.sendWithProtocol(_this.createCompletionMessage(streamId, message)); });\r\n },\r\n next: function (item) {\r\n promiseQueue = promiseQueue.then(function () { return _this.sendWithProtocol(_this.createStreamItemMessage(streamId, item)); });\r\n },\r\n });\r\n };\r\n // We want to iterate over the keys, since the keys are the stream ids\r\n // tslint:disable-next-line:forin\r\n for (var streamId in streams) {\r\n _loop_1(streamId);\r\n }\r\n };\r\n HubConnection.prototype.replaceStreamingParams = function (args) {\r\n var streams = [];\r\n var streamIds = [];\r\n for (var i = 0; i < args.length; i++) {\r\n var argument = args[i];\r\n if (this.isObservable(argument)) {\r\n var streamId = this.invocationId;\r\n this.invocationId++;\r\n // Store the stream for later use\r\n streams[streamId] = argument;\r\n streamIds.push(streamId.toString());\r\n // remove stream from args\r\n args.splice(i, 1);\r\n }\r\n }\r\n return [streams, streamIds];\r\n };\r\n HubConnection.prototype.isObservable = function (arg) {\r\n // This allows other stream implementations to just work (like rxjs)\r\n return arg && arg.subscribe && typeof arg.subscribe === \"function\";\r\n };\r\n HubConnection.prototype.createStreamInvocation = function (methodName, args, streamIds) {\r\n var invocationId = this.invocationId;\r\n this.invocationId++;\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds: streamIds,\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n };\r\n HubConnection.prototype.createCancelInvocation = function (id) {\r\n return {\r\n invocationId: id,\r\n type: MessageType.CancelInvocation,\r\n };\r\n };\r\n HubConnection.prototype.createStreamItemMessage = function (id, item) {\r\n return {\r\n invocationId: id,\r\n item: item,\r\n type: MessageType.StreamItem,\r\n };\r\n };\r\n HubConnection.prototype.createCompletionMessage = function (id, error, result) {\r\n if (error) {\r\n return {\r\n error: error,\r\n invocationId: id,\r\n type: MessageType.Completion,\r\n };\r\n }\r\n return {\r\n invocationId: id,\r\n result: result,\r\n type: MessageType.Completion,\r\n };\r\n };\r\n return HubConnection;\r\n}());\r\nexport { HubConnection };\r\n//# sourceMappingURL=HubConnection.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nimport { SubjectSubscription } from \"./Utils\";\r\n/** Stream implementation to stream items to the server. */\r\nvar Subject = /** @class */ (function () {\r\n function Subject() {\r\n this.observers = [];\r\n }\r\n Subject.prototype.next = function (item) {\r\n for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {\r\n var observer = _a[_i];\r\n observer.next(item);\r\n }\r\n };\r\n Subject.prototype.error = function (err) {\r\n for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {\r\n var observer = _a[_i];\r\n if (observer.error) {\r\n observer.error(err);\r\n }\r\n }\r\n };\r\n Subject.prototype.complete = function () {\r\n for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {\r\n var observer = _a[_i];\r\n if (observer.complete) {\r\n observer.complete();\r\n }\r\n }\r\n };\r\n Subject.prototype.subscribe = function (observer) {\r\n this.observers.push(observer);\r\n return new SubjectSubscription(this, observer);\r\n };\r\n return Subject;\r\n}());\r\nexport { Subject };\r\n//# sourceMappingURL=Subject.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// This will be treated as a bit flag in the future, so we keep it using power-of-two values.\r\n/** Specifies a specific HTTP transport type. */\r\nexport var HttpTransportType;\r\n(function (HttpTransportType) {\r\n /** Specifies no transport preference. */\r\n HttpTransportType[HttpTransportType[\"None\"] = 0] = \"None\";\r\n /** Specifies the WebSockets transport. */\r\n HttpTransportType[HttpTransportType[\"WebSockets\"] = 1] = \"WebSockets\";\r\n /** Specifies the Server-Sent Events transport. */\r\n HttpTransportType[HttpTransportType[\"ServerSentEvents\"] = 2] = \"ServerSentEvents\";\r\n /** Specifies the Long Polling transport. */\r\n HttpTransportType[HttpTransportType[\"LongPolling\"] = 4] = \"LongPolling\";\r\n})(HttpTransportType || (HttpTransportType = {}));\r\n/** Specifies the transfer format for a connection. */\r\nexport var TransferFormat;\r\n(function (TransferFormat) {\r\n /** Specifies that only text data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Text\"] = 1] = \"Text\";\r\n /** Specifies that binary data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Binary\"] = 2] = \"Binary\";\r\n})(TransferFormat || (TransferFormat = {}));\r\n//# sourceMappingURL=ITransport.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// 0, 2, 10, 30 second delays before reconnect attempts.\r\nvar DEFAULT_RETRY_DELAYS_IN_MILLISECONDS = [0, 2000, 10000, 30000, null];\r\n/** @private */\r\nvar DefaultReconnectPolicy = /** @class */ (function () {\r\n function DefaultReconnectPolicy(retryDelays) {\r\n this.retryDelays = retryDelays !== undefined ? retryDelays.concat([null]) : DEFAULT_RETRY_DELAYS_IN_MILLISECONDS;\r\n }\r\n DefaultReconnectPolicy.prototype.nextRetryDelayInMilliseconds = function (retryContext) {\r\n return this.retryDelays[retryContext.previousRetryCount];\r\n };\r\n return DefaultReconnectPolicy;\r\n}());\r\nexport { DefaultReconnectPolicy };\r\n//# sourceMappingURL=DefaultReconnectPolicy.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// Rough polyfill of https://developer.mozilla.org/en-US/docs/Web/API/AbortController\r\n// We don't actually ever use the API being polyfilled, we always use the polyfill because\r\n// it's a very new API right now.\r\n// Not exported from index.\r\n/** @private */\r\nvar AbortController = /** @class */ (function () {\r\n function AbortController() {\r\n this.isAborted = false;\r\n this.onabort = null;\r\n }\r\n AbortController.prototype.abort = function () {\r\n if (!this.isAborted) {\r\n this.isAborted = true;\r\n if (this.onabort) {\r\n this.onabort();\r\n }\r\n }\r\n };\r\n Object.defineProperty(AbortController.prototype, \"signal\", {\r\n get: function () {\r\n return this;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbortController.prototype, \"aborted\", {\r\n get: function () {\r\n return this.isAborted;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AbortController;\r\n}());\r\nexport { AbortController };\r\n//# sourceMappingURL=AbortController.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (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\nvar __generator = (this && this.__generator) || function (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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, 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\nimport { AbortController } from \"./AbortController\";\r\nimport { HttpError, TimeoutError } from \"./Errors\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, sendMessage } from \"./Utils\";\r\n// Not exported from 'index', this type is internal.\r\n/** @private */\r\nvar LongPollingTransport = /** @class */ (function () {\r\n function LongPollingTransport(httpClient, accessTokenFactory, logger, logMessageContent) {\r\n this.httpClient = httpClient;\r\n this.accessTokenFactory = accessTokenFactory;\r\n this.logger = logger;\r\n this.pollAbort = new AbortController();\r\n this.logMessageContent = logMessageContent;\r\n this.running = false;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n Object.defineProperty(LongPollingTransport.prototype, \"pollAborted\", {\r\n // This is an internal type, not exported from 'index' so this is really just internal.\r\n get: function () {\r\n return this.pollAbort.aborted;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n LongPollingTransport.prototype.connect = function (url, transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var pollOptions, token, pollUrl, response;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this.url = url;\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Connecting.\");\r\n // Allow binary format on Node and Browsers that support binary content (indicated by the presence of responseType property)\r\n if (transferFormat === TransferFormat.Binary &&\r\n (typeof XMLHttpRequest !== \"undefined\" && typeof new XMLHttpRequest().responseType !== \"string\")) {\r\n throw new Error(\"Binary protocols over XmlHttpRequest not implementing advanced features are not supported.\");\r\n }\r\n pollOptions = {\r\n abortSignal: this.pollAbort.signal,\r\n headers: {},\r\n timeout: 100000,\r\n };\r\n if (transferFormat === TransferFormat.Binary) {\r\n pollOptions.responseType = \"arraybuffer\";\r\n }\r\n return [4 /*yield*/, this.getAccessToken()];\r\n case 1:\r\n token = _a.sent();\r\n this.updateHeaderToken(pollOptions, token);\r\n pollUrl = url + \"&_=\" + Date.now();\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) polling: \" + pollUrl + \".\");\r\n return [4 /*yield*/, this.httpClient.get(pollUrl, pollOptions)];\r\n case 2:\r\n response = _a.sent();\r\n if (response.statusCode !== 200) {\r\n this.logger.log(LogLevel.Error, \"(LongPolling transport) Unexpected response code: \" + response.statusCode + \".\");\r\n // Mark running as false so that the poll immediately ends and runs the close logic\r\n this.closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this.running = false;\r\n }\r\n else {\r\n this.running = true;\r\n }\r\n this.receiving = this.poll(this.url, pollOptions);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.getAccessToken = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this.accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2: return [2 /*return*/, null];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.updateHeaderToken = function (request, token) {\r\n if (!request.headers) {\r\n request.headers = {};\r\n }\r\n if (token) {\r\n // tslint:disable-next-line:no-string-literal\r\n request.headers[\"Authorization\"] = \"Bearer \" + token;\r\n return;\r\n }\r\n // tslint:disable-next-line:no-string-literal\r\n if (request.headers[\"Authorization\"]) {\r\n // tslint:disable-next-line:no-string-literal\r\n delete request.headers[\"Authorization\"];\r\n }\r\n };\r\n LongPollingTransport.prototype.poll = function (url, pollOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token, pollUrl, response, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, , 8, 9]);\r\n _a.label = 1;\r\n case 1:\r\n if (!this.running) return [3 /*break*/, 7];\r\n return [4 /*yield*/, this.getAccessToken()];\r\n case 2:\r\n token = _a.sent();\r\n this.updateHeaderToken(pollOptions, token);\r\n _a.label = 3;\r\n case 3:\r\n _a.trys.push([3, 5, , 6]);\r\n pollUrl = url + \"&_=\" + Date.now();\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) polling: \" + pollUrl + \".\");\r\n return [4 /*yield*/, this.httpClient.get(pollUrl, pollOptions)];\r\n case 4:\r\n response = _a.sent();\r\n if (response.statusCode === 204) {\r\n this.logger.log(LogLevel.Information, \"(LongPolling transport) Poll terminated by server.\");\r\n this.running = false;\r\n }\r\n else if (response.statusCode !== 200) {\r\n this.logger.log(LogLevel.Error, \"(LongPolling transport) Unexpected response code: \" + response.statusCode + \".\");\r\n // Unexpected status code\r\n this.closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this.running = false;\r\n }\r\n else {\r\n // Process the response\r\n if (response.content) {\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) data received. \" + getDataDetail(response.content, this.logMessageContent) + \".\");\r\n if (this.onreceive) {\r\n this.onreceive(response.content);\r\n }\r\n }\r\n else {\r\n // This is another way timeout manifest.\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n }\r\n return [3 /*break*/, 6];\r\n case 5:\r\n e_1 = _a.sent();\r\n if (!this.running) {\r\n // Log but disregard errors that occur after stopping\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Poll errored after shutdown: \" + e_1.message);\r\n }\r\n else {\r\n if (e_1 instanceof TimeoutError) {\r\n // Ignore timeouts and reissue the poll.\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n else {\r\n // Close the connection with the error as the result.\r\n this.closeError = e_1;\r\n this.running = false;\r\n }\r\n }\r\n return [3 /*break*/, 6];\r\n case 6: return [3 /*break*/, 1];\r\n case 7: return [3 /*break*/, 9];\r\n case 8:\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Polling complete.\");\r\n // We will reach here with pollAborted==false when the server returned a response causing the transport to stop.\r\n // If pollAborted==true then client initiated the stop and the stop method will raise the close event after DELETE is sent.\r\n if (!this.pollAborted) {\r\n this.raiseOnClose();\r\n }\r\n return [7 /*endfinally*/];\r\n case 9: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.send = function (data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (!this.running) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Cannot send until the transport is connected\"))];\r\n }\r\n return [2 /*return*/, sendMessage(this.logger, \"LongPolling\", this.httpClient, this.url, this.accessTokenFactory, data, this.logMessageContent)];\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.stop = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var deleteOptions, token;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Stopping polling.\");\r\n // Tell receiving loop to stop, abort any current request, and then wait for it to finish\r\n this.running = false;\r\n this.pollAbort.abort();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, , 5, 6]);\r\n return [4 /*yield*/, this.receiving];\r\n case 2:\r\n _a.sent();\r\n // Send DELETE to clean up long polling on the server\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) sending DELETE request to \" + this.url + \".\");\r\n deleteOptions = {\r\n headers: {},\r\n };\r\n return [4 /*yield*/, this.getAccessToken()];\r\n case 3:\r\n token = _a.sent();\r\n this.updateHeaderToken(deleteOptions, token);\r\n return [4 /*yield*/, this.httpClient.delete(this.url, deleteOptions)];\r\n case 4:\r\n _a.sent();\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) DELETE request sent.\");\r\n return [3 /*break*/, 6];\r\n case 5:\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Stop finished.\");\r\n // Raise close event here instead of in polling\r\n // It needs to happen after the DELETE request is sent\r\n this.raiseOnClose();\r\n return [7 /*endfinally*/];\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.raiseOnClose = function () {\r\n if (this.onclose) {\r\n var logMessage = \"(LongPolling transport) Firing onclose event.\";\r\n if (this.closeError) {\r\n logMessage += \" Error: \" + this.closeError;\r\n }\r\n this.logger.log(LogLevel.Trace, logMessage);\r\n this.onclose(this.closeError);\r\n }\r\n };\r\n return LongPollingTransport;\r\n}());\r\nexport { LongPollingTransport };\r\n//# sourceMappingURL=LongPollingTransport.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (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\nvar __generator = (this && this.__generator) || function (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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, 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\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, Platform, sendMessage } from \"./Utils\";\r\n/** @private */\r\nvar ServerSentEventsTransport = /** @class */ (function () {\r\n function ServerSentEventsTransport(httpClient, accessTokenFactory, logger, logMessageContent, eventSourceConstructor) {\r\n this.httpClient = httpClient;\r\n this.accessTokenFactory = accessTokenFactory;\r\n this.logger = logger;\r\n this.logMessageContent = logMessageContent;\r\n this.eventSourceConstructor = eventSourceConstructor;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n ServerSentEventsTransport.prototype.connect = function (url, transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this.logger.log(LogLevel.Trace, \"(SSE transport) Connecting.\");\r\n // set url before accessTokenFactory because this.url is only for send and we set the auth header instead of the query string for send\r\n this.url = url;\r\n if (!this.accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _a.sent();\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + (\"access_token=\" + encodeURIComponent(token));\r\n }\r\n _a.label = 2;\r\n case 2: return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var opened = false;\r\n if (transferFormat !== TransferFormat.Text) {\r\n reject(new Error(\"The Server-Sent Events transport only supports the 'Text' transfer format\"));\r\n return;\r\n }\r\n var eventSource;\r\n if (Platform.isBrowser || Platform.isWebWorker) {\r\n eventSource = new _this.eventSourceConstructor(url, { withCredentials: true });\r\n }\r\n else {\r\n // Non-browser passes cookies via the dictionary\r\n var cookies = _this.httpClient.getCookieString(url);\r\n eventSource = new _this.eventSourceConstructor(url, { withCredentials: true, headers: { Cookie: cookies } });\r\n }\r\n try {\r\n eventSource.onmessage = function (e) {\r\n if (_this.onreceive) {\r\n try {\r\n _this.logger.log(LogLevel.Trace, \"(SSE transport) data received. \" + getDataDetail(e.data, _this.logMessageContent) + \".\");\r\n _this.onreceive(e.data);\r\n }\r\n catch (error) {\r\n _this.close(error);\r\n return;\r\n }\r\n }\r\n };\r\n eventSource.onerror = function (e) {\r\n var error = new Error(e.data || \"Error occurred\");\r\n if (opened) {\r\n _this.close(error);\r\n }\r\n else {\r\n reject(error);\r\n }\r\n };\r\n eventSource.onopen = function () {\r\n _this.logger.log(LogLevel.Information, \"SSE connected to \" + _this.url);\r\n _this.eventSource = eventSource;\r\n opened = true;\r\n resolve();\r\n };\r\n }\r\n catch (e) {\r\n reject(e);\r\n return;\r\n }\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n ServerSentEventsTransport.prototype.send = function (data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (!this.eventSource) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Cannot send until the transport is connected\"))];\r\n }\r\n return [2 /*return*/, sendMessage(this.logger, \"SSE\", this.httpClient, this.url, this.accessTokenFactory, data, this.logMessageContent)];\r\n });\r\n });\r\n };\r\n ServerSentEventsTransport.prototype.stop = function () {\r\n this.close();\r\n return Promise.resolve();\r\n };\r\n ServerSentEventsTransport.prototype.close = function (e) {\r\n if (this.eventSource) {\r\n this.eventSource.close();\r\n this.eventSource = undefined;\r\n if (this.onclose) {\r\n this.onclose(e);\r\n }\r\n }\r\n };\r\n return ServerSentEventsTransport;\r\n}());\r\nexport { ServerSentEventsTransport };\r\n//# sourceMappingURL=ServerSentEventsTransport.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (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\nvar __generator = (this && this.__generator) || function (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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, 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\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, Platform } from \"./Utils\";\r\n/** @private */\r\nvar WebSocketTransport = /** @class */ (function () {\r\n function WebSocketTransport(httpClient, accessTokenFactory, logger, logMessageContent, webSocketConstructor) {\r\n this.logger = logger;\r\n this.accessTokenFactory = accessTokenFactory;\r\n this.logMessageContent = logMessageContent;\r\n this.webSocketConstructor = webSocketConstructor;\r\n this.httpClient = httpClient;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n WebSocketTransport.prototype.connect = function (url, transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this.logger.log(LogLevel.Trace, \"(WebSockets transport) Connecting.\");\r\n if (!this.accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _a.sent();\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + (\"access_token=\" + encodeURIComponent(token));\r\n }\r\n _a.label = 2;\r\n case 2: return [2 /*return*/, new Promise(function (resolve, reject) {\r\n url = url.replace(/^http/, \"ws\");\r\n var webSocket;\r\n var cookies = _this.httpClient.getCookieString(url);\r\n var opened = false;\r\n if (Platform.isNode && cookies) {\r\n // Only pass cookies when in non-browser environments\r\n webSocket = new _this.webSocketConstructor(url, undefined, {\r\n headers: {\r\n Cookie: \"\" + cookies,\r\n },\r\n });\r\n }\r\n if (!webSocket) {\r\n // Chrome is not happy with passing 'undefined' as protocol\r\n webSocket = new _this.webSocketConstructor(url);\r\n }\r\n if (transferFormat === TransferFormat.Binary) {\r\n webSocket.binaryType = \"arraybuffer\";\r\n }\r\n // tslint:disable-next-line:variable-name\r\n webSocket.onopen = function (_event) {\r\n _this.logger.log(LogLevel.Information, \"WebSocket connected to \" + url + \".\");\r\n _this.webSocket = webSocket;\r\n opened = true;\r\n resolve();\r\n };\r\n webSocket.onerror = function (event) {\r\n var error = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n }\r\n else {\r\n error = new Error(\"There was an error with the transport.\");\r\n }\r\n reject(error);\r\n };\r\n webSocket.onmessage = function (message) {\r\n _this.logger.log(LogLevel.Trace, \"(WebSockets transport) data received. \" + getDataDetail(message.data, _this.logMessageContent) + \".\");\r\n if (_this.onreceive) {\r\n _this.onreceive(message.data);\r\n }\r\n };\r\n webSocket.onclose = function (event) {\r\n // Don't call close handler if connection was never established\r\n // We'll reject the connect call instead\r\n if (opened) {\r\n _this.close(event);\r\n }\r\n else {\r\n var error = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n }\r\n else {\r\n error = new Error(\"There was an error with the transport.\");\r\n }\r\n reject(error);\r\n }\r\n };\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n WebSocketTransport.prototype.send = function (data) {\r\n if (this.webSocket && this.webSocket.readyState === this.webSocketConstructor.OPEN) {\r\n this.logger.log(LogLevel.Trace, \"(WebSockets transport) sending data. \" + getDataDetail(data, this.logMessageContent) + \".\");\r\n this.webSocket.send(data);\r\n return Promise.resolve();\r\n }\r\n return Promise.reject(\"WebSocket is not in the OPEN state\");\r\n };\r\n WebSocketTransport.prototype.stop = function () {\r\n if (this.webSocket) {\r\n // Manually invoke onclose callback inline so we know the HttpConnection was closed properly before returning\r\n // This also solves an issue where websocket.onclose could take 18+ seconds to trigger during network disconnects\r\n this.close(undefined);\r\n }\r\n return Promise.resolve();\r\n };\r\n WebSocketTransport.prototype.close = function (event) {\r\n // webSocket will be null if the transport did not start successfully\r\n if (this.webSocket) {\r\n // Clear websocket handlers because we are considering the socket closed now\r\n this.webSocket.onclose = function () { };\r\n this.webSocket.onmessage = function () { };\r\n this.webSocket.onerror = function () { };\r\n this.webSocket.close();\r\n this.webSocket = undefined;\r\n }\r\n this.logger.log(LogLevel.Trace, \"(WebSockets transport) socket closed.\");\r\n if (this.onclose) {\r\n if (event && (event.wasClean === false || event.code !== 1000)) {\r\n this.onclose(new Error(\"WebSocket closed with status code: \" + event.code + \" (\" + event.reason + \").\"));\r\n }\r\n else {\r\n this.onclose();\r\n }\r\n }\r\n };\r\n return WebSocketTransport;\r\n}());\r\nexport { WebSocketTransport };\r\n//# sourceMappingURL=WebSocketTransport.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (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\nvar __generator = (this && this.__generator) || function (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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, 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\nimport { DefaultHttpClient } from \"./DefaultHttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { HttpTransportType, TransferFormat } from \"./ITransport\";\r\nimport { LongPollingTransport } from \"./LongPollingTransport\";\r\nimport { ServerSentEventsTransport } from \"./ServerSentEventsTransport\";\r\nimport { Arg, createLogger, Platform } from \"./Utils\";\r\nimport { WebSocketTransport } from \"./WebSocketTransport\";\r\nvar MAX_REDIRECTS = 100;\r\nvar WebSocketModule = null;\r\nvar EventSourceModule = null;\r\nif (Platform.isNode && typeof require !== \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n var requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n WebSocketModule = requireFunc(\"ws\");\r\n EventSourceModule = requireFunc(\"eventsource\");\r\n}\r\n/** @private */\r\nvar HttpConnection = /** @class */ (function () {\r\n function HttpConnection(url, options) {\r\n if (options === void 0) { options = {}; }\r\n this.features = {};\r\n this.negotiateVersion = 1;\r\n Arg.isRequired(url, \"url\");\r\n this.logger = createLogger(options.logger);\r\n this.baseUrl = this.resolveUrl(url);\r\n options = options || {};\r\n options.logMessageContent = options.logMessageContent || false;\r\n if (!Platform.isNode && typeof WebSocket !== \"undefined\" && !options.WebSocket) {\r\n options.WebSocket = WebSocket;\r\n }\r\n else if (Platform.isNode && !options.WebSocket) {\r\n if (WebSocketModule) {\r\n options.WebSocket = WebSocketModule;\r\n }\r\n }\r\n if (!Platform.isNode && typeof EventSource !== \"undefined\" && !options.EventSource) {\r\n options.EventSource = EventSource;\r\n }\r\n else if (Platform.isNode && !options.EventSource) {\r\n if (typeof EventSourceModule !== \"undefined\") {\r\n options.EventSource = EventSourceModule;\r\n }\r\n }\r\n this.httpClient = options.httpClient || new DefaultHttpClient(this.logger);\r\n this.connectionState = \"Disconnected\" /* Disconnected */;\r\n this.connectionStarted = false;\r\n this.options = options;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n HttpConnection.prototype.start = function (transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var message, message;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n transferFormat = transferFormat || TransferFormat.Binary;\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this.logger.log(LogLevel.Debug, \"Starting connection with transfer format '\" + TransferFormat[transferFormat] + \"'.\");\r\n if (this.connectionState !== \"Disconnected\" /* Disconnected */) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Cannot start an HttpConnection that is not in the 'Disconnected' state.\"))];\r\n }\r\n this.connectionState = \"Connecting \" /* Connecting */;\r\n this.startInternalPromise = this.startInternal(transferFormat);\r\n return [4 /*yield*/, this.startInternalPromise];\r\n case 1:\r\n _a.sent();\r\n if (!(this.connectionState === \"Disconnecting\" /* Disconnecting */)) return [3 /*break*/, 3];\r\n message = \"Failed to start the HttpConnection before stop() was called.\";\r\n this.logger.log(LogLevel.Error, message);\r\n // We cannot await stopPromise inside startInternal since stopInternal awaits the startInternalPromise.\r\n return [4 /*yield*/, this.stopPromise];\r\n case 2:\r\n // We cannot await stopPromise inside startInternal since stopInternal awaits the startInternalPromise.\r\n _a.sent();\r\n return [2 /*return*/, Promise.reject(new Error(message))];\r\n case 3:\r\n if (this.connectionState !== \"Connected\" /* Connected */) {\r\n message = \"HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!\";\r\n this.logger.log(LogLevel.Error, message);\r\n return [2 /*return*/, Promise.reject(new Error(message))];\r\n }\r\n _a.label = 4;\r\n case 4:\r\n this.connectionStarted = true;\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.send = function (data) {\r\n if (this.connectionState !== \"Connected\" /* Connected */) {\r\n return Promise.reject(new Error(\"Cannot send data if the connection is not in the 'Connected' State.\"));\r\n }\r\n if (!this.sendQueue) {\r\n this.sendQueue = new TransportSendQueue(this.transport);\r\n }\r\n // Transport will not be null if state is connected\r\n return this.sendQueue.send(data);\r\n };\r\n HttpConnection.prototype.stop = function (error) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (this.connectionState === \"Disconnected\" /* Disconnected */) {\r\n this.logger.log(LogLevel.Debug, \"Call to HttpConnection.stop(\" + error + \") ignored because the connection is already in the disconnected state.\");\r\n return [2 /*return*/, Promise.resolve()];\r\n }\r\n if (this.connectionState === \"Disconnecting\" /* Disconnecting */) {\r\n this.logger.log(LogLevel.Debug, \"Call to HttpConnection.stop(\" + error + \") ignored because the connection is already in the disconnecting state.\");\r\n return [2 /*return*/, this.stopPromise];\r\n }\r\n this.connectionState = \"Disconnecting\" /* Disconnecting */;\r\n this.stopPromise = new Promise(function (resolve) {\r\n // Don't complete stop() until stopConnection() completes.\r\n _this.stopPromiseResolver = resolve;\r\n });\r\n // stopInternal should never throw so just observe it.\r\n return [4 /*yield*/, this.stopInternal(error)];\r\n case 1:\r\n // stopInternal should never throw so just observe it.\r\n _a.sent();\r\n return [4 /*yield*/, this.stopPromise];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.stopInternal = function (error) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_1, e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n // Set error as soon as possible otherwise there is a race between\r\n // the transport closing and providing an error and the error from a close message\r\n // We would prefer the close message error.\r\n this.stopError = error;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.startInternalPromise];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _a.sent();\r\n return [3 /*break*/, 4];\r\n case 4:\r\n if (!this.transport) return [3 /*break*/, 9];\r\n _a.label = 5;\r\n case 5:\r\n _a.trys.push([5, 7, , 8]);\r\n return [4 /*yield*/, this.transport.stop()];\r\n case 6:\r\n _a.sent();\r\n return [3 /*break*/, 8];\r\n case 7:\r\n e_2 = _a.sent();\r\n this.logger.log(LogLevel.Error, \"HttpConnection.transport.stop() threw error '\" + e_2 + \"'.\");\r\n this.stopConnection();\r\n return [3 /*break*/, 8];\r\n case 8:\r\n this.transport = undefined;\r\n return [3 /*break*/, 10];\r\n case 9:\r\n this.logger.log(LogLevel.Debug, \"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.\");\r\n this.stopConnection();\r\n _a.label = 10;\r\n case 10: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.startInternal = function (transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var url, negotiateResponse, redirects, _loop_1, this_1, e_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n url = this.baseUrl;\r\n this.accessTokenFactory = this.options.accessTokenFactory;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 12, , 13]);\r\n if (!this.options.skipNegotiation) return [3 /*break*/, 5];\r\n if (!(this.options.transport === HttpTransportType.WebSockets)) return [3 /*break*/, 3];\r\n // No need to add a connection ID in this case\r\n this.transport = this.constructTransport(HttpTransportType.WebSockets);\r\n // We should just call connect directly in this case.\r\n // No fallback or negotiate in this case.\r\n return [4 /*yield*/, this.startTransport(url, transferFormat)];\r\n case 2:\r\n // We should just call connect directly in this case.\r\n // No fallback or negotiate in this case.\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3: throw new Error(\"Negotiation can only be skipped when using the WebSocket transport directly.\");\r\n case 4: return [3 /*break*/, 11];\r\n case 5:\r\n negotiateResponse = null;\r\n redirects = 0;\r\n _loop_1 = function () {\r\n var accessToken_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this_1.getNegotiationResponse(url)];\r\n case 1:\r\n negotiateResponse = _a.sent();\r\n // the user tries to stop the connection when it is being started\r\n if (this_1.connectionState === \"Disconnecting\" /* Disconnecting */ || this_1.connectionState === \"Disconnected\" /* Disconnected */) {\r\n throw new Error(\"The connection was stopped during negotiation.\");\r\n }\r\n if (negotiateResponse.error) {\r\n throw new Error(negotiateResponse.error);\r\n }\r\n if (negotiateResponse.ProtocolVersion) {\r\n throw new Error(\"Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.\");\r\n }\r\n if (negotiateResponse.url) {\r\n url = negotiateResponse.url;\r\n }\r\n if (negotiateResponse.accessToken) {\r\n accessToken_1 = negotiateResponse.accessToken;\r\n this_1.accessTokenFactory = function () { return accessToken_1; };\r\n }\r\n redirects++;\r\n return [2 /*return*/];\r\n }\r\n });\r\n };\r\n this_1 = this;\r\n _a.label = 6;\r\n case 6: return [5 /*yield**/, _loop_1()];\r\n case 7:\r\n _a.sent();\r\n _a.label = 8;\r\n case 8:\r\n if (negotiateResponse.url && redirects < MAX_REDIRECTS) return [3 /*break*/, 6];\r\n _a.label = 9;\r\n case 9:\r\n if (redirects === MAX_REDIRECTS && negotiateResponse.url) {\r\n throw new Error(\"Negotiate redirection limit exceeded.\");\r\n }\r\n return [4 /*yield*/, this.createTransport(url, this.options.transport, negotiateResponse, transferFormat)];\r\n case 10:\r\n _a.sent();\r\n _a.label = 11;\r\n case 11:\r\n if (this.transport instanceof LongPollingTransport) {\r\n this.features.inherentKeepAlive = true;\r\n }\r\n if (this.connectionState === \"Connecting \" /* Connecting */) {\r\n // Ensure the connection transitions to the connected state prior to completing this.startInternalPromise.\r\n // start() will handle the case when stop was called and startInternal exits still in the disconnecting state.\r\n this.logger.log(LogLevel.Debug, \"The HttpConnection connected successfully.\");\r\n this.connectionState = \"Connected\" /* Connected */;\r\n }\r\n return [3 /*break*/, 13];\r\n case 12:\r\n e_3 = _a.sent();\r\n this.logger.log(LogLevel.Error, \"Failed to start the connection: \" + e_3);\r\n this.connectionState = \"Disconnected\" /* Disconnected */;\r\n this.transport = undefined;\r\n return [2 /*return*/, Promise.reject(e_3)];\r\n case 13: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.getNegotiationResponse = function (url) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, headers, token, negotiateUrl, response, negotiateResponse, e_4;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!this.accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _b.sent();\r\n if (token) {\r\n headers = (_a = {},\r\n _a[\"Authorization\"] = \"Bearer \" + token,\r\n _a);\r\n }\r\n _b.label = 2;\r\n case 2:\r\n negotiateUrl = this.resolveNegotiateUrl(url);\r\n this.logger.log(LogLevel.Debug, \"Sending negotiation request: \" + negotiateUrl + \".\");\r\n _b.label = 3;\r\n case 3:\r\n _b.trys.push([3, 5, , 6]);\r\n return [4 /*yield*/, this.httpClient.post(negotiateUrl, {\r\n content: \"\",\r\n headers: headers,\r\n })];\r\n case 4:\r\n response = _b.sent();\r\n if (response.statusCode !== 200) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Unexpected status code returned from negotiate \" + response.statusCode))];\r\n }\r\n negotiateResponse = JSON.parse(response.content);\r\n if (!negotiateResponse.negotiateVersion || negotiateResponse.negotiateVersion < 1) {\r\n // Negotiate version 0 doesn't use connectionToken\r\n // So we set it equal to connectionId so all our logic can use connectionToken without being aware of the negotiate version\r\n negotiateResponse.connectionToken = negotiateResponse.connectionId;\r\n }\r\n return [2 /*return*/, negotiateResponse];\r\n case 5:\r\n e_4 = _b.sent();\r\n this.logger.log(LogLevel.Error, \"Failed to complete negotiation with the server: \" + e_4);\r\n return [2 /*return*/, Promise.reject(e_4)];\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.createConnectUrl = function (url, connectionToken) {\r\n if (!connectionToken) {\r\n return url;\r\n }\r\n return url + (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + (\"id=\" + connectionToken);\r\n };\r\n HttpConnection.prototype.createTransport = function (url, requestedTransport, negotiateResponse, requestedTransferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var connectUrl, transportExceptions, transports, negotiate, _i, transports_1, endpoint, transportOrError, ex_1, ex_2, message;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n connectUrl = this.createConnectUrl(url, negotiateResponse.connectionToken);\r\n if (!this.isITransport(requestedTransport)) return [3 /*break*/, 2];\r\n this.logger.log(LogLevel.Debug, \"Connection was provided an instance of ITransport, using that directly.\");\r\n this.transport = requestedTransport;\r\n return [4 /*yield*/, this.startTransport(connectUrl, requestedTransferFormat)];\r\n case 1:\r\n _a.sent();\r\n this.connectionId = negotiateResponse.connectionId;\r\n return [2 /*return*/];\r\n case 2:\r\n transportExceptions = [];\r\n transports = negotiateResponse.availableTransports || [];\r\n negotiate = negotiateResponse;\r\n _i = 0, transports_1 = transports;\r\n _a.label = 3;\r\n case 3:\r\n if (!(_i < transports_1.length)) return [3 /*break*/, 13];\r\n endpoint = transports_1[_i];\r\n transportOrError = this.resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat);\r\n if (!(transportOrError instanceof Error)) return [3 /*break*/, 4];\r\n // Store the error and continue, we don't want to cause a re-negotiate in these cases\r\n transportExceptions.push(endpoint.transport + \" failed: \" + transportOrError);\r\n return [3 /*break*/, 12];\r\n case 4:\r\n if (!this.isITransport(transportOrError)) return [3 /*break*/, 12];\r\n this.transport = transportOrError;\r\n if (!!negotiate) return [3 /*break*/, 9];\r\n _a.label = 5;\r\n case 5:\r\n _a.trys.push([5, 7, , 8]);\r\n return [4 /*yield*/, this.getNegotiationResponse(url)];\r\n case 6:\r\n negotiate = _a.sent();\r\n return [3 /*break*/, 8];\r\n case 7:\r\n ex_1 = _a.sent();\r\n return [2 /*return*/, Promise.reject(ex_1)];\r\n case 8:\r\n connectUrl = this.createConnectUrl(url, negotiate.connectionToken);\r\n _a.label = 9;\r\n case 9:\r\n _a.trys.push([9, 11, , 12]);\r\n return [4 /*yield*/, this.startTransport(connectUrl, requestedTransferFormat)];\r\n case 10:\r\n _a.sent();\r\n this.connectionId = negotiate.connectionId;\r\n return [2 /*return*/];\r\n case 11:\r\n ex_2 = _a.sent();\r\n this.logger.log(LogLevel.Error, \"Failed to start the transport '\" + endpoint.transport + \"': \" + ex_2);\r\n negotiate = undefined;\r\n transportExceptions.push(endpoint.transport + \" failed: \" + ex_2);\r\n if (this.connectionState !== \"Connecting \" /* Connecting */) {\r\n message = \"Failed to select transport before stop() was called.\";\r\n this.logger.log(LogLevel.Debug, message);\r\n return [2 /*return*/, Promise.reject(new Error(message))];\r\n }\r\n return [3 /*break*/, 12];\r\n case 12:\r\n _i++;\r\n return [3 /*break*/, 3];\r\n case 13:\r\n if (transportExceptions.length > 0) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Unable to connect to the server with any of the available transports. \" + transportExceptions.join(\" \")))];\r\n }\r\n return [2 /*return*/, Promise.reject(new Error(\"None of the transports supported by the client are supported by the server.\"))];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.constructTransport = function (transport) {\r\n switch (transport) {\r\n case HttpTransportType.WebSockets:\r\n if (!this.options.WebSocket) {\r\n throw new Error(\"'WebSocket' is not supported in your environment.\");\r\n }\r\n return new WebSocketTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false, this.options.WebSocket);\r\n case HttpTransportType.ServerSentEvents:\r\n if (!this.options.EventSource) {\r\n throw new Error(\"'EventSource' is not supported in your environment.\");\r\n }\r\n return new ServerSentEventsTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false, this.options.EventSource);\r\n case HttpTransportType.LongPolling:\r\n return new LongPollingTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false);\r\n default:\r\n throw new Error(\"Unknown transport: \" + transport + \".\");\r\n }\r\n };\r\n HttpConnection.prototype.startTransport = function (url, transferFormat) {\r\n var _this = this;\r\n this.transport.onreceive = this.onreceive;\r\n this.transport.onclose = function (e) { return _this.stopConnection(e); };\r\n return this.transport.connect(url, transferFormat);\r\n };\r\n HttpConnection.prototype.resolveTransportOrError = function (endpoint, requestedTransport, requestedTransferFormat) {\r\n var transport = HttpTransportType[endpoint.transport];\r\n if (transport === null || transport === undefined) {\r\n this.logger.log(LogLevel.Debug, \"Skipping transport '\" + endpoint.transport + \"' because it is not supported by this client.\");\r\n return new Error(\"Skipping transport '\" + endpoint.transport + \"' because it is not supported by this client.\");\r\n }\r\n else {\r\n if (transportMatches(requestedTransport, transport)) {\r\n var transferFormats = endpoint.transferFormats.map(function (s) { return TransferFormat[s]; });\r\n if (transferFormats.indexOf(requestedTransferFormat) >= 0) {\r\n if ((transport === HttpTransportType.WebSockets && !this.options.WebSocket) ||\r\n (transport === HttpTransportType.ServerSentEvents && !this.options.EventSource)) {\r\n this.logger.log(LogLevel.Debug, \"Skipping transport '\" + HttpTransportType[transport] + \"' because it is not supported in your environment.'\");\r\n return new Error(\"'\" + HttpTransportType[transport] + \"' is not supported in your environment.\");\r\n }\r\n else {\r\n this.logger.log(LogLevel.Debug, \"Selecting transport '\" + HttpTransportType[transport] + \"'.\");\r\n try {\r\n return this.constructTransport(transport);\r\n }\r\n catch (ex) {\r\n return ex;\r\n }\r\n }\r\n }\r\n else {\r\n this.logger.log(LogLevel.Debug, \"Skipping transport '\" + HttpTransportType[transport] + \"' because it does not support the requested transfer format '\" + TransferFormat[requestedTransferFormat] + \"'.\");\r\n return new Error(\"'\" + HttpTransportType[transport] + \"' does not support \" + TransferFormat[requestedTransferFormat] + \".\");\r\n }\r\n }\r\n else {\r\n this.logger.log(LogLevel.Debug, \"Skipping transport '\" + HttpTransportType[transport] + \"' because it was disabled by the client.\");\r\n return new Error(\"'\" + HttpTransportType[transport] + \"' is disabled by the client.\");\r\n }\r\n }\r\n };\r\n HttpConnection.prototype.isITransport = function (transport) {\r\n return transport && typeof (transport) === \"object\" && \"connect\" in transport;\r\n };\r\n HttpConnection.prototype.stopConnection = function (error) {\r\n var _this = this;\r\n this.logger.log(LogLevel.Debug, \"HttpConnection.stopConnection(\" + error + \") called while in state \" + this.connectionState + \".\");\r\n this.transport = undefined;\r\n // If we have a stopError, it takes precedence over the error from the transport\r\n error = this.stopError || error;\r\n this.stopError = undefined;\r\n if (this.connectionState === \"Disconnected\" /* Disconnected */) {\r\n this.logger.log(LogLevel.Debug, \"Call to HttpConnection.stopConnection(\" + error + \") was ignored because the connection is already in the disconnected state.\");\r\n return;\r\n }\r\n if (this.connectionState === \"Connecting \" /* Connecting */) {\r\n this.logger.log(LogLevel.Warning, \"Call to HttpConnection.stopConnection(\" + error + \") was ignored because the connection hasn't yet left the in the connecting state.\");\r\n return;\r\n }\r\n if (this.connectionState === \"Disconnecting\" /* Disconnecting */) {\r\n // A call to stop() induced this call to stopConnection and needs to be completed.\r\n // Any stop() awaiters will be scheduled to continue after the onclose callback fires.\r\n this.stopPromiseResolver();\r\n }\r\n if (error) {\r\n this.logger.log(LogLevel.Error, \"Connection disconnected with error '\" + error + \"'.\");\r\n }\r\n else {\r\n this.logger.log(LogLevel.Information, \"Connection disconnected.\");\r\n }\r\n if (this.sendQueue) {\r\n this.sendQueue.stop().catch(function (e) {\r\n _this.logger.log(LogLevel.Error, \"TransportSendQueue.stop() threw error '\" + e + \"'.\");\r\n });\r\n this.sendQueue = undefined;\r\n }\r\n this.connectionId = undefined;\r\n this.connectionState = \"Disconnected\" /* Disconnected */;\r\n if (this.connectionStarted) {\r\n this.connectionStarted = false;\r\n try {\r\n if (this.onclose) {\r\n this.onclose(error);\r\n }\r\n }\r\n catch (e) {\r\n this.logger.log(LogLevel.Error, \"HttpConnection.onclose(\" + error + \") threw error '\" + e + \"'.\");\r\n }\r\n }\r\n };\r\n HttpConnection.prototype.resolveUrl = function (url) {\r\n // startsWith is not supported in IE\r\n if (url.lastIndexOf(\"https://\", 0) === 0 || url.lastIndexOf(\"http://\", 0) === 0) {\r\n return url;\r\n }\r\n if (!Platform.isBrowser || !window.document) {\r\n throw new Error(\"Cannot resolve '\" + url + \"'.\");\r\n }\r\n // Setting the url to the href propery of an anchor tag handles normalization\r\n // for us. There are 3 main cases.\r\n // 1. Relative path normalization e.g \"b\" -> \"http://localhost:5000/a/b\"\r\n // 2. Absolute path normalization e.g \"/a/b\" -> \"http://localhost:5000/a/b\"\r\n // 3. Networkpath reference normalization e.g \"//localhost:5000/a/b\" -> \"http://localhost:5000/a/b\"\r\n var aTag = window.document.createElement(\"a\");\r\n aTag.href = url;\r\n this.logger.log(LogLevel.Information, \"Normalizing '\" + url + \"' to '\" + aTag.href + \"'.\");\r\n return aTag.href;\r\n };\r\n HttpConnection.prototype.resolveNegotiateUrl = function (url) {\r\n var index = url.indexOf(\"?\");\r\n var negotiateUrl = url.substring(0, index === -1 ? url.length : index);\r\n if (negotiateUrl[negotiateUrl.length - 1] !== \"/\") {\r\n negotiateUrl += \"/\";\r\n }\r\n negotiateUrl += \"negotiate\";\r\n negotiateUrl += index === -1 ? \"\" : url.substring(index);\r\n if (negotiateUrl.indexOf(\"negotiateVersion\") === -1) {\r\n negotiateUrl += index === -1 ? \"?\" : \"&\";\r\n negotiateUrl += \"negotiateVersion=\" + this.negotiateVersion;\r\n }\r\n return negotiateUrl;\r\n };\r\n return HttpConnection;\r\n}());\r\nexport { HttpConnection };\r\nfunction transportMatches(requestedTransport, actualTransport) {\r\n return !requestedTransport || ((actualTransport & requestedTransport) !== 0);\r\n}\r\n/** @private */\r\nvar TransportSendQueue = /** @class */ (function () {\r\n function TransportSendQueue(transport) {\r\n this.transport = transport;\r\n this.buffer = [];\r\n this.executing = true;\r\n this.sendBufferedData = new PromiseSource();\r\n this.transportResult = new PromiseSource();\r\n this.sendLoopPromise = this.sendLoop();\r\n }\r\n TransportSendQueue.prototype.send = function (data) {\r\n this.bufferData(data);\r\n if (!this.transportResult) {\r\n this.transportResult = new PromiseSource();\r\n }\r\n return this.transportResult.promise;\r\n };\r\n TransportSendQueue.prototype.stop = function () {\r\n this.executing = false;\r\n this.sendBufferedData.resolve();\r\n return this.sendLoopPromise;\r\n };\r\n TransportSendQueue.prototype.bufferData = function (data) {\r\n if (this.buffer.length && typeof (this.buffer[0]) !== typeof (data)) {\r\n throw new Error(\"Expected data to be of type \" + typeof (this.buffer) + \" but was of type \" + typeof (data));\r\n }\r\n this.buffer.push(data);\r\n this.sendBufferedData.resolve();\r\n };\r\n TransportSendQueue.prototype.sendLoop = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var transportResult, data, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!true) return [3 /*break*/, 6];\r\n return [4 /*yield*/, this.sendBufferedData.promise];\r\n case 1:\r\n _a.sent();\r\n if (!this.executing) {\r\n if (this.transportResult) {\r\n this.transportResult.reject(\"Connection stopped.\");\r\n }\r\n return [3 /*break*/, 6];\r\n }\r\n this.sendBufferedData = new PromiseSource();\r\n transportResult = this.transportResult;\r\n this.transportResult = undefined;\r\n data = typeof (this.buffer[0]) === \"string\" ?\r\n this.buffer.join(\"\") :\r\n TransportSendQueue.concatBuffers(this.buffer);\r\n this.buffer.length = 0;\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4 /*yield*/, this.transport.send(data)];\r\n case 3:\r\n _a.sent();\r\n transportResult.resolve();\r\n return [3 /*break*/, 5];\r\n case 4:\r\n error_1 = _a.sent();\r\n transportResult.reject(error_1);\r\n return [3 /*break*/, 5];\r\n case 5: return [3 /*break*/, 0];\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n TransportSendQueue.concatBuffers = function (arrayBuffers) {\r\n var totalLength = arrayBuffers.map(function (b) { return b.byteLength; }).reduce(function (a, b) { return a + b; });\r\n var result = new Uint8Array(totalLength);\r\n var offset = 0;\r\n for (var _i = 0, arrayBuffers_1 = arrayBuffers; _i < arrayBuffers_1.length; _i++) {\r\n var item = arrayBuffers_1[_i];\r\n result.set(new Uint8Array(item), offset);\r\n offset += item.byteLength;\r\n }\r\n return result;\r\n };\r\n return TransportSendQueue;\r\n}());\r\nexport { TransportSendQueue };\r\nvar PromiseSource = /** @class */ (function () {\r\n function PromiseSource() {\r\n var _this = this;\r\n this.promise = new Promise(function (resolve, reject) {\r\n var _a;\r\n return _a = [resolve, reject], _this.resolver = _a[0], _this.rejecter = _a[1], _a;\r\n });\r\n }\r\n PromiseSource.prototype.resolve = function () {\r\n this.resolver();\r\n };\r\n PromiseSource.prototype.reject = function (reason) {\r\n this.rejecter(reason);\r\n };\r\n return PromiseSource;\r\n}());\r\n//# sourceMappingURL=HttpConnection.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nvar JSON_HUB_PROTOCOL_NAME = \"json\";\r\n/** Implements the JSON Hub Protocol. */\r\nvar JsonHubProtocol = /** @class */ (function () {\r\n function JsonHubProtocol() {\r\n /** @inheritDoc */\r\n this.name = JSON_HUB_PROTOCOL_NAME;\r\n /** @inheritDoc */\r\n this.version = 1;\r\n /** @inheritDoc */\r\n this.transferFormat = TransferFormat.Text;\r\n }\r\n /** Creates an array of {@link @microsoft/signalr.HubMessage} objects from the specified serialized representation.\r\n *\r\n * @param {string} input A string containing the serialized representation.\r\n * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.\r\n */\r\n JsonHubProtocol.prototype.parseMessages = function (input, logger) {\r\n // The interface does allow \"ArrayBuffer\" to be passed in, but this implementation does not. So let's throw a useful error.\r\n if (typeof input !== \"string\") {\r\n throw new Error(\"Invalid input for JSON hub protocol. Expected a string.\");\r\n }\r\n if (!input) {\r\n return [];\r\n }\r\n if (logger === null) {\r\n logger = NullLogger.instance;\r\n }\r\n // Parse the messages\r\n var messages = TextMessageFormat.parse(input);\r\n var hubMessages = [];\r\n for (var _i = 0, messages_1 = messages; _i < messages_1.length; _i++) {\r\n var message = messages_1[_i];\r\n var parsedMessage = JSON.parse(message);\r\n if (typeof parsedMessage.type !== \"number\") {\r\n throw new Error(\"Invalid payload.\");\r\n }\r\n switch (parsedMessage.type) {\r\n case MessageType.Invocation:\r\n this.isInvocationMessage(parsedMessage);\r\n break;\r\n case MessageType.StreamItem:\r\n this.isStreamItemMessage(parsedMessage);\r\n break;\r\n case MessageType.Completion:\r\n this.isCompletionMessage(parsedMessage);\r\n break;\r\n case MessageType.Ping:\r\n // Single value, no need to validate\r\n break;\r\n case MessageType.Close:\r\n // All optional values, no need to validate\r\n break;\r\n default:\r\n // Future protocol changes can add message types, old clients can ignore them\r\n logger.log(LogLevel.Information, \"Unknown message type '\" + parsedMessage.type + \"' ignored.\");\r\n continue;\r\n }\r\n hubMessages.push(parsedMessage);\r\n }\r\n return hubMessages;\r\n };\r\n /** Writes the specified {@link @microsoft/signalr.HubMessage} to a string and returns it.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {string} A string containing the serialized representation of the message.\r\n */\r\n JsonHubProtocol.prototype.writeMessage = function (message) {\r\n return TextMessageFormat.write(JSON.stringify(message));\r\n };\r\n JsonHubProtocol.prototype.isInvocationMessage = function (message) {\r\n this.assertNotEmptyString(message.target, \"Invalid payload for Invocation message.\");\r\n if (message.invocationId !== undefined) {\r\n this.assertNotEmptyString(message.invocationId, \"Invalid payload for Invocation message.\");\r\n }\r\n };\r\n JsonHubProtocol.prototype.isStreamItemMessage = function (message) {\r\n this.assertNotEmptyString(message.invocationId, \"Invalid payload for StreamItem message.\");\r\n if (message.item === undefined) {\r\n throw new Error(\"Invalid payload for StreamItem message.\");\r\n }\r\n };\r\n JsonHubProtocol.prototype.isCompletionMessage = function (message) {\r\n if (message.result && message.error) {\r\n throw new Error(\"Invalid payload for Completion message.\");\r\n }\r\n if (!message.result && message.error) {\r\n this.assertNotEmptyString(message.error, \"Invalid payload for Completion message.\");\r\n }\r\n this.assertNotEmptyString(message.invocationId, \"Invalid payload for Completion message.\");\r\n };\r\n JsonHubProtocol.prototype.assertNotEmptyString = function (value, errorMessage) {\r\n if (typeof value !== \"string\" || value === \"\") {\r\n throw new Error(errorMessage);\r\n }\r\n };\r\n return JsonHubProtocol;\r\n}());\r\nexport { JsonHubProtocol };\r\n//# sourceMappingURL=JsonHubProtocol.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __assign = (this && this.__assign) || Object.assign || function(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))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\nimport { DefaultReconnectPolicy } from \"./DefaultReconnectPolicy\";\r\nimport { HttpConnection } from \"./HttpConnection\";\r\nimport { HubConnection } from \"./HubConnection\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { JsonHubProtocol } from \"./JsonHubProtocol\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { Arg, ConsoleLogger } from \"./Utils\";\r\n// tslint:disable:object-literal-sort-keys\r\nvar LogLevelNameMapping = {\r\n trace: LogLevel.Trace,\r\n debug: LogLevel.Debug,\r\n info: LogLevel.Information,\r\n information: LogLevel.Information,\r\n warn: LogLevel.Warning,\r\n warning: LogLevel.Warning,\r\n error: LogLevel.Error,\r\n critical: LogLevel.Critical,\r\n none: LogLevel.None,\r\n};\r\nfunction parseLogLevel(name) {\r\n // Case-insensitive matching via lower-casing\r\n // Yes, I know case-folding is a complicated problem in Unicode, but we only support\r\n // the ASCII strings defined in LogLevelNameMapping anyway, so it's fine -anurse.\r\n var mapping = LogLevelNameMapping[name.toLowerCase()];\r\n if (typeof mapping !== \"undefined\") {\r\n return mapping;\r\n }\r\n else {\r\n throw new Error(\"Unknown log level: \" + name);\r\n }\r\n}\r\n/** A builder for configuring {@link @microsoft/signalr.HubConnection} instances. */\r\nvar HubConnectionBuilder = /** @class */ (function () {\r\n function HubConnectionBuilder() {\r\n }\r\n HubConnectionBuilder.prototype.configureLogging = function (logging) {\r\n Arg.isRequired(logging, \"logging\");\r\n if (isLogger(logging)) {\r\n this.logger = logging;\r\n }\r\n else if (typeof logging === \"string\") {\r\n var logLevel = parseLogLevel(logging);\r\n this.logger = new ConsoleLogger(logLevel);\r\n }\r\n else {\r\n this.logger = new ConsoleLogger(logging);\r\n }\r\n return this;\r\n };\r\n HubConnectionBuilder.prototype.withUrl = function (url, transportTypeOrOptions) {\r\n Arg.isRequired(url, \"url\");\r\n this.url = url;\r\n // Flow-typing knows where it's at. Since HttpTransportType is a number and IHttpConnectionOptions is guaranteed\r\n // to be an object, we know (as does TypeScript) this comparison is all we need to figure out which overload was called.\r\n if (typeof transportTypeOrOptions === \"object\") {\r\n this.httpConnectionOptions = __assign({}, this.httpConnectionOptions, transportTypeOrOptions);\r\n }\r\n else {\r\n this.httpConnectionOptions = __assign({}, this.httpConnectionOptions, { transport: transportTypeOrOptions });\r\n }\r\n return this;\r\n };\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use the specified Hub Protocol.\r\n *\r\n * @param {IHubProtocol} protocol The {@link @microsoft/signalr.IHubProtocol} implementation to use.\r\n */\r\n HubConnectionBuilder.prototype.withHubProtocol = function (protocol) {\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.protocol = protocol;\r\n return this;\r\n };\r\n HubConnectionBuilder.prototype.withAutomaticReconnect = function (retryDelaysOrReconnectPolicy) {\r\n if (this.reconnectPolicy) {\r\n throw new Error(\"A reconnectPolicy has already been set.\");\r\n }\r\n if (!retryDelaysOrReconnectPolicy) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy();\r\n }\r\n else if (Array.isArray(retryDelaysOrReconnectPolicy)) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy(retryDelaysOrReconnectPolicy);\r\n }\r\n else {\r\n this.reconnectPolicy = retryDelaysOrReconnectPolicy;\r\n }\r\n return this;\r\n };\r\n /** Creates a {@link @microsoft/signalr.HubConnection} from the configuration options specified in this builder.\r\n *\r\n * @returns {HubConnection} The configured {@link @microsoft/signalr.HubConnection}.\r\n */\r\n HubConnectionBuilder.prototype.build = function () {\r\n // If httpConnectionOptions has a logger, use it. Otherwise, override it with the one\r\n // provided to configureLogger\r\n var httpConnectionOptions = this.httpConnectionOptions || {};\r\n // If it's 'null', the user **explicitly** asked for null, don't mess with it.\r\n if (httpConnectionOptions.logger === undefined) {\r\n // If our logger is undefined or null, that's OK, the HttpConnection constructor will handle it.\r\n httpConnectionOptions.logger = this.logger;\r\n }\r\n // Now create the connection\r\n if (!this.url) {\r\n throw new Error(\"The 'HubConnectionBuilder.withUrl' method must be called before building the connection.\");\r\n }\r\n var connection = new HttpConnection(this.url, httpConnectionOptions);\r\n return HubConnection.create(connection, this.logger || NullLogger.instance, this.protocol || new JsonHubProtocol(), this.reconnectPolicy);\r\n };\r\n return HubConnectionBuilder;\r\n}());\r\nexport { HubConnectionBuilder };\r\nfunction isLogger(logger) {\r\n return logger.log !== undefined;\r\n}\r\n//# sourceMappingURL=HubConnectionBuilder.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var 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 return function (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\n/** Error thrown when an HTTP request fails. */\r\nvar HttpError = /** @class */ (function (_super) {\r\n __extends(HttpError, _super);\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n * @param {number} statusCode The HTTP status code represented by this error.\r\n */\r\n function HttpError(errorMessage, statusCode) {\r\n var _newTarget = this.constructor;\r\n var _this = this;\r\n var trueProto = _newTarget.prototype;\r\n _this = _super.call(this, errorMessage) || this;\r\n _this.statusCode = statusCode;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n _this.__proto__ = trueProto;\r\n return _this;\r\n }\r\n return HttpError;\r\n}(Error));\r\nexport { HttpError };\r\n/** Error thrown when a timeout elapses. */\r\nvar TimeoutError = /** @class */ (function (_super) {\r\n __extends(TimeoutError, _super);\r\n /** Constructs a new instance of {@link @microsoft/signalr.TimeoutError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n function TimeoutError(errorMessage) {\r\n var _newTarget = this.constructor;\r\n if (errorMessage === void 0) { errorMessage = \"A timeout occurred.\"; }\r\n var _this = this;\r\n var trueProto = _newTarget.prototype;\r\n _this = _super.call(this, errorMessage) || this;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n _this.__proto__ = trueProto;\r\n return _this;\r\n }\r\n return TimeoutError;\r\n}(Error));\r\nexport { TimeoutError };\r\n/** Error thrown when an action is aborted. */\r\nvar AbortError = /** @class */ (function (_super) {\r\n __extends(AbortError, _super);\r\n /** Constructs a new instance of {@link AbortError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n function AbortError(errorMessage) {\r\n var _newTarget = this.constructor;\r\n if (errorMessage === void 0) { errorMessage = \"An abort occurred.\"; }\r\n var _this = this;\r\n var trueProto = _newTarget.prototype;\r\n _this = _super.call(this, errorMessage) || this;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n _this.__proto__ = trueProto;\r\n return _this;\r\n }\r\n return AbortError;\r\n}(Error));\r\nexport { AbortError };\r\n//# sourceMappingURL=Errors.js.map"],"sourceRoot":""}