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