{"version":3,"sources":["webpack:///./node_modules/@aspnet/signalr/dist/esm/Errors.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/ILogger.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/HttpClient.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/TextMessageFormat.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/Loggers.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/Utils.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/HandshakeProtocol.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/IHubProtocol.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/HubConnection.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/ITransport.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/AbortController.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/LongPollingTransport.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/ServerSentEventsTransport.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/WebSocketTransport.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/HttpConnection.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/JsonHubProtocol.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/HubConnectionBuilder.js"],"names":["LogLevel","__extends","extendStatics","Object","setPrototypeOf","__proto__","Array","d","b","p","hasOwnProperty","__","this","constructor","prototype","create","HttpError","_super","errorMessage","statusCode","_newTarget","_this","trueProto","call","Error","TimeoutError","__assign","assign","t","s","i","n","arguments","length","HttpResponse","statusText","content","HttpClient","get","url","options","send","method","post","delete","DefaultHttpClient","logger","request","Promise","resolve","reject","xhr","XMLHttpRequest","open","withCredentials","setRequestHeader","headers","keys","forEach","header","responseType","abortSignal","onabort","abort","timeout","onload","status","response","responseText","onerror","log","Warning","ontimeout","TextMessageFormat","write","output","RecordSeparator","parse","input","messages","split","pop","RecordSeparatorCode","String","fromCharCode","NullLogger","_logLevel","_message","instance","__awaiter","thisArg","_arguments","P","generator","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","g","_","label","sent","trys","ops","verb","Symbol","iterator","v","op","TypeError","push","Arg","isRequired","val","name","undefined","isIn","values","getDataDetail","data","includeContent","isArrayBuffer","byteLength","formatArrayBuffer","view","Uint8Array","str","num","pad","toString","substr","sendMessage","transportName","httpClient","accessTokenFactory","logMessageContent","_a","token","_b","Trace","createLogger","Information","Subject","cancelCallback","observers","item","_i","observer","error","err","complete","subscribe","SubjectSubscription","subject","dispose","index","indexOf","splice","catch","ConsoleLogger","minimumLogLevel","logLevel","message","Critical","console","warn","info","ArrayBuffer","MessageType","HandshakeProtocol","writeHandshakeRequest","handshakeRequest","JSON","stringify","parseHandshakeResponse","responseMessage","messageData","remainingData","binaryData","separatorIndex","responseLength","slice","buffer","textData","substring","HttpTransportType","TransferFormat","DEFAULT_TIMEOUT_IN_MS","HubConnection","connection","protocol","serverTimeoutInMilliseconds","handshakeProtocol","onreceive","processIncomingData","onclose","connectionClosed","callbacks","methods","closedCallbacks","id","start","version","Debug","receivedHandshakeResponse","transferFormat","cleanupTimeout","configureTimeout","stop","stream","methodName","args","invocationDescriptor","createStreamInvocation","cancelInvocation","createCancelInvocation","invocationId","cancelMessage","writeMessage","invocationEvent","type","Completion","createInvocation","invoke","completionMessage","on","newMethod","toLowerCase","off","handlers","removeIdx","callback","processHandshakeResponse","parseMessages","messages_1","Invocation","invokeClientMethod","StreamItem","Ping","Close","features","inherentKeepAlive","timeoutHandle","setTimeout","serverTimeout","invocationMessage","target","m","key","c","clearTimeout","nonblocking","StreamInvocation","CancelInvocation","AbortController","isAborted","defineProperty","enumerable","configurable","SHUTDOWN_TIMEOUT","LongPollingTransport","shutdownTimeout","pollAbort","aborted","connect","pollOptions","closeError","pollUrl","Binary","signal","updateHeaderToken","Date","now","running","poll","e_1","stopped","shutdownTimer","deleteOptions","ServerSentEventsTransport","encodeURIComponent","opened","Text","eventSource","EventSource","onmessage","close","onopen","WebSocketTransport","replace","webSocket","WebSocket","binaryType","_event","event","wasClean","code","reason","readyState","OPEN","MAX_REDIRECTS","HttpConnection","baseUrl","resolveUrl","connectionState","startPromise","startInternal","transport","stopError","negotiateResponse","redirects","_loop_1","this_1","state_1","e_2","skipNegotiation","WebSockets","constructTransport","accessToken_1","getNegotiationResponse","accessToken","createTransport","stopConnection","changeState","negotiateUrl","e_3","resolveNegotiateUrl","createConnectUrl","connectionId","requestedTransport","requestedTransferFormat","connectUrl","transports","transports_1","endpoint","ex_1","isITransport","availableTransports","resolveTransport","ServerSentEvents","LongPolling","transferFormats","map","transportMatches","from","to","lastIndexOf","window","document","aTag","createElement","href","actualTransport","JSON_HUB_PROTOCOL_NAME","JsonHubProtocol","hubMessages","parsedMessage","isInvocationMessage","isStreamItemMessage","isCompletionMessage","assertNotEmptyString","HubConnectionBuilder","configureLogging","logging","isLogger","withUrl","transportTypeOrOptions","httpConnectionOptions","withHubProtocol","build"],"mappings":"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","file":"js/chunk-vendors~03c2d1fe.45c4ce8e.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\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 @aspnet/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 @aspnet/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//# 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\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\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\nimport { HttpError, TimeoutError } from \"./Errors\";\r\nimport { LogLevel } from \"./ILogger\";\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 return HttpClient;\r\n}());\r\nexport { HttpClient };\r\n/** Default implementation of {@link @aspnet/signalr.HttpClient}. */\r\nvar DefaultHttpClient = /** @class */ (function (_super) {\r\n __extends(DefaultHttpClient, _super);\r\n /** Creates a new instance of the {@link @aspnet/signalr.DefaultHttpClient}, using the provided {@link @aspnet/signalr.ILogger} to log messages. */\r\n function DefaultHttpClient(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 DefaultHttpClient.prototype.send = function (request) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(request.method, request.url, true);\r\n xhr.withCredentials = true;\r\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n xhr.setRequestHeader(\"Content-Type\", \"text/plain;charset=UTF-8\");\r\n if (request.headers) {\r\n Object.keys(request.headers)\r\n .forEach(function (header) { return xhr.setRequestHeader(header, request.headers[header]); });\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 };\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 DefaultHttpClient;\r\n}(HttpClient));\r\nexport { DefaultHttpClient };\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\n// Not exported from index\r\n/** @private */\r\nvar TextMessageFormat = /** @class */ (function () {\r\n function TextMessageFormat() {\r\n }\r\n TextMessageFormat.write = function (output) {\r\n return \"\" + output + TextMessageFormat.RecordSeparator;\r\n };\r\n TextMessageFormat.parse = function (input) {\r\n if (input[input.length - 1] !== TextMessageFormat.RecordSeparator) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n var messages = input.split(TextMessageFormat.RecordSeparator);\r\n messages.pop();\r\n return messages;\r\n };\r\n TextMessageFormat.RecordSeparatorCode = 0x1e;\r\n TextMessageFormat.RecordSeparator = String.fromCharCode(TextMessageFormat.RecordSeparatorCode);\r\n return TextMessageFormat;\r\n}());\r\nexport { TextMessageFormat };\r\n//# sourceMappingURL=TextMessageFormat.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\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 @aspnet/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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { NullLogger } from \"./Loggers\";\r\n/** @private */\r\nvar Arg = /** @class */ (function () {\r\n function Arg() {\r\n }\r\n Arg.isRequired = function (val, name) {\r\n if (val === null || val === undefined) {\r\n throw new Error(\"The '\" + name + \"' argument is required.\");\r\n }\r\n };\r\n Arg.isIn = function (val, values, name) {\r\n // TypeScript enums have keys for **both** the name and the value of each enum member on the type itself.\r\n if (!(val in values)) {\r\n throw new Error(\"Unknown \" + name + \" value: \" + val + \".\");\r\n }\r\n };\r\n return Arg;\r\n}());\r\nexport { Arg };\r\n/** @private */\r\nexport function getDataDetail(data, includeContent) {\r\n var length = null;\r\n if (isArrayBuffer(data)) {\r\n length = \"Binary data of length \" + data.byteLength;\r\n if (includeContent) {\r\n length += \". Content: '\" + formatArrayBuffer(data) + \"'\";\r\n }\r\n }\r\n else if (typeof data === \"string\") {\r\n length = \"String data of length \" + data.length;\r\n if (includeContent) {\r\n length += \". Content: '\" + data + \"'.\";\r\n }\r\n }\r\n return length;\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/** @private */\r\nexport function sendMessage(logger, transportName, httpClient, url, accessTokenFactory, content, logMessageContent) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, headers, token, response;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, accessTokenFactory()];\r\n case 1:\r\n token = _b.sent();\r\n if (token) {\r\n headers = (_a = {},\r\n _a[\"Authorization\"] = \"Bearer \" + token,\r\n _a);\r\n }\r\n logger.log(LogLevel.Trace, \"(\" + transportName + \" transport) sending data. \" + getDataDetail(content, logMessageContent) + \".\");\r\n return [4 /*yield*/, httpClient.post(url, {\r\n content: content,\r\n headers: headers,\r\n })];\r\n case 2:\r\n response = _b.sent();\r\n logger.log(LogLevel.Trace, \"(\" + transportName + \" transport) request complete. Response status: \" + response.statusCode + \".\");\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/** @private */\r\nexport function createLogger(logger) {\r\n if (logger === undefined) {\r\n return new ConsoleLogger(LogLevel.Information);\r\n }\r\n if (logger === null) {\r\n return NullLogger.instance;\r\n }\r\n if (logger.log) {\r\n return logger;\r\n }\r\n return new ConsoleLogger(logger);\r\n}\r\n/** @private */\r\nvar Subject = /** @class */ (function () {\r\n function Subject(cancelCallback) {\r\n this.observers = [];\r\n this.cancelCallback = cancelCallback;\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/** @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) {\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 }\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 console.error(LogLevel[logLevel] + \": \" + message);\r\n break;\r\n case LogLevel.Warning:\r\n console.warn(LogLevel[logLevel] + \": \" + message);\r\n break;\r\n case LogLevel.Information:\r\n console.info(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 console.log(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 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//# 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\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)) {\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 responseMessage = JSON.parse(messages[0]);\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\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 @aspnet/signalr.InvocationMessage} interface. */\r\n MessageType[MessageType[\"Invocation\"] = 1] = \"Invocation\";\r\n /** Indicates the message is a StreamItem message and implements the {@link @aspnet/signalr.StreamItemMessage} interface. */\r\n MessageType[MessageType[\"StreamItem\"] = 2] = \"StreamItem\";\r\n /** Indicates the message is a Completion message and implements the {@link @aspnet/signalr.CompletionMessage} interface. */\r\n MessageType[MessageType[\"Completion\"] = 3] = \"Completion\";\r\n /** Indicates the message is a Stream Invocation message and implements the {@link @aspnet/signalr.StreamInvocationMessage} interface. */\r\n MessageType[MessageType[\"StreamInvocation\"] = 4] = \"StreamInvocation\";\r\n /** Indicates the message is a Cancel Invocation message and implements the {@link @aspnet/signalr.CancelInvocationMessage} interface. */\r\n MessageType[MessageType[\"CancelInvocation\"] = 5] = \"CancelInvocation\";\r\n /** Indicates the message is a Ping message and implements the {@link @aspnet/signalr.PingMessage} interface. */\r\n MessageType[MessageType[\"Ping\"] = 6] = \"Ping\";\r\n /** Indicates the message is a Close message and implements the {@link @aspnet/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 __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 { Arg, Subject } from \"./Utils\";\r\nvar DEFAULT_TIMEOUT_IN_MS = 30 * 1000;\r\n/** Represents a connection to a SignalR Hub. */\r\nvar HubConnection = /** @class */ (function () {\r\n function HubConnection(connection, logger, protocol) {\r\n var _this = this;\r\n Arg.isRequired(connection, \"connection\");\r\n Arg.isRequired(logger, \"logger\");\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.serverTimeoutInMilliseconds = DEFAULT_TIMEOUT_IN_MS;\r\n this.logger = logger;\r\n this.protocol = protocol;\r\n this.connection = connection;\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.id = 0;\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) {\r\n return new HubConnection(connection, logger, protocol);\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 return __awaiter(this, void 0, void 0, function () {\r\n var handshakeRequest;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n handshakeRequest = {\r\n protocol: this.protocol.name,\r\n version: this.protocol.version,\r\n };\r\n this.logger.log(LogLevel.Debug, \"Starting HubConnection.\");\r\n this.receivedHandshakeResponse = false;\r\n return [4 /*yield*/, this.connection.start(this.protocol.transferFormat)];\r\n case 1:\r\n _a.sent();\r\n this.logger.log(LogLevel.Debug, \"Sending handshake request.\");\r\n return [4 /*yield*/, this.connection.send(this.handshakeProtocol.writeHandshakeRequest(handshakeRequest))];\r\n case 2:\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.configureTimeout();\r\n 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 this.logger.log(LogLevel.Debug, \"Stopping HubConnection.\");\r\n this.cleanupTimeout();\r\n return this.connection.stop();\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 invocationDescriptor = this.createStreamInvocation(methodName, args);\r\n var subject = new Subject(function () {\r\n var cancelInvocation = _this.createCancelInvocation(invocationDescriptor.invocationId);\r\n var cancelMessage = _this.protocol.writeMessage(cancelInvocation);\r\n delete _this.callbacks[invocationDescriptor.invocationId];\r\n return _this.connection.send(cancelMessage);\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 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 var message = this.protocol.writeMessage(invocationDescriptor);\r\n this.connection.send(message)\r\n .catch(function (e) {\r\n subject.error(e);\r\n delete _this.callbacks[invocationDescriptor.invocationId];\r\n });\r\n return subject;\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 invocationDescriptor = this.createInvocation(methodName, args, true);\r\n var message = this.protocol.writeMessage(invocationDescriptor);\r\n return this.connection.send(message);\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 invocationDescriptor = this.createInvocation(methodName, args, false);\r\n var p = new Promise(function (resolve, reject) {\r\n _this.callbacks[invocationDescriptor.invocationId] = function (invocationEvent, error) {\r\n if (error) {\r\n reject(error);\r\n return;\r\n }\r\n if (invocationEvent.type === MessageType.Completion) {\r\n var completionMessage = invocationEvent;\r\n if (completionMessage.error) {\r\n reject(new Error(completionMessage.error));\r\n }\r\n else {\r\n resolve(completionMessage.result);\r\n }\r\n }\r\n else {\r\n reject(new Error(\"Unexpected message type: \" + invocationEvent.type));\r\n }\r\n };\r\n var message = _this.protocol.writeMessage(invocationDescriptor);\r\n _this.connection.send(message)\r\n .catch(function (e) {\r\n reject(e);\r\n delete _this.callbacks[invocationDescriptor.invocationId];\r\n });\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 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 != null) {\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 // We don't want to wait on the stop itself.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(message.error ? new Error(\"Server returned an error on close: \" + message.error) : null);\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.configureTimeout();\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 // We don't want to wait on the stop itself.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(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 // We don't want to wait on the stop itself.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(new Error(message));\r\n }\r\n else {\r\n this.logger.log(LogLevel.Debug, \"Server handshake complete.\");\r\n }\r\n return remainingData;\r\n };\r\n HubConnection.prototype.configureTimeout = function () {\r\n var _this = this;\r\n if (!this.connection.features || !this.connection.features.inherentKeepAlive) {\r\n // Set the timeout timer\r\n this.timeoutHandle = setTimeout(function () { return _this.serverTimeout(); }, this.serverTimeoutInMilliseconds);\r\n }\r\n };\r\n HubConnection.prototype.serverTimeout = function () {\r\n // The server hasn't talked to us in a while. It doesn't like us anymore ... :(\r\n // Terminate the connection, but we don't need to wait on the promise.\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 methods.forEach(function (m) { return m.apply(_this, invocationMessage.arguments); });\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 need to wait on this Promise.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(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 var _this = this;\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(undefined, error ? error : new Error(\"Invocation canceled due to connection being closed.\"));\r\n });\r\n this.cleanupTimeout();\r\n this.closedCallbacks.forEach(function (c) { return c.apply(_this, [error]); });\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) {\r\n if (nonblocking) {\r\n return {\r\n arguments: args,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n else {\r\n var id = this.id;\r\n this.id++;\r\n return {\r\n arguments: args,\r\n invocationId: id.toString(),\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n };\r\n HubConnection.prototype.createStreamInvocation = function (methodName, args) {\r\n var id = this.id;\r\n this.id++;\r\n return {\r\n arguments: args,\r\n invocationId: id.toString(),\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n };\r\n HubConnection.prototype.createCancelInvocation = function (id) {\r\n return {\r\n invocationId: id,\r\n type: MessageType.CancelInvocation,\r\n };\r\n };\r\n 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// 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 }\r\n AbortController.prototype.abort = function () {\r\n if (!this.isAborted) {\r\n this.isAborted = true;\r\n if (this.onabort) {\r\n this.onabort();\r\n }\r\n }\r\n };\r\n Object.defineProperty(AbortController.prototype, \"signal\", {\r\n get: function () {\r\n return this;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbortController.prototype, \"aborted\", {\r\n get: function () {\r\n return this.isAborted;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AbortController;\r\n}());\r\nexport { AbortController };\r\n//# sourceMappingURL=AbortController.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { AbortController } from \"./AbortController\";\r\nimport { HttpError, TimeoutError } from \"./Errors\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, sendMessage } from \"./Utils\";\r\nvar SHUTDOWN_TIMEOUT = 5 * 1000;\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, shutdownTimeout) {\r\n this.httpClient = httpClient;\r\n this.accessTokenFactory = accessTokenFactory || (function () { return null; });\r\n this.logger = logger;\r\n this.pollAbort = new AbortController();\r\n this.logMessageContent = logMessageContent;\r\n this.shutdownTimeout = shutdownTimeout || SHUTDOWN_TIMEOUT;\r\n }\r\n Object.defineProperty(LongPollingTransport.prototype, \"pollAborted\", {\r\n // This is an internal type, not exported from 'index' so this is really just internal.\r\n get: function () {\r\n return this.pollAbort.aborted;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n LongPollingTransport.prototype.connect = function (url, transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var pollOptions, token, closeError, pollUrl, response;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this.url = url;\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Connecting\");\r\n if (transferFormat === TransferFormat.Binary && (typeof new XMLHttpRequest().responseType !== \"string\")) {\r\n // This will work if we fix: https://github.com/aspnet/SignalR/issues/742\r\n throw new Error(\"Binary protocols over XmlHttpRequest not implementing advanced features are not supported.\");\r\n }\r\n pollOptions = {\r\n abortSignal: this.pollAbort.signal,\r\n headers: {},\r\n timeout: 90000,\r\n };\r\n if (transferFormat === TransferFormat.Binary) {\r\n pollOptions.responseType = \"arraybuffer\";\r\n }\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _a.sent();\r\n this.updateHeaderToken(pollOptions, token);\r\n pollUrl = url + \"&_=\" + Date.now();\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) polling: \" + pollUrl);\r\n return [4 /*yield*/, this.httpClient.get(pollUrl, pollOptions)];\r\n case 2:\r\n response = _a.sent();\r\n if (response.statusCode !== 200) {\r\n this.logger.log(LogLevel.Error, \"(LongPolling transport) Unexpected response code: \" + response.statusCode);\r\n // Mark running as false so that the poll immediately ends and runs the close logic\r\n 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 // tslint:disable-next-line:no-floating-promises\r\n this.poll(this.url, pollOptions, closeError);\r\n return [2 /*return*/, Promise.resolve()];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.updateHeaderToken = function (request, token) {\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, closeError) {\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.accessTokenFactory()];\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 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 we were stopped by DELETE\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 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 // Indicate that we've stopped so the shutdown timer doesn't get registered.\r\n this.stopped = true;\r\n // Clean up the shutdown timer if it was registered\r\n if (this.shutdownTimer) {\r\n clearTimeout(this.shutdownTimer);\r\n }\r\n // Fire our onclosed event\r\n if (this.onclose) {\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Firing onclose event. Error: \" + (closeError || \"\"));\r\n this.onclose(closeError);\r\n }\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Transport finished.\");\r\n return [7 /*endfinally*/];\r\n case 9: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.send = function (data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (!this.running) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Cannot send until the transport is connected\"))];\r\n }\r\n return [2 /*return*/, sendMessage(this.logger, \"LongPolling\", this.httpClient, this.url, this.accessTokenFactory, data, this.logMessageContent)];\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.stop = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var deleteOptions, token;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, , 3, 4]);\r\n this.running = false;\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) sending DELETE request to \" + this.url + \".\");\r\n deleteOptions = {\r\n headers: {},\r\n };\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _a.sent();\r\n this.updateHeaderToken(deleteOptions, token);\r\n return [4 /*yield*/, this.httpClient.delete(this.url, deleteOptions)];\r\n case 2:\r\n _a.sent();\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) DELETE request accepted.\");\r\n return [3 /*break*/, 4];\r\n case 3:\r\n // Abort the poll after the shutdown timeout if the server doesn't stop the poll.\r\n if (!this.stopped) {\r\n this.shutdownTimer = setTimeout(function () {\r\n _this.logger.log(LogLevel.Warning, \"(LongPolling transport) server did not terminate after DELETE request, canceling poll.\");\r\n // Abort any outstanding poll\r\n _this.pollAbort.abort();\r\n }, this.shutdownTimeout);\r\n }\r\n return [7 /*endfinally*/];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return LongPollingTransport;\r\n}());\r\nexport { LongPollingTransport };\r\n//# sourceMappingURL=LongPollingTransport.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, sendMessage } from \"./Utils\";\r\n/** @private */\r\nvar ServerSentEventsTransport = /** @class */ (function () {\r\n function ServerSentEventsTransport(httpClient, accessTokenFactory, logger, logMessageContent) {\r\n this.httpClient = httpClient;\r\n this.accessTokenFactory = accessTokenFactory || (function () { return null; });\r\n this.logger = logger;\r\n this.logMessageContent = logMessageContent;\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 if (typeof (EventSource) === \"undefined\") {\r\n throw new Error(\"'EventSource' is not supported in your environment.\");\r\n }\r\n this.logger.log(LogLevel.Trace, \"(SSE transport) Connecting\");\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 this.url = url;\r\n 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 }\r\n var eventSource = new EventSource(url, { withCredentials: true });\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 if (_this.onclose) {\r\n _this.onclose(error);\r\n }\r\n return;\r\n }\r\n }\r\n };\r\n eventSource.onerror = function (e) {\r\n var error = new Error(e.message || \"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 return Promise.reject(e);\r\n }\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n ServerSentEventsTransport.prototype.send = function (data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (!this.eventSource) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Cannot send until the transport is connected\"))];\r\n }\r\n return [2 /*return*/, sendMessage(this.logger, \"SSE\", this.httpClient, this.url, this.accessTokenFactory, data, this.logMessageContent)];\r\n });\r\n });\r\n };\r\n ServerSentEventsTransport.prototype.stop = function () {\r\n this.close();\r\n return Promise.resolve();\r\n };\r\n ServerSentEventsTransport.prototype.close = function (e) {\r\n if (this.eventSource) {\r\n this.eventSource.close();\r\n this.eventSource = null;\r\n if (this.onclose) {\r\n this.onclose(e);\r\n }\r\n }\r\n };\r\n return ServerSentEventsTransport;\r\n}());\r\nexport { ServerSentEventsTransport };\r\n//# sourceMappingURL=ServerSentEventsTransport.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail } from \"./Utils\";\r\n/** @private */\r\nvar WebSocketTransport = /** @class */ (function () {\r\n function WebSocketTransport(accessTokenFactory, logger, logMessageContent) {\r\n this.logger = logger;\r\n this.accessTokenFactory = accessTokenFactory || (function () { return null; });\r\n this.logMessageContent = logMessageContent;\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 if (typeof (WebSocket) === \"undefined\") {\r\n throw new Error(\"'WebSocket' is not supported in your environment.\");\r\n }\r\n this.logger.log(LogLevel.Trace, \"(WebSockets transport) Connecting\");\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 return [2 /*return*/, new Promise(function (resolve, reject) {\r\n url = url.replace(/^http/, \"ws\");\r\n var webSocket = new WebSocket(url);\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 resolve();\r\n };\r\n webSocket.onerror = function (event) {\r\n reject(event.error);\r\n };\r\n webSocket.onmessage = function (message) {\r\n _this.logger.log(LogLevel.Trace, \"(WebSockets transport) data received. \" + getDataDetail(message.data, _this.logMessageContent) + \".\");\r\n if (_this.onreceive) {\r\n _this.onreceive(message.data);\r\n }\r\n };\r\n webSocket.onclose = function (event) {\r\n // webSocket will be null if the transport did not start successfully\r\n _this.logger.log(LogLevel.Trace, \"(WebSockets transport) socket closed.\");\r\n if (_this.onclose) {\r\n if (event.wasClean === false || event.code !== 1000) {\r\n _this.onclose(new Error(\"Websocket closed with status code: \" + event.code + \" (\" + event.reason + \")\"));\r\n }\r\n else {\r\n _this.onclose();\r\n }\r\n }\r\n };\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n WebSocketTransport.prototype.send = function (data) {\r\n if (this.webSocket && this.webSocket.readyState === WebSocket.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 this.webSocket.close();\r\n this.webSocket = null;\r\n }\r\n return Promise.resolve();\r\n };\r\n return WebSocketTransport;\r\n}());\r\nexport { WebSocketTransport };\r\n//# sourceMappingURL=WebSocketTransport.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { DefaultHttpClient } from \"./HttpClient\";\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 } 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.features = {};\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.accessTokenFactory = options.accessTokenFactory || (function () { return null; });\r\n options.logMessageContent = options.logMessageContent || false;\r\n this.httpClient = options.httpClient || new DefaultHttpClient(this.logger);\r\n this.connectionState = 2 /* Disconnected */;\r\n this.options = options;\r\n }\r\n HttpConnection.prototype.start = function (transferFormat) {\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 !== 2 /* Disconnected */) {\r\n return Promise.reject(new Error(\"Cannot start a connection that is not in the 'Disconnected' state.\"));\r\n }\r\n this.connectionState = 0 /* Connecting */;\r\n this.startPromise = this.startInternal(transferFormat);\r\n return this.startPromise;\r\n };\r\n HttpConnection.prototype.send = function (data) {\r\n if (this.connectionState !== 1 /* Connected */) {\r\n throw new Error(\"Cannot send data if the connection is not in the 'Connected' State.\");\r\n }\r\n return this.transport.send(data);\r\n };\r\n HttpConnection.prototype.stop = function (error) {\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 this.connectionState = 2 /* Disconnected */;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.startPromise];\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*/, 6];\r\n this.stopError = error;\r\n return [4 /*yield*/, this.transport.stop()];\r\n case 5:\r\n _a.sent();\r\n this.transport = null;\r\n _a.label = 6;\r\n case 6: 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, state_1, 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 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.transport.connect(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 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 === 2 /* Disconnected */) {\r\n return [2 /*return*/, { value: void 0 }];\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 state_1 = _a.sent();\r\n if (typeof state_1 === \"object\")\r\n return [2 /*return*/, state_1.value];\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 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 this.transport.onreceive = this.onreceive;\r\n this.transport.onclose = function (e) { return _this.stopConnection(e); };\r\n // only change the state if we were connecting to not overwrite\r\n // the state if the connection is already marked as Disconnected\r\n this.changeState(0 /* Connecting */, 1 /* Connected */);\r\n return [3 /*break*/, 13];\r\n case 12:\r\n e_2 = _a.sent();\r\n this.logger.log(LogLevel.Error, \"Failed to start the connection: \" + e_2);\r\n this.connectionState = 2 /* Disconnected */;\r\n this.transport = null;\r\n throw e_2;\r\n case 13: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.getNegotiationResponse = function (url) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, token, headers, negotiateUrl, response, e_3;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _b.sent();\r\n if (token) {\r\n headers = (_a = {},\r\n _a[\"Authorization\"] = \"Bearer \" + token,\r\n _a);\r\n }\r\n negotiateUrl = this.resolveNegotiateUrl(url);\r\n this.logger.log(LogLevel.Debug, \"Sending negotiation request: \" + negotiateUrl);\r\n _b.label = 2;\r\n case 2:\r\n _b.trys.push([2, 4, , 5]);\r\n return [4 /*yield*/, this.httpClient.post(negotiateUrl, {\r\n content: \"\",\r\n headers: headers,\r\n })];\r\n case 3:\r\n response = _b.sent();\r\n if (response.statusCode !== 200) {\r\n throw Error(\"Unexpected status code returned from negotiate \" + response.statusCode);\r\n }\r\n return [2 /*return*/, JSON.parse(response.content)];\r\n case 4:\r\n e_3 = _b.sent();\r\n this.logger.log(LogLevel.Error, \"Failed to complete negotiation with the server: \" + e_3);\r\n throw e_3;\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.createConnectUrl = function (url, connectionId) {\r\n return url + (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + (\"id=\" + connectionId);\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, transports, _i, transports_1, endpoint, transport, ex_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n connectUrl = this.createConnectUrl(url, negotiateResponse.connectionId);\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.transport.connect(connectUrl, requestedTransferFormat)];\r\n case 1:\r\n _a.sent();\r\n // only change the state if we were connecting to not overwrite\r\n // the state if the connection is already marked as Disconnected\r\n this.changeState(0 /* Connecting */, 1 /* Connected */);\r\n return [2 /*return*/];\r\n case 2:\r\n transports = negotiateResponse.availableTransports;\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*/, 9];\r\n endpoint = transports_1[_i];\r\n this.connectionState = 0 /* Connecting */;\r\n transport = this.resolveTransport(endpoint, requestedTransport, requestedTransferFormat);\r\n if (!(typeof transport === \"number\")) return [3 /*break*/, 8];\r\n this.transport = this.constructTransport(transport);\r\n if (!(negotiateResponse.connectionId === null)) return [3 /*break*/, 5];\r\n return [4 /*yield*/, this.getNegotiationResponse(url)];\r\n case 4:\r\n negotiateResponse = _a.sent();\r\n connectUrl = this.createConnectUrl(url, negotiateResponse.connectionId);\r\n _a.label = 5;\r\n case 5:\r\n _a.trys.push([5, 7, , 8]);\r\n return [4 /*yield*/, this.transport.connect(connectUrl, requestedTransferFormat)];\r\n case 6:\r\n _a.sent();\r\n this.changeState(0 /* Connecting */, 1 /* Connected */);\r\n return [2 /*return*/];\r\n case 7:\r\n ex_1 = _a.sent();\r\n this.logger.log(LogLevel.Error, \"Failed to start the transport '\" + HttpTransportType[transport] + \"': \" + ex_1);\r\n this.connectionState = 2 /* Disconnected */;\r\n negotiateResponse.connectionId = null;\r\n return [3 /*break*/, 8];\r\n case 8:\r\n _i++;\r\n return [3 /*break*/, 3];\r\n case 9: throw new Error(\"Unable to initialize any of the available transports.\");\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 return new WebSocketTransport(this.accessTokenFactory, this.logger, this.options.logMessageContent);\r\n case HttpTransportType.ServerSentEvents:\r\n return new ServerSentEventsTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent);\r\n case HttpTransportType.LongPolling:\r\n return new LongPollingTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent);\r\n default:\r\n throw new Error(\"Unknown transport: \" + transport + \".\");\r\n }\r\n };\r\n HttpConnection.prototype.resolveTransport = 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 }\r\n else {\r\n var transferFormats = endpoint.transferFormats.map(function (s) { return TransferFormat[s]; });\r\n if (transportMatches(requestedTransport, transport)) {\r\n if (transferFormats.indexOf(requestedTransferFormat) >= 0) {\r\n if ((transport === HttpTransportType.WebSockets && typeof WebSocket === \"undefined\") ||\r\n (transport === HttpTransportType.ServerSentEvents && typeof EventSource === \"undefined\")) {\r\n this.logger.log(LogLevel.Debug, \"Skipping transport '\" + HttpTransportType[transport] + \"' because it is not supported in your environment.'\");\r\n }\r\n else {\r\n this.logger.log(LogLevel.Debug, \"Selecting transport '\" + HttpTransportType[transport] + \"'\");\r\n return transport;\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 }\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 }\r\n }\r\n return null;\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.changeState = function (from, to) {\r\n if (this.connectionState === from) {\r\n this.connectionState = to;\r\n return true;\r\n }\r\n return false;\r\n };\r\n HttpConnection.prototype.stopConnection = function (error) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n this.transport = null;\r\n // If we have a stopError, it takes precedence over the error from the transport\r\n error = this.stopError || error;\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 this.connectionState = 2 /* Disconnected */;\r\n if (this.onclose) {\r\n this.onclose(error);\r\n }\r\n return [2 /*return*/];\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 (typeof window === \"undefined\" || !window || !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 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//# 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 @aspnet/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 @aspnet/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\nimport { HttpConnection } from \"./HttpConnection\";\r\nimport { HubConnection } from \"./HubConnection\";\r\nimport { JsonHubProtocol } from \"./JsonHubProtocol\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { Arg, ConsoleLogger } from \"./Utils\";\r\n/** A builder for configuring {@link @aspnet/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 {\r\n this.logger = new ConsoleLogger(logging);\r\n }\r\n return this;\r\n };\r\n HubConnectionBuilder.prototype.withUrl = function (url, transportTypeOrOptions) {\r\n Arg.isRequired(url, \"url\");\r\n this.url = url;\r\n // Flow-typing knows where it's at. Since HttpTransportType is a number and IHttpConnectionOptions is guaranteed\r\n // to be an object, we know (as does TypeScript) this comparison is all we need to figure out which overload was called.\r\n if (typeof transportTypeOrOptions === \"object\") {\r\n this.httpConnectionOptions = transportTypeOrOptions;\r\n }\r\n else {\r\n this.httpConnectionOptions = {\r\n transport: transportTypeOrOptions,\r\n };\r\n }\r\n return this;\r\n };\r\n /** Configures the {@link @aspnet/signalr.HubConnection} to use the specified Hub Protocol.\r\n *\r\n * @param {IHubProtocol} protocol The {@link @aspnet/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 /** Creates a {@link @aspnet/signalr.HubConnection} from the configuration options specified in this builder.\r\n *\r\n * @returns {HubConnection} The configured {@link @aspnet/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());\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":""}