{"version":3,"sources":["webpack:///./node_modules/@microsoft/signalr/dist/esm/ILogger.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js","webpack:///./src/plugin/signalr.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/Utils.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/Loggers.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/Errors.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/HttpClient.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/Subject.js","webpack:///./node_modules/@microsoft/signalr/dist/esm/HubConnection.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"],"names":["LogLevel","TextMessageFormat","write","output","RecordSeparator","parse","input","length","Error","messages","split","pop","RecordSeparatorCode","String","fromCharCode","signalR","require","data","myConnectionId","counter","signalRInfo","url","token","options","accessTokenFactory","connection","HubConnectionBuilder","withUrl","configureLogging","Information","build","on","onMessage","onConnected","onDisconnected","onConnectionSlow","onclose","start","then","catch","setTimeout","message","id","Timestamp","Math","floor","Date","now","unshift","ConnectionId","HandshakeProtocol","prototype","writeHandshakeRequest","handshakeRequest","JSON","stringify","parseHandshakeResponse","responseMessage","messageData","remainingData","Buffer","binaryData","Uint8Array","separatorIndex","indexOf","responseLength","apply","slice","byteLength","buffer","textData","substring","response","type","__assign","Object","assign","t","s","i","n","arguments","p","hasOwnProperty","call","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","__generator","body","f","y","g","_","label","sent","trys","ops","verb","Symbol","iterator","this","v","op","TypeError","push","VERSION","Arg","isRequired","val","name","undefined","isNotEmpty","match","isIn","values","Platform","defineProperty","get","window","enumerable","configurable","self","isBrowser","isWebWorker","getDataDetail","includeContent","detail","isArrayBuffer","formatArrayBuffer","view","str","forEach","num","pad","toString","substr","ArrayBuffer","constructor","sendMessage","logger","transportName","httpClient","content","logMessageContent","withCredentials","defaultHeaders","_a","headers","_b","responseType","_c","getUserAgentHeader","log","Trace","post","statusCode","createLogger","ConsoleLogger","instance","SubjectSubscription","subject","observer","dispose","index","observers","splice","cancelCallback","minimumLogLevel","outputConsole","console","logLevel","Critical","error","toISOString","Warning","warn","info","userAgentHeaderName","isNode","constructUserAgent","getOsName","getRuntime","getRuntimeVersion","version","os","runtime","runtimeVersion","userAgent","majorAndMinor","process","platform","versions","node","NullLogger","_logLevel","_message","__extends","extendStatics","setPrototypeOf","__proto__","Array","d","b","__","create","HttpError","_super","errorMessage","_newTarget","_this","trueProto","TimeoutError","AbortError","HttpResponse","statusText","HttpClient","send","method","delete","getCookieString","FetchHttpClient","fetch","requireFunc","jar","CookieJar","fetchType","abortControllerType","bind","AbortController","request","abortController","timeoutId","msTimeout","e_1","payload","abortSignal","aborted","onabort","abort","timeout","cache","credentials","mode","redirect","signal","clearTimeout","ok","status","deserializeContent","cookies","getCookies","c","join","arrayBuffer","text","MessageType","XhrHttpClient","xhr","XMLHttpRequest","open","setRequestHeader","keys","header","onload","responseText","onerror","ontimeout","DefaultHttpClient","HubConnectionState","Subject","item","_i","err","complete","subscribe","DEFAULT_TIMEOUT_IN_MS","DEFAULT_PING_INTERVAL_IN_MS","HttpTransportType","TransferFormat","HubConnection","protocol","reconnectPolicy","nextKeepAlive","serverTimeoutInMilliseconds","keepAliveIntervalInMilliseconds","handshakeProtocol","onreceive","processIncomingData","connectionClosed","callbacks","methods","closedCallbacks","reconnectingCallbacks","reconnectedCallbacks","invocationId","receivedHandshakeResponse","connectionState","Disconnected","connectionStarted","cachedPingMessage","writeMessage","Ping","connectionId","baseUrl","set","Reconnecting","startPromise","startWithStateTransitions","Connecting","Debug","startInternal","Connected","handshakePromise","e_2","stopDuringStartError","handshakeResolver","handshakeRejecter","transferFormat","cleanupTimeout","resetTimeoutPeriod","resetKeepAliveInterval","cleanupPingTimer","stop","stopPromise","stopInternal","Disconnecting","reconnectDelayHandle","completeClose","stream","methodName","args","promiseQueue","replaceStreamingParams","streams","streamIds","invocationDescriptor","createStreamInvocation","cancelInvocation","createCancelInvocation","sendWithProtocol","invocationEvent","Completion","launchStreams","sendPromise","createInvocation","invoke","newMethod","toLowerCase","off","handlers","removeIdx","callback","onreconnecting","onreconnected","processHandshakeResponse","parseMessages","messages_1","Invocation","invokeClientMethod","StreamItem","Close","allowReconnect","features","inherentKeepAlive","getTime","timeoutHandle","serverTimeout","pingServerHandle","nextPing","invocationMessage","target","m","cancelCallbacksWithError","reconnect","reconnectStartTime","previousReconnectAttempts","retryError","nextRetryDelay","e_4","getNextRetryDelay","previousRetryCount","elapsedMilliseconds","retryReason","nextRetryDelayInMilliseconds","key","nonblocking","_loop_1","streamId","createCompletionMessage","createStreamItemMessage","argument","isObservable","arg","StreamInvocation","CancelInvocation","DEFAULT_RETRY_DELAYS_IN_MILLISECONDS","DefaultReconnectPolicy","retryDelays","concat","retryContext","isAborted","LongPollingTransport","pollAbort","running","connect","pollOptions","pollUrl","Binary","getAccessToken","updateHeaderToken","closeError","receiving","poll","pollAborted","raiseOnClose","name_1","deleteOptions","logMessage","ServerSentEventsTransport","eventSourceConstructor","encodeURIComponent","opened","Text","eventSource","Cookie","onmessage","close","onopen","WebSocketTransport","webSocketConstructor","webSocket","replace","binaryType","_event","event","ErrorEvent","readyState","OPEN","isCloseEvent","wasClean","code","reason","MAX_REDIRECTS","HttpConnection","stopPromiseResolver","negotiateVersion","resolveUrl","webSocketModule","eventSourceModule","WebSocket","EventSource","startInternalPromise","sendQueue","TransportSendQueue","transport","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","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","LogLevelNameMapping","trace","debug","information","warning","critical","none","None","parseLogLevel","mapping","logging","isLogger","transportTypeOrOptions","httpConnectionOptions","withHubProtocol","withAutomaticReconnect","retryDelaysOrReconnectPolicy","isArray"],"mappings":"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","file":"js/chunk-6a443172.6559a148.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","const signalR = require(\"@microsoft/signalr\");\r\nconst data = {\r\n myConnectionId:'',\r\n messages:[],\r\n};\r\nlet counter = 0;\r\nfunction signalRInfo(url,token){\r\n console.log(url,'连接地址')\r\n console.log(token)\r\n const options = {\r\n accessTokenFactory: () => token\r\n };\r\n const connection = new signalR.HubConnectionBuilder()\r\n .withUrl(url,options)\r\n .configureLogging(signalR.LogLevel.Information)\r\n .build();\r\n connection.on('onMessage', onMessage);\r\n connection.on('onConnected', onConnected);\r\n connection.on('onDisconnected', onDisconnected);\r\n connection.on('connectionSlow', onConnectionSlow);\r\n connection.onclose(() => {\r\n console.log('close connection')\r\n connection.start()\r\n .then(() => console.log('re-connection!'))\r\n .catch(setTimeout(() => connection.start(), 5000));\r\n }\r\n );\r\n console.log('connecting...');\r\n connection.start()\r\n .then(() => console.log('connected!'))\r\n .catch(console.log('Start connect fail!!'));\r\n}\r\nfunction getAxiosConfig(userName,channel) {\r\n const config = {\r\n headers: { 'X-Auth-UserID': data.username,'X-Auth-Channel': data.channel }\t \r\n };\r\n return config;\r\n }\r\nfunction sendMessage(sender, to, groupname, messageText,url) {\r\n return axios.post(url+`/messages`, {\r\n connectionId: data.myConnectionId,\r\n to: [to],\r\n isPrivate: to != null,\r\n groupname: groupname,\r\n sender: sender,\r\n text: JSON.stringify({ \r\n MT: 'N',\r\n TM: Math.floor(Date.now()),\r\n PL: messageText,\r\n })\r\n }, getAxiosConfig()).then(resp => resp.data);\r\n }\r\n function sendAck(sender, to, groupname, timestamp) {\r\n return axios.post(`${data.channelApiUrl}/messages`, {\r\n connectionId: data.myConnectionId,\r\n to: [to],\r\n isPrivate: to != null,\r\n groupname: groupname,\r\n sender: sender,\r\n text: JSON.stringify({ \r\n MT: 'A',\r\n TM: timestamp,\r\n TM2: Math.floor(Date.now())\r\n })\r\n }, getAxiosConfig()).then(resp => resp.data);\r\n }\r\nfunction onMessage(message) {\r\n console.log(message, '收到消息!!!!')\r\n message.id = counter++; // vue transitions need an id\r\n message.Timestamp = Math.floor(Date.now())\r\n data.messages.unshift(message);\r\n //hostMessageHandler(message)\r\n };\r\n function onConnected(message) {\r\n data.myConnectionId = message.ConnectionId;\r\n // message.id = counter++; // vue transitions need an id\r\n // data.messages.unshift(message);\r\n }\r\n\r\n function onDisconnected(message) {\r\n data.myConnectionId = message.ConnectionId;\r\n message.id = counter++; // vue transitions need an id\r\n data.messages.unshift(message);\r\n }\r\n\r\n function onConnectionSlow(message) {\r\n console.log('Slow Connecgtion!')\r\n }\r\n\r\n// function hostMessageHandler(message) {\r\n// if(message.Sender) {\r\n// const m = JSON.parse(message.Text)\r\n// if(m.TM && m.MT=='N') sendAck(data.username, message.Sender, null, m.TM);\r\n// }\r\n// return(null)\r\n// }\r\nexport{signalRInfo,sendMessage,onConnected,data}\r\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\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 __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\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// Version token that will be replaced by the prepack command\r\n/** The version of the SignalR client. */\r\nexport var VERSION = \"5.0.17\";\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.isNotEmpty = function (val, name) {\r\n if (!val || val.match(/^\\s*$/)) {\r\n throw new Error(\"The '\" + name + \"' argument should not be empty.\");\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, withCredentials, defaultHeaders) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, headers, token, _b, name, value, responseType, response;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n headers = {};\r\n if (!accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, accessTokenFactory()];\r\n case 1:\r\n token = _c.sent();\r\n if (token) {\r\n headers = (_a = {},\r\n _a[\"Authorization\"] = \"Bearer \" + token,\r\n _a);\r\n }\r\n _c.label = 2;\r\n case 2:\r\n _b = getUserAgentHeader(), name = _b[0], value = _b[1];\r\n headers[name] = value;\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: __assign({}, headers, defaultHeaders),\r\n responseType: responseType,\r\n withCredentials: withCredentials,\r\n })];\r\n case 3:\r\n response = _c.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/** @private */\r\nexport function getUserAgentHeader() {\r\n var userAgentHeaderName = \"X-SignalR-User-Agent\";\r\n if (Platform.isNode) {\r\n userAgentHeaderName = \"User-Agent\";\r\n }\r\n return [userAgentHeaderName, constructUserAgent(VERSION, getOsName(), getRuntime(), getRuntimeVersion())];\r\n}\r\n/** @private */\r\nexport function constructUserAgent(version, os, runtime, runtimeVersion) {\r\n // Microsoft SignalR/[Version] ([Detailed Version]; [Operating System]; [Runtime]; [Runtime Version])\r\n var userAgent = \"Microsoft SignalR/\";\r\n var majorAndMinor = version.split(\".\");\r\n userAgent += majorAndMinor[0] + \".\" + majorAndMinor[1];\r\n userAgent += \" (\" + version + \"; \";\r\n if (os && os !== \"\") {\r\n userAgent += os + \"; \";\r\n }\r\n else {\r\n userAgent += \"Unknown OS; \";\r\n }\r\n userAgent += \"\" + runtime;\r\n if (runtimeVersion) {\r\n userAgent += \"; \" + runtimeVersion;\r\n }\r\n else {\r\n userAgent += \"; Unknown Runtime Version\";\r\n }\r\n userAgent += \")\";\r\n return userAgent;\r\n}\r\nfunction getOsName() {\r\n if (Platform.isNode) {\r\n switch (process.platform) {\r\n case \"win32\":\r\n return \"Windows NT\";\r\n case \"darwin\":\r\n return \"macOS\";\r\n case \"linux\":\r\n return \"Linux\";\r\n default:\r\n return process.platform;\r\n }\r\n }\r\n else {\r\n return \"\";\r\n }\r\n}\r\nfunction getRuntimeVersion() {\r\n if (Platform.isNode) {\r\n return process.versions.node;\r\n }\r\n return undefined;\r\n}\r\nfunction getRuntime() {\r\n if (Platform.isNode) {\r\n return \"NodeJS\";\r\n }\r\n else {\r\n return \"Browser\";\r\n }\r\n}\r\n//# sourceMappingURL=Utils.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/** 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\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","// 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\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 { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { Platform } from \"./Utils\";\r\nvar FetchHttpClient = /** @class */ (function (_super) {\r\n __extends(FetchHttpClient, _super);\r\n function FetchHttpClient(logger) {\r\n var _this = _super.call(this) || this;\r\n _this.logger = logger;\r\n if (typeof fetch === \"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 // Cookies aren't automatically handled in Node so we need to add a CookieJar to preserve cookies across requests\r\n _this.jar = new (requireFunc(\"tough-cookie\")).CookieJar();\r\n _this.fetchType = requireFunc(\"node-fetch\");\r\n // node-fetch doesn't have a nice API for getting and setting cookies\r\n // fetch-cookie will wrap a fetch implementation with a default CookieJar or a provided one\r\n _this.fetchType = requireFunc(\"fetch-cookie\")(_this.fetchType, _this.jar);\r\n // Node needs EventListener methods on AbortController which our custom polyfill doesn't provide\r\n _this.abortControllerType = requireFunc(\"abort-controller\");\r\n }\r\n else {\r\n _this.fetchType = fetch.bind(self);\r\n _this.abortControllerType = AbortController;\r\n }\r\n return _this;\r\n }\r\n /** @inheritDoc */\r\n FetchHttpClient.prototype.send = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var abortController, error, timeoutId, msTimeout, response, e_1, content, payload;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n throw new AbortError();\r\n }\r\n if (!request.method) {\r\n throw new Error(\"No method defined.\");\r\n }\r\n if (!request.url) {\r\n throw new Error(\"No url defined.\");\r\n }\r\n abortController = new this.abortControllerType();\r\n // Hook our abortSignal into the abort controller\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = function () {\r\n abortController.abort();\r\n error = new AbortError();\r\n };\r\n }\r\n timeoutId = null;\r\n if (request.timeout) {\r\n msTimeout = request.timeout;\r\n timeoutId = setTimeout(function () {\r\n abortController.abort();\r\n _this.logger.log(LogLevel.Warning, \"Timeout from HTTP request.\");\r\n error = new TimeoutError();\r\n }, msTimeout);\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, 4, 5]);\r\n return [4 /*yield*/, this.fetchType(request.url, {\r\n body: request.content,\r\n cache: \"no-cache\",\r\n credentials: request.withCredentials === true ? \"include\" : \"same-origin\",\r\n headers: __assign({ \"Content-Type\": \"text/plain;charset=UTF-8\", \"X-Requested-With\": \"XMLHttpRequest\" }, request.headers),\r\n method: request.method,\r\n mode: \"cors\",\r\n redirect: \"manual\",\r\n signal: abortController.signal,\r\n })];\r\n case 2:\r\n response = _a.sent();\r\n return [3 /*break*/, 5];\r\n case 3:\r\n e_1 = _a.sent();\r\n if (error) {\r\n throw error;\r\n }\r\n this.logger.log(LogLevel.Warning, \"Error from HTTP request. \" + e_1 + \".\");\r\n throw e_1;\r\n case 4:\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n return [7 /*endfinally*/];\r\n case 5:\r\n if (!response.ok) {\r\n throw new HttpError(response.statusText, response.status);\r\n }\r\n content = deserializeContent(response, request.responseType);\r\n return [4 /*yield*/, content];\r\n case 6:\r\n payload = _a.sent();\r\n return [2 /*return*/, new HttpResponse(response.status, response.statusText, payload)];\r\n }\r\n });\r\n });\r\n };\r\n FetchHttpClient.prototype.getCookieString = function (url) {\r\n var cookies = \"\";\r\n if (Platform.isNode && this.jar) {\r\n // @ts-ignore: unused variable\r\n this.jar.getCookies(url, function (e, c) { return cookies = c.join(\"; \"); });\r\n }\r\n return cookies;\r\n };\r\n return FetchHttpClient;\r\n}(HttpClient));\r\nexport { FetchHttpClient };\r\nfunction deserializeContent(response, responseType) {\r\n var content;\r\n switch (responseType) {\r\n case \"arraybuffer\":\r\n content = response.arrayBuffer();\r\n break;\r\n case \"text\":\r\n content = response.text();\r\n break;\r\n case \"blob\":\r\n case \"document\":\r\n case \"json\":\r\n throw new Error(responseType + \" is not supported.\");\r\n default:\r\n content = response.text();\r\n break;\r\n }\r\n return content;\r\n}\r\n//# sourceMappingURL=FetchHttpClient.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 = request.withCredentials === undefined ? true : request.withCredentials;\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\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 } from \"./Errors\";\r\nimport { FetchHttpClient } from \"./FetchHttpClient\";\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { Platform } from \"./Utils\";\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 fetch !== \"undefined\" || Platform.isNode) {\r\n _this.httpClient = new FetchHttpClient(logger);\r\n }\r\n else if (typeof XMLHttpRequest !== \"undefined\") {\r\n _this.httpClient = new XhrHttpClient(logger);\r\n }\r\n else {\r\n throw new Error(\"No usable HttpClient found.\");\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\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\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 this.nextKeepAlive = 0;\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 if (this.connection.features.inherentKeepAlive) {\r\n return;\r\n }\r\n // Set the time we want the next keep alive to be sent\r\n // Timer will be setup on next message receive\r\n this.nextKeepAlive = new Date().getTime() + this.keepAliveIntervalInMilliseconds;\r\n this.cleanupPingTimer();\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 // Set keepAlive timer if there isn't one\r\n if (this.pingServerHandle === undefined) {\r\n var nextPing = this.nextKeepAlive - new Date().getTime();\r\n if (nextPing < 0) {\r\n nextPing = 0;\r\n }\r\n // The timer needs to be set from a networking callback to avoid Chrome timer throttling from causing timers to run once a minute\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 }); }, nextPing);\r\n }\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 moved to the '\" + this.connectionState + \"' from the reconnecting state during reconnect attempt. Done reconnecting.\");\r\n // The TypeScript compiler thinks that connectionState must be Connected here. The TypeScript compiler is wrong.\r\n if (this.connectionState === HubConnectionState.Disconnecting) {\r\n this.completeClose();\r\n }\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 this.pingServerHandle = undefined;\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 if (streamIds.length !== 0) {\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 return {\r\n arguments: args,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n }\r\n else {\r\n var invocationId = this.invocationId;\r\n this.invocationId++;\r\n if (streamIds.length !== 0) {\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 else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\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 if (streamIds.length !== 0) {\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 else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\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\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 __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\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, getUserAgentHeader, 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, withCredentials, headers) {\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.withCredentials = withCredentials;\r\n this.headers = headers;\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 _a, _b, name, value, headers, pollOptions, token, pollUrl, response;\r\n return __generator(this, function (_c) {\r\n switch (_c.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 _b = getUserAgentHeader(), name = _b[0], value = _b[1];\r\n headers = __assign((_a = {}, _a[name] = value, _a), this.headers);\r\n pollOptions = {\r\n abortSignal: this.pollAbort.signal,\r\n headers: headers,\r\n timeout: 100000,\r\n withCredentials: this.withCredentials,\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 = _c.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 = _c.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, this.withCredentials, this.headers)];\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 headers, _a, name_1, value, deleteOptions, token;\r\n return __generator(this, function (_b) {\r\n switch (_b.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 _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, , 5, 6]);\r\n return [4 /*yield*/, this.receiving];\r\n case 2:\r\n _b.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 headers = {};\r\n _a = getUserAgentHeader(), name_1 = _a[0], value = _a[1];\r\n headers[name_1] = value;\r\n deleteOptions = {\r\n headers: __assign({}, headers, this.headers),\r\n withCredentials: this.withCredentials,\r\n };\r\n return [4 /*yield*/, this.getAccessToken()];\r\n case 3:\r\n token = _b.sent();\r\n this.updateHeaderToken(deleteOptions, token);\r\n return [4 /*yield*/, this.httpClient.delete(this.url, deleteOptions)];\r\n case 4:\r\n _b.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 __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\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, getUserAgentHeader, Platform, sendMessage } from \"./Utils\";\r\n/** @private */\r\nvar ServerSentEventsTransport = /** @class */ (function () {\r\n function ServerSentEventsTransport(httpClient, accessTokenFactory, logger, logMessageContent, eventSourceConstructor, withCredentials, headers) {\r\n this.httpClient = httpClient;\r\n this.accessTokenFactory = accessTokenFactory;\r\n this.logger = logger;\r\n this.logMessageContent = logMessageContent;\r\n this.withCredentials = withCredentials;\r\n this.eventSourceConstructor = eventSourceConstructor;\r\n this.headers = headers;\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: _this.withCredentials });\r\n }\r\n else {\r\n // Non-browser passes cookies via the dictionary\r\n var cookies = _this.httpClient.getCookieString(url);\r\n var headers = {};\r\n headers.Cookie = cookies;\r\n var _a = getUserAgentHeader(), name_1 = _a[0], value = _a[1];\r\n headers[name_1] = value;\r\n eventSource = new _this.eventSourceConstructor(url, { withCredentials: _this.withCredentials, headers: __assign({}, headers, _this.headers) });\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, this.withCredentials, this.headers)];\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 __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\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, getUserAgentHeader, Platform } from \"./Utils\";\r\n/** @private */\r\nvar WebSocketTransport = /** @class */ (function () {\r\n function WebSocketTransport(httpClient, accessTokenFactory, logger, logMessageContent, webSocketConstructor, headers) {\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 this.headers = headers;\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) {\r\n var headers = {};\r\n var _a = getUserAgentHeader(), name_1 = _a[0], value = _a[1];\r\n headers[name_1] = value;\r\n if (cookies) {\r\n headers[\"Cookie\"] = \"\" + cookies;\r\n }\r\n // Only pass headers when in non-browser environments\r\n webSocket = new _this.webSocketConstructor(url, undefined, {\r\n headers: __assign({}, headers, _this.headers),\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 try {\r\n _this.onreceive(message.data);\r\n }\r\n catch (error) {\r\n _this.close(error);\r\n return;\r\n }\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 (this.isCloseEvent(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 if (event instanceof Error) {\r\n this.onclose(event);\r\n }\r\n else {\r\n this.onclose();\r\n }\r\n }\r\n };\r\n WebSocketTransport.prototype.isCloseEvent = function (event) {\r\n return event && typeof event.wasClean === \"boolean\" && typeof event.code === \"number\";\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 __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\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, getUserAgentHeader, Platform } from \"./Utils\";\r\nimport { WebSocketTransport } from \"./WebSocketTransport\";\r\nvar MAX_REDIRECTS = 100;\r\n/** @private */\r\nvar HttpConnection = /** @class */ (function () {\r\n function HttpConnection(url, options) {\r\n if (options === void 0) { options = {}; }\r\n this.stopPromiseResolver = function () { };\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 === undefined ? false : options.logMessageContent;\r\n if (typeof options.withCredentials === \"boolean\" || options.withCredentials === undefined) {\r\n options.withCredentials = options.withCredentials === undefined ? true : options.withCredentials;\r\n }\r\n else {\r\n throw new Error(\"withCredentials option was not a 'boolean' or 'undefined' value\");\r\n }\r\n var webSocketModule = null;\r\n var eventSourceModule = null;\r\n if (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 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 _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 // if start fails, any active calls to stop assume that start will complete the stop promise\r\n this.stopPromiseResolver();\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 headers, token, _a, name, value, negotiateUrl, response, negotiateResponse, e_4;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n headers = {};\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[\"Authorization\"] = \"Bearer \" + token;\r\n }\r\n _b.label = 2;\r\n case 2:\r\n _a = getUserAgentHeader(), name = _a[0], value = _a[1];\r\n headers[name] = value;\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: __assign({}, headers, this.options.headers),\r\n withCredentials: this.options.withCredentials,\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, this.options.headers || {});\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, this.options.withCredentials, this.options.headers || {});\r\n case HttpTransportType.LongPolling:\r\n return new LongPollingTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false, this.options.withCredentials, this.options.headers || {});\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 is still in the connecting state.\");\r\n throw new Error(\"HttpConnection.stopConnection(\" + error + \") was called while the connection is still in the connecting state.\");\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.buffer;\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 Arg.isNotEmpty(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"],"sourceRoot":""}