{"version":3,"sources":["webpack:///./node_modules/@aspnet/signalr/dist/esm/IHubProtocol.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/XhrHttpClient.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/DefaultHttpClient.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","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/TextMessageFormat.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/HandshakeProtocol.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/NodeHttpClient.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/ILogger.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/Loggers.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/HttpClient.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/Errors.js","webpack:///./node_modules/@aspnet/signalr/dist/esm/Utils.js","webpack:///./node_modules/isarray/index.js"],"names":["MessageType","__extends","extendStatics","Object","setPrototypeOf","__proto__","Array","d","b","p","hasOwnProperty","__","this","constructor","prototype","create","_super","XhrHttpClient","logger","_this","call","send","request","abortSignal","aborted","Promise","reject","method","url","resolve","xhr","XMLHttpRequest","open","withCredentials","setRequestHeader","headers","keys","forEach","header","responseType","onabort","abort","timeout","onload","status","statusText","response","responseText","onerror","log","Warning","ontimeout","content","Error","HttpClient","DefaultHttpClient","httpClient","NodeHttpClient","getCookieString","HubConnectionState","__awaiter","thisArg","_arguments","P","generator","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","Symbol","iterator","n","v","op","TypeError","pop","length","push","DEFAULT_TIMEOUT_IN_MS","DEFAULT_PING_INTERVAL_IN_MS","HttpTransportType","TransferFormat","HubConnection","connection","protocol","isRequired","serverTimeoutInMilliseconds","keepAliveIntervalInMilliseconds","handshakeProtocol","HandshakeProtocol","onreceive","data","processIncomingData","onclose","error","connectionClosed","callbacks","methods","closedCallbacks","id","receivedHandshakeResponse","connectionState","Disconnected","cachedPingMessage","writeMessage","type","Ping","defineProperty","get","enumerable","configurable","start","handshakeRequest","handshakePromise","_a","name","version","Debug","handshakeResolver","handshakeRejecter","transferFormat","sendMessage","writeHandshakeRequest","Information","cleanupTimeout","resetTimeoutPeriod","resetKeepAliveInterval","Connected","stop","cleanupPingTimer","stream","methodName","args","_i","arguments","promiseQueue","invocationDescriptor","createStreamInvocation","subject","cancelCallback","cancelInvocation","createCancelInvocation","invocationId","cancelMessage","invocationEvent","Completion","complete","message","catch","createInvocation","invoke","on","newMethod","toLowerCase","indexOf","off","handlers","removeIdx","splice","callback","processHandshakeResponse","messages","parseMessages","messages_1","Invocation","invokeClientMethod","StreamItem","Close","undefined","responseMessage","remainingData","parseHandshakeResponse","pingServerHandle","setTimeout","_b","features","inherentKeepAlive","timeoutHandle","serverTimeout","invocationMessage","target","m","key","c","clearTimeout","nonblocking","toString","StreamInvocation","CancelInvocation","AbortController","isAborted","LongPollingTransport","accessTokenFactory","logMessageContent","pollAbort","running","connect","pollOptions","token","pollUrl","isIn","Trace","Binary","signal","getAccessToken","updateHeaderToken","Date","now","statusCode","closeError","receiving","poll","e_1","pollAborted","raiseOnClose","deleteOptions","delete","logMessage","ServerSentEventsTransport","eventSourceConstructor","encodeURIComponent","opened","Text","eventSource","window","cookies","Cookie","onmessage","close","onopen","WebSocketTransport","webSocketConstructor","webSocket","replace","binaryType","_event","event","ErrorEvent","readyState","OPEN","wasClean","code","reason","MAX_REDIRECTS","WebSocketModule","EventSourceModule","requireFunc","HttpConnection","options","baseUrl","resolveUrl","isNode","WebSocket","EventSource","startPromise","startInternal","transport","stopError","negotiateResponse","redirects","_loop_1","this_1","state_1","e_2","skipNegotiation","WebSockets","constructTransport","accessToken_1","getNegotiationResponse","ProtocolVersion","accessToken","createTransport","stopConnection","changeState","negotiateUrl","e_3","resolveNegotiateUrl","post","JSON","parse","createConnectUrl","connectionId","requestedTransport","requestedTransferFormat","connectUrl","transports","transports_1","endpoint","ex_1","isITransport","availableTransports","resolveTransport","ServerSentEvents","LongPolling","transferFormats","map","s","transportMatches","from","to","lastIndexOf","document","aTag","createElement","href","index","substring","actualTransport","JSON_HUB_PROTOCOL_NAME","JsonHubProtocol","input","instance","TextMessageFormat","hubMessages","parsedMessage","isInvocationMessage","isStreamItemMessage","isCompletionMessage","write","stringify","assertNotEmptyString","item","errorMessage","HubConnectionBuilder","configureLogging","logging","isLogger","withUrl","transportTypeOrOptions","httpConnectionOptions","withHubProtocol","build","exports","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","Uint8Array","i","len","charCodeAt","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","end","output","join","extraBytes","parts","maxChunkLength","len2","RecordSeparator","split","RecordSeparatorCode","String","fromCharCode","messageData","Buffer","binaryData","separatorIndex","responseLength","slice","buffer","textData","requestModule","__assign","assign","cookieJar","jar","defaults","httpRequest","requestBody","currentRequest","encoding","statusMessage","LogLevel","NullLogger","_logLevel","_message","HttpResponse","read","offset","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","Infinity","Math","pow","rt","abs","isNaN","floor","LN2","base64","ieee754","isArray","typedArraySupport","foo","subarray","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","arg","encodingOrOffset","allocUnsafe","ArrayBuffer","fromArrayBuffer","fromString","fromObject","assertSize","size","alloc","fill","checked","string","isEncoding","actual","fromArrayLike","array","byteOffset","obj","isBuffer","copy","isnan","SlowBuffer","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","val","dir","arrayIndexOf","indexSize","arrLength","valLength","buf","readUInt16BE","foundIndex","found","j","hexWrite","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","decodeCodePointsArray","INSPECT_MAX_BYTES","global","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","compare","a","x","concat","list","pos","swap16","swap32","swap64","equals","inspect","str","max","match","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","MAX_ARGUMENTS_LENGTH","codePoints","ret","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","maxBytes","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","set","INVALID_BASE64_RE","base64clean","stringtrim","trim","units","leadSurrogate","byteArray","hi","lo","src","dst","HttpError","_newTarget","trueProto","TimeoutError","AbortError","Arg","values","getDataDetail","includeContent","detail","isArrayBuffer","formatArrayBuffer","view","pad","transportName","createLogger","ConsoleLogger","Subject","observers","observer","err","subscribe","SubjectSubscription","dispose","minimumLogLevel","logLevel","Critical","console","toISOString","warn","info","module"],"mappings":"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","file":"js/chunk-0cf7895c.daa00636.js","sourcesContent":["// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n/** 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 __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nvar XhrHttpClient = /** @class */ (function (_super) {\r\n __extends(XhrHttpClient, _super);\r\n function XhrHttpClient(logger) {\r\n var _this = _super.call(this) || this;\r\n _this.logger = logger;\r\n return _this;\r\n }\r\n /** @inheritDoc */\r\n XhrHttpClient.prototype.send = function (request) {\r\n var _this = this;\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return new Promise(function (resolve, reject) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(request.method, request.url, true);\r\n xhr.withCredentials = true;\r\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n xhr.setRequestHeader(\"Content-Type\", \"text/plain;charset=UTF-8\");\r\n var headers = request.headers;\r\n if (headers) {\r\n Object.keys(headers)\r\n .forEach(function (header) {\r\n xhr.setRequestHeader(header, headers[header]);\r\n });\r\n }\r\n if (request.responseType) {\r\n xhr.responseType = request.responseType;\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = function () {\r\n xhr.abort();\r\n reject(new AbortError());\r\n };\r\n }\r\n if (request.timeout) {\r\n xhr.timeout = request.timeout;\r\n }\r\n xhr.onload = function () {\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n resolve(new HttpResponse(xhr.status, xhr.statusText, xhr.response || xhr.responseText));\r\n }\r\n else {\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n }\r\n };\r\n xhr.onerror = function () {\r\n _this.logger.log(LogLevel.Warning, \"Error from HTTP request. \" + xhr.status + \": \" + xhr.statusText + \".\");\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n };\r\n xhr.ontimeout = function () {\r\n _this.logger.log(LogLevel.Warning, \"Timeout from HTTP request.\");\r\n reject(new TimeoutError());\r\n };\r\n xhr.send(request.content || \"\");\r\n });\r\n };\r\n return XhrHttpClient;\r\n}(HttpClient));\r\nexport { XhrHttpClient };\r\n//# sourceMappingURL=XhrHttpClient.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { AbortError } from \"./Errors\";\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { NodeHttpClient } from \"./NodeHttpClient\";\r\nimport { XhrHttpClient } from \"./XhrHttpClient\";\r\n/** Default implementation of {@link @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 if (typeof XMLHttpRequest !== \"undefined\") {\r\n _this.httpClient = new XhrHttpClient(logger);\r\n }\r\n else {\r\n _this.httpClient = new NodeHttpClient(logger);\r\n }\r\n return _this;\r\n }\r\n /** @inheritDoc */\r\n DefaultHttpClient.prototype.send = function (request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return this.httpClient.send(request);\r\n };\r\n DefaultHttpClient.prototype.getCookieString = function (url) {\r\n return this.httpClient.getCookieString(url);\r\n };\r\n return DefaultHttpClient;\r\n}(HttpClient));\r\nexport { DefaultHttpClient };\r\n//# sourceMappingURL=DefaultHttpClient.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { HandshakeProtocol } from \"./HandshakeProtocol\";\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { Arg, Subject } from \"./Utils\";\r\nvar DEFAULT_TIMEOUT_IN_MS = 30 * 1000;\r\nvar DEFAULT_PING_INTERVAL_IN_MS = 15 * 1000;\r\n/** Describes the current state of the {@link HubConnection} to the server. */\r\nexport var HubConnectionState;\r\n(function (HubConnectionState) {\r\n /** The hub connection is disconnected. */\r\n HubConnectionState[HubConnectionState[\"Disconnected\"] = 0] = \"Disconnected\";\r\n /** The hub connection is connected. */\r\n HubConnectionState[HubConnectionState[\"Connected\"] = 1] = \"Connected\";\r\n})(HubConnectionState || (HubConnectionState = {}));\r\n/** Represents a connection to a SignalR Hub. */\r\nvar HubConnection = /** @class */ (function () {\r\n function HubConnection(connection, logger, protocol) {\r\n var _this = this;\r\n Arg.isRequired(connection, \"connection\");\r\n Arg.isRequired(logger, \"logger\");\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.serverTimeoutInMilliseconds = DEFAULT_TIMEOUT_IN_MS;\r\n this.keepAliveIntervalInMilliseconds = DEFAULT_PING_INTERVAL_IN_MS;\r\n this.logger = logger;\r\n this.protocol = protocol;\r\n this.connection = connection;\r\n this.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 this.receivedHandshakeResponse = false;\r\n this.connectionState = HubConnectionState.Disconnected;\r\n this.cachedPingMessage = this.protocol.writeMessage({ type: MessageType.Ping });\r\n }\r\n /** @internal */\r\n // Using a public static factory method means we can have a private constructor and an _internal_\r\n // create method that can be used by HubConnectionBuilder. An \"internal\" constructor would just\r\n // be stripped away and the '.d.ts' file would have no constructor, which is interpreted as a\r\n // public parameter-less constructor.\r\n HubConnection.create = function (connection, logger, protocol) {\r\n return new HubConnection(connection, logger, protocol);\r\n };\r\n Object.defineProperty(HubConnection.prototype, \"state\", {\r\n /** Indicates the state of the {@link HubConnection} to the server. */\r\n get: function () {\r\n return this.connectionState;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /** 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, handshakePromise;\r\n var _this = this;\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 handshakePromise = new Promise(function (resolve, reject) {\r\n _this.handshakeResolver = resolve;\r\n _this.handshakeRejecter = reject;\r\n });\r\n return [4 /*yield*/, this.connection.start(this.protocol.transferFormat)];\r\n case 1:\r\n _a.sent();\r\n this.logger.log(LogLevel.Debug, \"Sending handshake request.\");\r\n return [4 /*yield*/, this.sendMessage(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.resetTimeoutPeriod();\r\n this.resetKeepAliveInterval();\r\n // Wait for the handshake to complete before marking connection as connected\r\n return [4 /*yield*/, handshakePromise];\r\n case 3:\r\n // Wait for the handshake to complete before marking connection as connected\r\n _a.sent();\r\n this.connectionState = HubConnectionState.Connected;\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 this.cleanupPingTimer();\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 promiseQueue;\r\n var subject = new Subject();\r\n subject.cancelCallback = 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 promiseQueue.then(function () {\r\n return _this.sendMessage(cancelMessage);\r\n });\r\n };\r\n this.callbacks[invocationDescriptor.invocationId] = function (invocationEvent, error) {\r\n if (error) {\r\n subject.error(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n subject.error(new Error(invocationEvent.error));\r\n }\r\n else {\r\n subject.complete();\r\n }\r\n }\r\n else {\r\n subject.next((invocationEvent.item));\r\n }\r\n }\r\n };\r\n var message = this.protocol.writeMessage(invocationDescriptor);\r\n promiseQueue = this.sendMessage(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 HubConnection.prototype.sendMessage = function (message) {\r\n this.resetKeepAliveInterval();\r\n return this.connection.send(message);\r\n };\r\n /** Invokes a hub method on the server using the specified name and arguments. Does not wait for a response from the receiver.\r\n *\r\n * The Promise returned by this method resolves when the client has sent the invocation to the server. The server may still\r\n * be processing the invocation.\r\n *\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves when the invocation has been successfully sent, or rejects with an error.\r\n */\r\n HubConnection.prototype.send = function (methodName) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var invocationDescriptor = this.createInvocation(methodName, args, true);\r\n var message = this.protocol.writeMessage(invocationDescriptor);\r\n return this.sendMessage(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 // invocationId will always have a value for a non-blocking invocation\r\n _this.callbacks[invocationDescriptor.invocationId] = function (invocationEvent, error) {\r\n if (error) {\r\n reject(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n reject(new Error(invocationEvent.error));\r\n }\r\n else {\r\n resolve(invocationEvent.result);\r\n }\r\n }\r\n else {\r\n reject(new Error(\"Unexpected message type: \" + invocationEvent.type));\r\n }\r\n }\r\n };\r\n var message = _this.protocol.writeMessage(invocationDescriptor);\r\n _this.sendMessage(message)\r\n .catch(function (e) {\r\n reject(e);\r\n // invocationId will always have a value for a non-blocking invocation\r\n delete _this.callbacks[invocationDescriptor.invocationId];\r\n });\r\n });\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) : undefined);\r\n break;\r\n default:\r\n this.logger.log(LogLevel.Warning, \"Invalid message type: \" + message.type + \".\");\r\n break;\r\n }\r\n }\r\n }\r\n this.resetTimeoutPeriod();\r\n };\r\n HubConnection.prototype.processHandshakeResponse = function (data) {\r\n var _a;\r\n var responseMessage;\r\n var remainingData;\r\n try {\r\n _a = this.handshakeProtocol.parseHandshakeResponse(data), remainingData = _a[0], responseMessage = _a[1];\r\n }\r\n catch (e) {\r\n var message = \"Error parsing handshake response: \" + e;\r\n this.logger.log(LogLevel.Error, message);\r\n var error = new Error(message);\r\n // 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 this.handshakeRejecter(error);\r\n throw error;\r\n }\r\n if (responseMessage.error) {\r\n var message = \"Server returned handshake error: \" + responseMessage.error;\r\n this.logger.log(LogLevel.Error, message);\r\n this.handshakeRejecter(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 throw new Error(message);\r\n }\r\n else {\r\n this.logger.log(LogLevel.Debug, \"Server handshake complete.\");\r\n }\r\n this.handshakeResolver();\r\n return remainingData;\r\n };\r\n HubConnection.prototype.resetKeepAliveInterval = function () {\r\n var _this = this;\r\n this.cleanupPingTimer();\r\n this.pingServerHandle = setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!(this.connectionState === HubConnectionState.Connected)) return [3 /*break*/, 4];\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.sendMessage(this.cachedPingMessage)];\r\n case 2:\r\n _b.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n _a = _b.sent();\r\n // We don't care about the error. It should be seen elsewhere in the client.\r\n // The connection is probably in a bad or closed state now, cleanup the timer so it stops triggering\r\n this.cleanupPingTimer();\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n }); }, this.keepAliveIntervalInMilliseconds);\r\n };\r\n HubConnection.prototype.resetTimeoutPeriod = function () {\r\n var _this = this;\r\n if (!this.connection.features || !this.connection.features.inherentKeepAlive) {\r\n // Set the timeout timer\r\n this.timeoutHandle = setTimeout(function () { return _this.serverTimeout(); }, this.serverTimeoutInMilliseconds);\r\n }\r\n };\r\n HubConnection.prototype.serverTimeout = function () {\r\n // The server hasn't talked to us in a while. It doesn't like us anymore ... :(\r\n // Terminate the connection, but we don't need to wait on the promise.\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 this.connectionState = HubConnectionState.Disconnected;\r\n // if handshake is in progress start will be waiting for the handshake promise, so we complete it\r\n // if it has already completed this should just noop\r\n if (this.handshakeRejecter) {\r\n this.handshakeRejecter(error);\r\n }\r\n Object.keys(callbacks)\r\n .forEach(function (key) {\r\n var callback = callbacks[key];\r\n callback(null, error ? error : new Error(\"Invocation canceled due to connection being closed.\"));\r\n });\r\n this.cleanupTimeout();\r\n this.cleanupPingTimer();\r\n this.closedCallbacks.forEach(function (c) { return c.apply(_this, [error]); });\r\n };\r\n HubConnection.prototype.cleanupPingTimer = function () {\r\n if (this.pingServerHandle) {\r\n clearTimeout(this.pingServerHandle);\r\n }\r\n };\r\n HubConnection.prototype.cleanupTimeout = function () {\r\n if (this.timeoutHandle) {\r\n clearTimeout(this.timeoutHandle);\r\n }\r\n };\r\n HubConnection.prototype.createInvocation = function (methodName, args, nonblocking) {\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 this.onabort = null;\r\n }\r\n AbortController.prototype.abort = function () {\r\n if (!this.isAborted) {\r\n this.isAborted = true;\r\n if (this.onabort) {\r\n this.onabort();\r\n }\r\n }\r\n };\r\n Object.defineProperty(AbortController.prototype, \"signal\", {\r\n get: function () {\r\n return this;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbortController.prototype, \"aborted\", {\r\n get: function () {\r\n return this.isAborted;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AbortController;\r\n}());\r\nexport { AbortController };\r\n//# sourceMappingURL=AbortController.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { AbortController } from \"./AbortController\";\r\nimport { HttpError, TimeoutError } from \"./Errors\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, sendMessage } from \"./Utils\";\r\n// Not exported from 'index', this type is internal.\r\n/** @private */\r\nvar LongPollingTransport = /** @class */ (function () {\r\n function LongPollingTransport(httpClient, accessTokenFactory, logger, logMessageContent) {\r\n this.httpClient = httpClient;\r\n this.accessTokenFactory = accessTokenFactory;\r\n this.logger = logger;\r\n this.pollAbort = new AbortController();\r\n this.logMessageContent = logMessageContent;\r\n this.running = false;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n Object.defineProperty(LongPollingTransport.prototype, \"pollAborted\", {\r\n // This is an internal type, not exported from 'index' so this is really just internal.\r\n get: function () {\r\n return this.pollAbort.aborted;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n LongPollingTransport.prototype.connect = function (url, transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var pollOptions, token, pollUrl, response;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this.url = url;\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Connecting.\");\r\n // Allow binary format on Node and Browsers that support binary content (indicated by the presence of responseType property)\r\n if (transferFormat === TransferFormat.Binary &&\r\n (typeof XMLHttpRequest !== \"undefined\" && typeof new XMLHttpRequest().responseType !== \"string\")) {\r\n throw new Error(\"Binary protocols over XmlHttpRequest not implementing advanced features are not supported.\");\r\n }\r\n pollOptions = {\r\n abortSignal: this.pollAbort.signal,\r\n headers: {},\r\n timeout: 100000,\r\n };\r\n if (transferFormat === TransferFormat.Binary) {\r\n pollOptions.responseType = \"arraybuffer\";\r\n }\r\n return [4 /*yield*/, this.getAccessToken()];\r\n case 1:\r\n token = _a.sent();\r\n this.updateHeaderToken(pollOptions, token);\r\n pollUrl = url + \"&_=\" + Date.now();\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) polling: \" + pollUrl + \".\");\r\n return [4 /*yield*/, this.httpClient.get(pollUrl, pollOptions)];\r\n case 2:\r\n response = _a.sent();\r\n if (response.statusCode !== 200) {\r\n this.logger.log(LogLevel.Error, \"(LongPolling transport) Unexpected response code: \" + response.statusCode + \".\");\r\n // Mark running as false so that the poll immediately ends and runs the close logic\r\n this.closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this.running = false;\r\n }\r\n else {\r\n this.running = true;\r\n }\r\n this.receiving = this.poll(this.url, pollOptions);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.getAccessToken = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this.accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2: return [2 /*return*/, null];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.updateHeaderToken = function (request, token) {\r\n if (!request.headers) {\r\n request.headers = {};\r\n }\r\n if (token) {\r\n // tslint:disable-next-line:no-string-literal\r\n request.headers[\"Authorization\"] = \"Bearer \" + token;\r\n return;\r\n }\r\n // tslint:disable-next-line:no-string-literal\r\n if (request.headers[\"Authorization\"]) {\r\n // tslint:disable-next-line:no-string-literal\r\n delete request.headers[\"Authorization\"];\r\n }\r\n };\r\n LongPollingTransport.prototype.poll = function (url, pollOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token, pollUrl, response, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, , 8, 9]);\r\n _a.label = 1;\r\n case 1:\r\n if (!this.running) return [3 /*break*/, 7];\r\n return [4 /*yield*/, this.getAccessToken()];\r\n case 2:\r\n token = _a.sent();\r\n this.updateHeaderToken(pollOptions, token);\r\n _a.label = 3;\r\n case 3:\r\n _a.trys.push([3, 5, , 6]);\r\n pollUrl = url + \"&_=\" + Date.now();\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) polling: \" + pollUrl + \".\");\r\n return [4 /*yield*/, this.httpClient.get(pollUrl, pollOptions)];\r\n case 4:\r\n response = _a.sent();\r\n if (response.statusCode === 204) {\r\n this.logger.log(LogLevel.Information, \"(LongPolling transport) Poll terminated by server.\");\r\n this.running = false;\r\n }\r\n else if (response.statusCode !== 200) {\r\n this.logger.log(LogLevel.Error, \"(LongPolling transport) Unexpected response code: \" + response.statusCode + \".\");\r\n // Unexpected status code\r\n this.closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this.running = false;\r\n }\r\n else {\r\n // Process the response\r\n if (response.content) {\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) data received. \" + getDataDetail(response.content, this.logMessageContent) + \".\");\r\n if (this.onreceive) {\r\n this.onreceive(response.content);\r\n }\r\n }\r\n else {\r\n // This is another way timeout manifest.\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n }\r\n return [3 /*break*/, 6];\r\n case 5:\r\n e_1 = _a.sent();\r\n if (!this.running) {\r\n // Log but disregard errors that occur after stopping\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Poll errored after shutdown: \" + e_1.message);\r\n }\r\n else {\r\n if (e_1 instanceof TimeoutError) {\r\n // Ignore timeouts and reissue the poll.\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n else {\r\n // Close the connection with the error as the result.\r\n this.closeError = e_1;\r\n this.running = false;\r\n }\r\n }\r\n return [3 /*break*/, 6];\r\n case 6: return [3 /*break*/, 1];\r\n case 7: return [3 /*break*/, 9];\r\n case 8:\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Polling complete.\");\r\n // We will reach here with pollAborted==false when the server returned a response causing the transport to stop.\r\n // If pollAborted==true then client initiated the stop and the stop method will raise the close event after DELETE is sent.\r\n if (!this.pollAborted) {\r\n this.raiseOnClose();\r\n }\r\n return [7 /*endfinally*/];\r\n case 9: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.send = function (data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (!this.running) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Cannot send until the transport is connected\"))];\r\n }\r\n return [2 /*return*/, sendMessage(this.logger, \"LongPolling\", this.httpClient, this.url, this.accessTokenFactory, data, this.logMessageContent)];\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.stop = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var deleteOptions, token;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Stopping polling.\");\r\n // Tell receiving loop to stop, abort any current request, and then wait for it to finish\r\n this.running = false;\r\n this.pollAbort.abort();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, , 5, 6]);\r\n return [4 /*yield*/, this.receiving];\r\n case 2:\r\n _a.sent();\r\n // Send DELETE to clean up long polling on the server\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) sending DELETE request to \" + this.url + \".\");\r\n deleteOptions = {\r\n headers: {},\r\n };\r\n return [4 /*yield*/, this.getAccessToken()];\r\n case 3:\r\n token = _a.sent();\r\n this.updateHeaderToken(deleteOptions, token);\r\n return [4 /*yield*/, this.httpClient.delete(this.url, deleteOptions)];\r\n case 4:\r\n _a.sent();\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) DELETE request sent.\");\r\n return [3 /*break*/, 6];\r\n case 5:\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Stop finished.\");\r\n // Raise close event here instead of in polling\r\n // It needs to happen after the DELETE request is sent\r\n this.raiseOnClose();\r\n return [7 /*endfinally*/];\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.raiseOnClose = function () {\r\n if (this.onclose) {\r\n var logMessage = \"(LongPolling transport) Firing onclose event.\";\r\n if (this.closeError) {\r\n logMessage += \" Error: \" + this.closeError;\r\n }\r\n this.logger.log(LogLevel.Trace, logMessage);\r\n this.onclose(this.closeError);\r\n }\r\n };\r\n return LongPollingTransport;\r\n}());\r\nexport { LongPollingTransport };\r\n//# sourceMappingURL=LongPollingTransport.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, sendMessage } from \"./Utils\";\r\n/** @private */\r\nvar ServerSentEventsTransport = /** @class */ (function () {\r\n function ServerSentEventsTransport(httpClient, accessTokenFactory, logger, logMessageContent, eventSourceConstructor) {\r\n this.httpClient = httpClient;\r\n this.accessTokenFactory = accessTokenFactory;\r\n this.logger = logger;\r\n this.logMessageContent = logMessageContent;\r\n this.eventSourceConstructor = eventSourceConstructor;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n ServerSentEventsTransport.prototype.connect = function (url, transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this.logger.log(LogLevel.Trace, \"(SSE transport) Connecting.\");\r\n // set url before accessTokenFactory because this.url is only for send and we set the auth header instead of the query string for send\r\n this.url = url;\r\n if (!this.accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _a.sent();\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + (\"access_token=\" + encodeURIComponent(token));\r\n }\r\n _a.label = 2;\r\n case 2: return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var opened = false;\r\n if (transferFormat !== TransferFormat.Text) {\r\n reject(new Error(\"The Server-Sent Events transport only supports the 'Text' transfer format\"));\r\n return;\r\n }\r\n var eventSource;\r\n if (typeof window !== \"undefined\") {\r\n eventSource = new _this.eventSourceConstructor(url, { withCredentials: true });\r\n }\r\n else {\r\n // Non-browser passes cookies via the dictionary\r\n var cookies = _this.httpClient.getCookieString(url);\r\n eventSource = new _this.eventSourceConstructor(url, { withCredentials: true, headers: { Cookie: cookies } });\r\n }\r\n try {\r\n eventSource.onmessage = function (e) {\r\n if (_this.onreceive) {\r\n try {\r\n _this.logger.log(LogLevel.Trace, \"(SSE transport) data received. \" + getDataDetail(e.data, _this.logMessageContent) + \".\");\r\n _this.onreceive(e.data);\r\n }\r\n catch (error) {\r\n _this.close(error);\r\n return;\r\n }\r\n }\r\n };\r\n eventSource.onerror = function (e) {\r\n var error = new Error(e.data || \"Error occurred\");\r\n if (opened) {\r\n _this.close(error);\r\n }\r\n else {\r\n reject(error);\r\n }\r\n };\r\n eventSource.onopen = function () {\r\n _this.logger.log(LogLevel.Information, \"SSE connected to \" + _this.url);\r\n _this.eventSource = eventSource;\r\n opened = true;\r\n resolve();\r\n };\r\n }\r\n catch (e) {\r\n reject(e);\r\n return;\r\n }\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n ServerSentEventsTransport.prototype.send = function (data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (!this.eventSource) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Cannot send until the transport is connected\"))];\r\n }\r\n return [2 /*return*/, sendMessage(this.logger, \"SSE\", this.httpClient, this.url, this.accessTokenFactory, data, this.logMessageContent)];\r\n });\r\n });\r\n };\r\n ServerSentEventsTransport.prototype.stop = function () {\r\n this.close();\r\n return Promise.resolve();\r\n };\r\n ServerSentEventsTransport.prototype.close = function (e) {\r\n if (this.eventSource) {\r\n this.eventSource.close();\r\n this.eventSource = undefined;\r\n if (this.onclose) {\r\n this.onclose(e);\r\n }\r\n }\r\n };\r\n return ServerSentEventsTransport;\r\n}());\r\nexport { ServerSentEventsTransport };\r\n//# sourceMappingURL=ServerSentEventsTransport.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail } from \"./Utils\";\r\n/** @private */\r\nvar WebSocketTransport = /** @class */ (function () {\r\n function WebSocketTransport(httpClient, accessTokenFactory, logger, logMessageContent, webSocketConstructor) {\r\n this.logger = logger;\r\n this.accessTokenFactory = accessTokenFactory;\r\n this.logMessageContent = logMessageContent;\r\n this.webSocketConstructor = webSocketConstructor;\r\n this.httpClient = httpClient;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n WebSocketTransport.prototype.connect = function (url, transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this.logger.log(LogLevel.Trace, \"(WebSockets transport) Connecting.\");\r\n if (!this.accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _a.sent();\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + (\"access_token=\" + encodeURIComponent(token));\r\n }\r\n _a.label = 2;\r\n case 2: return [2 /*return*/, new Promise(function (resolve, reject) {\r\n url = url.replace(/^http/, \"ws\");\r\n var webSocket;\r\n var cookies = _this.httpClient.getCookieString(url);\r\n if (typeof window === \"undefined\" && cookies) {\r\n // Only pass cookies when in non-browser environments\r\n webSocket = new _this.webSocketConstructor(url, undefined, {\r\n headers: {\r\n Cookie: \"\" + cookies,\r\n },\r\n });\r\n }\r\n if (!webSocket) {\r\n // Chrome is not happy with passing 'undefined' as protocol\r\n webSocket = new _this.webSocketConstructor(url);\r\n }\r\n if (transferFormat === TransferFormat.Binary) {\r\n webSocket.binaryType = \"arraybuffer\";\r\n }\r\n // tslint:disable-next-line:variable-name\r\n webSocket.onopen = function (_event) {\r\n _this.logger.log(LogLevel.Information, \"WebSocket connected to \" + url + \".\");\r\n _this.webSocket = webSocket;\r\n resolve();\r\n };\r\n webSocket.onerror = function (event) {\r\n var error = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n }\r\n reject(error);\r\n };\r\n webSocket.onmessage = function (message) {\r\n _this.logger.log(LogLevel.Trace, \"(WebSockets transport) data received. \" + getDataDetail(message.data, _this.logMessageContent) + \".\");\r\n if (_this.onreceive) {\r\n _this.onreceive(message.data);\r\n }\r\n };\r\n webSocket.onclose = function (event) { return _this.close(event); };\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n WebSocketTransport.prototype.send = function (data) {\r\n if (this.webSocket && this.webSocket.readyState === this.webSocketConstructor.OPEN) {\r\n this.logger.log(LogLevel.Trace, \"(WebSockets transport) sending data. \" + getDataDetail(data, this.logMessageContent) + \".\");\r\n this.webSocket.send(data);\r\n return Promise.resolve();\r\n }\r\n return Promise.reject(\"WebSocket is not in the OPEN state\");\r\n };\r\n WebSocketTransport.prototype.stop = function () {\r\n if (this.webSocket) {\r\n // Clear websocket handlers because we are considering the socket closed now\r\n this.webSocket.onclose = function () { };\r\n this.webSocket.onmessage = function () { };\r\n this.webSocket.onerror = function () { };\r\n this.webSocket.close();\r\n this.webSocket = undefined;\r\n // Manually invoke onclose callback inline so we know the HttpConnection was closed properly before returning\r\n // This also solves an issue where websocket.onclose could take 18+ seconds to trigger during network disconnects\r\n this.close(undefined);\r\n }\r\n return Promise.resolve();\r\n };\r\n WebSocketTransport.prototype.close = function (event) {\r\n // webSocket will be null if the transport did not start successfully\r\n this.logger.log(LogLevel.Trace, \"(WebSockets transport) socket closed.\");\r\n if (this.onclose) {\r\n if (event && (event.wasClean === false || event.code !== 1000)) {\r\n this.onclose(new Error(\"WebSocket closed with status code: \" + event.code + \" (\" + event.reason + \").\"));\r\n }\r\n else {\r\n this.onclose();\r\n }\r\n }\r\n };\r\n return WebSocketTransport;\r\n}());\r\nexport { WebSocketTransport };\r\n//# sourceMappingURL=WebSocketTransport.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { DefaultHttpClient } from \"./DefaultHttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { HttpTransportType, TransferFormat } from \"./ITransport\";\r\nimport { LongPollingTransport } from \"./LongPollingTransport\";\r\nimport { ServerSentEventsTransport } from \"./ServerSentEventsTransport\";\r\nimport { Arg, createLogger } from \"./Utils\";\r\nimport { WebSocketTransport } from \"./WebSocketTransport\";\r\nvar MAX_REDIRECTS = 100;\r\nvar WebSocketModule = null;\r\nvar EventSourceModule = null;\r\nif (typeof window === \"undefined\" && typeof require !== \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n var requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n WebSocketModule = requireFunc(\"ws\");\r\n EventSourceModule = requireFunc(\"eventsource\");\r\n}\r\n/** @private */\r\nvar HttpConnection = /** @class */ (function () {\r\n function HttpConnection(url, options) {\r\n if (options === void 0) { options = {}; }\r\n this.features = {};\r\n Arg.isRequired(url, \"url\");\r\n this.logger = createLogger(options.logger);\r\n this.baseUrl = this.resolveUrl(url);\r\n options = options || {};\r\n options.logMessageContent = options.logMessageContent || false;\r\n var isNode = typeof window === \"undefined\";\r\n if (!isNode && typeof WebSocket !== \"undefined\" && !options.WebSocket) {\r\n options.WebSocket = WebSocket;\r\n }\r\n else if (isNode && !options.WebSocket) {\r\n if (WebSocketModule) {\r\n options.WebSocket = WebSocketModule;\r\n }\r\n }\r\n if (!isNode && typeof EventSource !== \"undefined\" && !options.EventSource) {\r\n options.EventSource = EventSource;\r\n }\r\n else if (isNode && !options.EventSource) {\r\n if (typeof EventSourceModule !== \"undefined\") {\r\n options.EventSource = EventSourceModule;\r\n }\r\n }\r\n this.httpClient = options.httpClient || new DefaultHttpClient(this.logger);\r\n this.connectionState = 2 /* Disconnected */;\r\n this.options = options;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n HttpConnection.prototype.start = function (transferFormat) {\r\n 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 // Transport will not be null if state is connected\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 // Set error as soon as possible otherwise there is a race between\r\n // the transport closing and providing an error and the error from a close message\r\n // We would prefer the close message error.\r\n this.stopError = error;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.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 return [4 /*yield*/, this.transport.stop()];\r\n case 5:\r\n _a.sent();\r\n this.transport = undefined;\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.error) {\r\n throw Error(negotiateResponse.error);\r\n }\r\n if (negotiateResponse.ProtocolVersion) {\r\n throw Error(\"Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.\");\r\n }\r\n if (negotiateResponse.url) {\r\n url = negotiateResponse.url;\r\n }\r\n if (negotiateResponse.accessToken) {\r\n accessToken_1 = negotiateResponse.accessToken;\r\n this_1.accessTokenFactory = function () { return accessToken_1; };\r\n }\r\n redirects++;\r\n return [2 /*return*/];\r\n }\r\n });\r\n };\r\n this_1 = this;\r\n _a.label = 6;\r\n case 6: return [5 /*yield**/, _loop_1()];\r\n case 7:\r\n 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 = undefined;\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, headers, token, negotiateUrl, response, e_3;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!this.accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _b.sent();\r\n if (token) {\r\n headers = (_a = {},\r\n _a[\"Authorization\"] = \"Bearer \" + token,\r\n _a);\r\n }\r\n _b.label = 2;\r\n case 2:\r\n negotiateUrl = this.resolveNegotiateUrl(url);\r\n this.logger.log(LogLevel.Debug, \"Sending negotiation request: \" + negotiateUrl + \".\");\r\n _b.label = 3;\r\n case 3:\r\n _b.trys.push([3, 5, , 6]);\r\n return [4 /*yield*/, this.httpClient.post(negotiateUrl, {\r\n content: \"\",\r\n headers: headers,\r\n })];\r\n case 4:\r\n response = _b.sent();\r\n if (response.statusCode !== 200) {\r\n throw Error(\"Unexpected status code returned from negotiate \" + response.statusCode);\r\n }\r\n return [2 /*return*/, JSON.parse(response.content)];\r\n case 5:\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 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.createConnectUrl = function (url, connectionId) {\r\n if (!connectionId) {\r\n return url;\r\n }\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) 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 = undefined;\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 if (!this.options.WebSocket) {\r\n throw new Error(\"'WebSocket' is not supported in your environment.\");\r\n }\r\n return new WebSocketTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false, this.options.WebSocket);\r\n case HttpTransportType.ServerSentEvents:\r\n if (!this.options.EventSource) {\r\n throw new Error(\"'EventSource' is not supported in your environment.\");\r\n }\r\n return new ServerSentEventsTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false, this.options.EventSource);\r\n case HttpTransportType.LongPolling:\r\n return new LongPollingTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false);\r\n default:\r\n throw new Error(\"Unknown transport: \" + transport + \".\");\r\n }\r\n };\r\n HttpConnection.prototype.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 && !this.options.WebSocket) ||\r\n (transport === HttpTransportType.ServerSentEvents && !this.options.EventSource)) {\r\n this.logger.log(LogLevel.Debug, \"Skipping transport '\" + HttpTransportType[transport] + \"' because it is not supported in your environment.'\");\r\n }\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 this.transport = undefined;\r\n // If we have a stopError, it takes precedence over the error from the transport\r\n error = this.stopError || error;\r\n 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 };\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","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// 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\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\n/** @private */\r\nvar HandshakeProtocol = /** @class */ (function () {\r\n function HandshakeProtocol() {\r\n }\r\n // Handshake request is always JSON\r\n HandshakeProtocol.prototype.writeHandshakeRequest = function (handshakeRequest) {\r\n return TextMessageFormat.write(JSON.stringify(handshakeRequest));\r\n };\r\n HandshakeProtocol.prototype.parseHandshakeResponse = function (data) {\r\n var responseMessage;\r\n var messageData;\r\n var remainingData;\r\n if (isArrayBuffer(data) || (typeof Buffer !== \"undefined\" && data instanceof Buffer)) {\r\n // Format is binary but still need to read JSON text from handshake response\r\n var binaryData = new Uint8Array(data);\r\n var separatorIndex = binaryData.indexOf(TextMessageFormat.RecordSeparatorCode);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n var responseLength = separatorIndex + 1;\r\n messageData = String.fromCharCode.apply(null, binaryData.slice(0, responseLength));\r\n remainingData = (binaryData.byteLength > responseLength) ? binaryData.slice(responseLength).buffer : null;\r\n }\r\n else {\r\n var textData = data;\r\n var separatorIndex = textData.indexOf(TextMessageFormat.RecordSeparator);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n var responseLength = separatorIndex + 1;\r\n messageData = textData.substring(0, responseLength);\r\n remainingData = (textData.length > responseLength) ? textData.substring(responseLength) : null;\r\n }\r\n // At this point we should have just the single handshake message\r\n var messages = TextMessageFormat.parse(messageData);\r\n var response = JSON.parse(messages[0]);\r\n if (response.type) {\r\n throw new Error(\"Expected a handshake response from the server.\");\r\n }\r\n responseMessage = response;\r\n // multiple messages could have arrived with handshake\r\n // return additional data to be parsed as usual, or null if all parsed\r\n return [remainingData, responseMessage];\r\n };\r\n return HandshakeProtocol;\r\n}());\r\nexport { HandshakeProtocol };\r\n//# sourceMappingURL=HandshakeProtocol.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\nvar requestModule;\r\nif (typeof XMLHttpRequest === \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n var requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n requestModule = requireFunc(\"request\");\r\n}\r\nvar NodeHttpClient = /** @class */ (function (_super) {\r\n __extends(NodeHttpClient, _super);\r\n function NodeHttpClient(logger) {\r\n var _this = _super.call(this) || this;\r\n if (typeof requestModule === \"undefined\") {\r\n throw new Error(\"The 'request' module could not be loaded.\");\r\n }\r\n _this.logger = logger;\r\n _this.cookieJar = requestModule.jar();\r\n _this.request = requestModule.defaults({ jar: _this.cookieJar });\r\n return _this;\r\n }\r\n NodeHttpClient.prototype.send = function (httpRequest) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n var requestBody;\r\n if (isArrayBuffer(httpRequest.content)) {\r\n requestBody = Buffer.from(httpRequest.content);\r\n }\r\n else {\r\n requestBody = httpRequest.content || \"\";\r\n }\r\n var currentRequest = _this.request(httpRequest.url, {\r\n body: requestBody,\r\n // If binary is expected 'null' should be used, otherwise for text 'utf8'\r\n encoding: httpRequest.responseType === \"arraybuffer\" ? null : \"utf8\",\r\n headers: __assign({ \r\n // Tell auth middleware to 401 instead of redirecting\r\n \"X-Requested-With\": \"XMLHttpRequest\" }, httpRequest.headers),\r\n method: httpRequest.method,\r\n timeout: httpRequest.timeout,\r\n }, function (error, response, body) {\r\n if (httpRequest.abortSignal) {\r\n httpRequest.abortSignal.onabort = null;\r\n }\r\n if (error) {\r\n if (error.code === \"ETIMEDOUT\") {\r\n _this.logger.log(LogLevel.Warning, \"Timeout from HTTP request.\");\r\n reject(new TimeoutError());\r\n }\r\n _this.logger.log(LogLevel.Warning, \"Error from HTTP request. \" + error);\r\n reject(error);\r\n return;\r\n }\r\n if (response.statusCode >= 200 && response.statusCode < 300) {\r\n resolve(new HttpResponse(response.statusCode, response.statusMessage || \"\", body));\r\n }\r\n else {\r\n reject(new HttpError(response.statusMessage || \"\", response.statusCode || 0));\r\n }\r\n });\r\n if (httpRequest.abortSignal) {\r\n httpRequest.abortSignal.onabort = function () {\r\n currentRequest.abort();\r\n reject(new AbortError());\r\n };\r\n }\r\n });\r\n };\r\n NodeHttpClient.prototype.getCookieString = function (url) {\r\n return this.cookieJar.getCookieString(url);\r\n };\r\n return NodeHttpClient;\r\n}(HttpClient));\r\nexport { NodeHttpClient };\r\n//# sourceMappingURL=NodeHttpClient.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// These values are designed to match the ASP.NET Log Levels since that's the pattern we're emulating here.\r\n/** Indicates the severity of a log message.\r\n *\r\n * Log Levels are ordered in increasing severity. So `Debug` is more severe than `Trace`, etc.\r\n */\r\nexport var LogLevel;\r\n(function (LogLevel) {\r\n /** Log level for very low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Trace\"] = 0] = \"Trace\";\r\n /** Log level for low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\r\n /** Log level for informational diagnostic messages. */\r\n LogLevel[LogLevel[\"Information\"] = 2] = \"Information\";\r\n /** Log level for diagnostic messages that indicate a non-fatal problem. */\r\n LogLevel[LogLevel[\"Warning\"] = 3] = \"Warning\";\r\n /** Log level for diagnostic messages that indicate a failure in the current operation. */\r\n LogLevel[LogLevel[\"Error\"] = 4] = \"Error\";\r\n /** Log level for diagnostic messages that indicate a failure that will terminate the entire application. */\r\n LogLevel[LogLevel[\"Critical\"] = 5] = \"Critical\";\r\n /** The highest possible log level. Used when configuring logging to indicate that no log messages should be emitted. */\r\n LogLevel[LogLevel[\"None\"] = 6] = \"None\";\r\n})(LogLevel || (LogLevel = {}));\r\n//# sourceMappingURL=ILogger.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n/** 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 __assign = (this && this.__assign) || Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\n/** Represents an HTTP response. */\r\nvar HttpResponse = /** @class */ (function () {\r\n function HttpResponse(statusCode, statusText, content) {\r\n this.statusCode = statusCode;\r\n this.statusText = statusText;\r\n this.content = content;\r\n }\r\n return HttpResponse;\r\n}());\r\nexport { HttpResponse };\r\n/** Abstraction over an HTTP client.\r\n *\r\n * This class provides an abstraction over an HTTP client so that a different implementation can be provided on different platforms.\r\n */\r\nvar HttpClient = /** @class */ (function () {\r\n function HttpClient() {\r\n }\r\n HttpClient.prototype.get = function (url, options) {\r\n return this.send(__assign({}, options, { method: \"GET\", url: url }));\r\n };\r\n HttpClient.prototype.post = function (url, options) {\r\n return this.send(__assign({}, options, { method: \"POST\", url: url }));\r\n };\r\n HttpClient.prototype.delete = function (url, options) {\r\n return this.send(__assign({}, options, { method: \"DELETE\", url: url }));\r\n };\r\n /** Gets all cookies that apply to the specified URL.\r\n *\r\n * @param url The URL that the cookies are valid for.\r\n * @returns {string} A string containing all the key-value cookie pairs for the specified URL.\r\n */\r\n // @ts-ignore\r\n HttpClient.prototype.getCookieString = function (url) {\r\n return \"\";\r\n };\r\n return HttpClient;\r\n}());\r\nexport { HttpClient };\r\n//# sourceMappingURL=HttpClient.js.map","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\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/** Error thrown when an action is aborted. */\r\nvar AbortError = /** @class */ (function (_super) {\r\n __extends(AbortError, _super);\r\n /** Constructs a new instance of {@link AbortError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n function AbortError(errorMessage) {\r\n var _newTarget = this.constructor;\r\n if (errorMessage === void 0) { errorMessage = \"An abort occurred.\"; }\r\n var _this = this;\r\n var trueProto = _newTarget.prototype;\r\n _this = _super.call(this, errorMessage) || this;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n _this.__proto__ = trueProto;\r\n return _this;\r\n }\r\n return AbortError;\r\n}(Error));\r\nexport { AbortError };\r\n//# sourceMappingURL=Errors.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __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 detail = \"\";\r\n if (isArrayBuffer(data)) {\r\n detail = \"Binary data of length \" + data.byteLength;\r\n if (includeContent) {\r\n detail += \". Content: '\" + formatArrayBuffer(data) + \"'\";\r\n }\r\n }\r\n else if (typeof data === \"string\") {\r\n detail = \"String data of length \" + data.length;\r\n if (includeContent) {\r\n detail += \". Content: '\" + data + \"'\";\r\n }\r\n }\r\n return detail;\r\n}\r\n/** @private */\r\nexport function formatArrayBuffer(data) {\r\n var view = new Uint8Array(data);\r\n // Uint8Array.map only supports returning another Uint8Array?\r\n var str = \"\";\r\n view.forEach(function (num) {\r\n var pad = num < 16 ? \"0\" : \"\";\r\n str += \"0x\" + pad + num.toString(16) + \" \";\r\n });\r\n // Trim of trailing space.\r\n return str.substr(0, str.length - 1);\r\n}\r\n// Also in signalr-protocol-msgpack/Utils.ts\r\n/** @private */\r\nexport function isArrayBuffer(val) {\r\n return val && typeof ArrayBuffer !== \"undefined\" &&\r\n (val instanceof ArrayBuffer ||\r\n // Sometimes we get an ArrayBuffer that doesn't satisfy instanceof\r\n (val.constructor && val.constructor.name === \"ArrayBuffer\"));\r\n}\r\n/** @private */\r\nexport function sendMessage(logger, transportName, httpClient, url, accessTokenFactory, content, logMessageContent) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, headers, token, responseType, response;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, accessTokenFactory()];\r\n case 1:\r\n token = _b.sent();\r\n if (token) {\r\n headers = (_a = {},\r\n _a[\"Authorization\"] = \"Bearer \" + token,\r\n _a);\r\n }\r\n _b.label = 2;\r\n case 2:\r\n logger.log(LogLevel.Trace, \"(\" + transportName + \" transport) sending data. \" + getDataDetail(content, logMessageContent) + \".\");\r\n responseType = isArrayBuffer(content) ? \"arraybuffer\" : \"text\";\r\n return [4 /*yield*/, httpClient.post(url, {\r\n content: content,\r\n headers: headers,\r\n responseType: responseType,\r\n })];\r\n case 3:\r\n response = _b.sent();\r\n logger.log(LogLevel.Trace, \"(\" + transportName + \" transport) request complete. Response status: \" + response.statusCode + \".\");\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/** @private */\r\nexport function createLogger(logger) {\r\n if (logger === undefined) {\r\n return new ConsoleLogger(LogLevel.Information);\r\n }\r\n if (logger === null) {\r\n return NullLogger.instance;\r\n }\r\n if (logger.log) {\r\n return logger;\r\n }\r\n return new ConsoleLogger(logger);\r\n}\r\n/** @private */\r\nvar Subject = /** @class */ (function () {\r\n function Subject() {\r\n this.observers = [];\r\n }\r\n Subject.prototype.next = function (item) {\r\n for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {\r\n var observer = _a[_i];\r\n observer.next(item);\r\n }\r\n };\r\n Subject.prototype.error = function (err) {\r\n for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {\r\n var observer = _a[_i];\r\n if (observer.error) {\r\n observer.error(err);\r\n }\r\n }\r\n };\r\n Subject.prototype.complete = function () {\r\n for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {\r\n var observer = _a[_i];\r\n if (observer.complete) {\r\n observer.complete();\r\n }\r\n }\r\n };\r\n Subject.prototype.subscribe = function (observer) {\r\n this.observers.push(observer);\r\n return new SubjectSubscription(this, observer);\r\n };\r\n return Subject;\r\n}());\r\nexport { Subject };\r\n/** @private */\r\nvar SubjectSubscription = /** @class */ (function () {\r\n function SubjectSubscription(subject, observer) {\r\n this.subject = subject;\r\n this.observer = observer;\r\n }\r\n SubjectSubscription.prototype.dispose = function () {\r\n var index = this.subject.observers.indexOf(this.observer);\r\n if (index > -1) {\r\n this.subject.observers.splice(index, 1);\r\n }\r\n if (this.subject.observers.length === 0 && this.subject.cancelCallback) {\r\n this.subject.cancelCallback().catch(function (_) { });\r\n }\r\n };\r\n return SubjectSubscription;\r\n}());\r\nexport { SubjectSubscription };\r\n/** @private */\r\nvar ConsoleLogger = /** @class */ (function () {\r\n function ConsoleLogger(minimumLogLevel) {\r\n this.minimumLogLevel = minimumLogLevel;\r\n }\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(\"[\" + new Date().toISOString() + \"] \" + LogLevel[logLevel] + \": \" + message);\r\n break;\r\n case LogLevel.Warning:\r\n console.warn(\"[\" + new Date().toISOString() + \"] \" + LogLevel[logLevel] + \": \" + message);\r\n break;\r\n case LogLevel.Information:\r\n console.info(\"[\" + new Date().toISOString() + \"] \" + LogLevel[logLevel] + \": \" + message);\r\n break;\r\n default:\r\n // console.debug only goes to attached debuggers in Node, so we use console.log for Trace and Debug\r\n console.log(\"[\" + new Date().toISOString() + \"] \" + LogLevel[logLevel] + \": \" + message);\r\n break;\r\n }\r\n }\r\n };\r\n return ConsoleLogger;\r\n}());\r\nexport { ConsoleLogger };\r\n//# sourceMappingURL=Utils.js.map","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n"],"sourceRoot":""}