PageSourceSearch

https://wxuas.com/lib/@microsoft/signalr/dist/browser/signalr.js

js wxuas.com collected 2026-10-04 02:40:35 UTC 228,312 bytes, 4,922 lines download raw bytes

vendor: 8,112 bytes, lines 1-151
1(function webpackUniversalModuleDefinition(root, factory) {
2	if(typeof exports === 'object' && typeof module === 'object')
3		module.exports = factory();
4	else if(typeof define === 'function' && define.amd)
5		define([], factory);
6	else if(typeof exports === 'object')
7		exports["signalR"] = factory();
8	else
9		root["signalR"] = factory();
10})(window, function() {
11return /******/ (function(modules) { // webpackBootstrap
12/******/ 	// The module cache
13/******/ 	var installedModules = {};
14/******/
15/******/ 	// The require function
16/******/ 	function __webpack_require__(moduleId) {
17/******/
18/******/ 		// Check if module is in cache
19/******/ 		if(installedModules[moduleId]) {
20/******/ 			return installedModules[moduleId].exports;
21/******/ 		}
22/******/ 		// Create a new module (and put it into the cache)
23/******/ 		var module = installedModules[moduleId] = {
24/******/ 			i: moduleId,
25/******/ 			l: false,
26/******/ 			exports: {}
27/******/ 		};
28/******/
29/******/ 		// Execute the module function
30/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31/******/
32/******/ 		// Flag the module as loaded
33/******/ 		module.l = true;
34/******/
35/******/ 		// Return the exports of the module
36/******/ 		return module.exports;
37/******/ 	}
38/******/
39/******/
40/******/ 	// expose the modules object (__webpack_modules__)
41/******/ 	__webpack_require__.m = modules;
42/******/
43/******/ 	// expose the module cache
44/******/ 	__webpack_require__.c = installedModules;
45/******/
46/******/ 	// define getter function for harmony exports
47/******/ 	__webpack_require__.d = function(exports, name, getter) {
48/******/ 		if(!__webpack_require__.o(exports, name)) {
49/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
50/******/ 		}
51/******/ 	};
52/******/
53/******/ 	// define __esModule on exports
54/******/ 	__webpack_require__.r = function(exports) {
55/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
56/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
57/******/ 		}
58/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
59/******/ 	};
60/******/
61/******/ 	// create a fake namespace object
62/******/ 	// mode & 1: value is a module id, require it
63/******/ 	// mode & 2: merge all properties of value into the ns
64/******/ 	// mode & 4: return value when already ns object
65/******/ 	// mode & 8|1: behave like require
66/******/ 	__webpack_require__.t = function(value, mode) {
67/******/ 		if(mode & 1) value = __webpack_require__(value);
68/******/ 		if(mode & 8) return value;
69/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
70/******/ 		var ns = Object.create(null);
71/******/ 		__webpack_require__.r(ns);
72/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
73/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
74/******/ 		return ns;
75/******/ 	};
76/******/
77/******/ 	// getDefaultExport function for compatibility with non-harmony modules
78/******/ 	__webpack_require__.n = function(module) {
79/******/ 		var getter = module && module.__esModule ?
80/******/ 			function getDefault() { return module['default']; } :
81/******/ 			function getModuleExports() { return module; };
82/******/ 		__webpack_require__.d(getter, 'a', getter);
83/******/ 		return getter;
84/******/ 	};
85/******/
86/******/ 	// Object.prototype.hasOwnProperty.call
87/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
88/******/
89/******/ 	// __webpack_public_path__
90/******/ 	__webpack_require__.p = "";
91/******/
92/******/
93/******/ 	// Load entry module and return exports
94/******/ 	return __webpack_require__(__webpack_require__.s = 0);
95/******/ })
96/************************************************************************/
97/******/ ([
98/* 0 */
99/***/ (function(module, __webpack_exports__, __webpack_require__) {
100
101"use strict";
102__webpack_require__.r(__webpack_exports__);
103/* harmony import */ var es6_promise_dist_es6_promise_auto_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
104/* harmony import */ var es6_promise_dist_es6_promise_auto_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(es6_promise_dist_es6_promise_auto_js__WEBPACK_IMPORTED_MODULE_0__);
105/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
106/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VERSION", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["VERSION"]; });
107
108/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AbortError", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["AbortError"]; });
109
110/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HttpError", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["HttpError"]; });
111
112/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TimeoutError", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["TimeoutError"]; });
113
114/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HttpClient", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["HttpClient"]; });
115
116/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HttpResponse", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["HttpResponse"]; });
117
118/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DefaultHttpClient", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["DefaultHttpClient"]; });
119
120/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HubConnection", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["HubConnection"]; });
121
122/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HubConnectionState", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["HubConnectionState"]; });
123
124/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HubConnectionBuilder", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["HubConnectionBuilder"]; });
125
126/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MessageType", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["MessageType"]; });
127
128/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LogLevel", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["LogLevel"]; });
129
130/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HttpTransportType", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["HttpTransportType"]; });
131
132/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TransferFormat", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["TransferFormat"]; });
133
134/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NullLogger", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["NullLogger"]; });
135
136/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "JsonHubProtocol", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["JsonHubProtocol"]; });
137
138/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Subject", function() { return _index__WEBPACK_IMPORTED_MODULE_1__["Subject"]; });
139
140// Copyright (c) .NET Foundation. All rights reserved.
141// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
142// This is where we add any polyfills we'll need for the browser. It is the entry module for browser-specific builds.
143
144// Copy from Array.prototype into Uint8Array to polyfill on IE. It's OK because the implementations of indexOf and slice use properties
145// that exist on Uint8Array with the same name, and JavaScript is magic.
146// We make them 'writable' because the Buffer polyfill messes with it as well.
147if (!Uint8Array.prototype.indexOf) {
148    Object.defineProperty(Uint8Array.prototype, "indexOf", {
149        value: Array.prototype.indexOf,
150        writable: true,
151    });
152}
153if (!Uint8Array.prototype.slice) {
154    Object.defineProperty(Uint8Array.prototype, "slice", {
155        // wrap the slice in Uint8Array so it looks like a Uint8Array.slice call
156        // tslint:disable-next-line:object-literal-shorthand
157        value: function (start, end) { return new Uint8Array(Array.prototype.slice.call(this, start, end)); }
vendor: 13,379 bytes, lines 157-719
157,
158        writable: true,
159    });
160}
161if (!Uint8Array.prototype.forEach) {
162    Object.defineProperty(Uint8Array.prototype, "forEach", {
163        value: Array.prototype.forEach,
164        writable: true,
165    });
166}
167
168
169
170/***/ }),
171/* 1 */
172/***/ (function(module, exports, __webpack_require__) {
173
174/* WEBPACK VAR INJECTION */(function(global) {var require;/*!
175 * @overview es6-promise - a tiny implementation of Promises/A+.
176 * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
177 * @license   Licensed under MIT license
178 *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE
179 * @version   v4.2.2+97478eb6
180 */
181
182(function (global, factory) {
183	 true ? module.exports = factory() :
184	undefined;
185}(this, (function () { 'use strict';
186
187function objectOrFunction(x) {
188  var type = typeof x;
189  return x !== null && (type === 'object' || type === 'function');
190}
191
192function isFunction(x) {
193  return typeof x === 'function';
194}
195
196
197
198var _isArray = void 0;
199if (Array.isArray) {
200  _isArray = Array.isArray;
201} else {
202  _isArray = function (x) {
203    return Object.prototype.toString.call(x) === '[object Array]';
204  };
205}
206
207var isArray = _isArray;
208
209var len = 0;
210var vertxNext = void 0;
211var customSchedulerFn = void 0;
212
213var asap = function asap(callback, arg) {
214  queue[len] = callback;
215  queue[len + 1] = arg;
216  len += 2;
217  if (len === 2) {
218    // If len is 2, that means that we need to schedule an async flush.
219    // If additional callbacks are queued before the queue is flushed, they
220    // will be processed by this flush that we are scheduling.
221    if (customSchedulerFn) {
222      customSchedulerFn(flush);
223    } else {
224      scheduleFlush();
225    }
226  }
227};
228
229function setScheduler(scheduleFn) {
230  customSchedulerFn = scheduleFn;
231}
232
233function setAsap(asapFn) {
234  asap = asapFn;
235}
236
237var browserWindow = typeof window !== 'undefined' ? window : undefined;
238var browserGlobal = browserWindow || {};
239var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;
240var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';
241
242// test for web worker but not in IE10
243var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';
244
245// node
246function useNextTick() {
247  // node version 0.10.x displays a deprecation warning when nextTick is used recursively
248  // see https://github.com/cujojs/when/issues/410 for details
249  return function () {
250    return process.nextTick(flush);
251  };
252}
253
254// vertx
255function useVertxTimer() {
256  if (typeof vertxNext !== 'undefined') {
257    return function () {
258      vertxNext(flush);
259    };
260  }
261
262  return useSetTimeout();
263}
264
265function useMutationObserver() {
266  var iterations = 0;
267  var observer = new BrowserMutationObserver(flush);
268  var node = document.createTextNode('');
269  observer.observe(node, { characterData: true });
270
271  return function () {
272    node.data = iterations = ++iterations % 2;
273  };
274}
275
276// web worker
277function useMessageChannel() {
278  var channel = new MessageChannel();
279  channel.port1.onmessage = flush;
280  return function () {
281    return channel.port2.postMessage(0);
282  };
283}
284
285function useSetTimeout() {
286  // Store setTimeout reference so es6-promise will be unaffected by
287  // other code modifying setTimeout (like sinon.useFakeTimers())
288  var globalSetTimeout = setTimeout;
289  return function () {
290    return globalSetTimeout(flush, 1);
291  };
292}
293
294var queue = new Array(1000);
295function flush() {
296  for (var i = 0; i < len; i += 2) {
297    var callback = queue[i];
298    var arg = queue[i + 1];
299
300    callback(arg);
301
302    queue[i] = undefined;
303    queue[i + 1] = undefined;
304  }
305
306  len = 0;
307}
308
309function attemptVertx() {
310  try {
311    var r = require;
312    var vertx = __webpack_require__(!(function webpackMissingModule() { var e = new Error("Cannot find module 'vertx'"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));
313    vertxNext = vertx.runOnLoop || vertx.runOnContext;
314    return useVertxTimer();
315  } catch (e) {
316    return useSetTimeout();
317  }
318}
319
320var scheduleFlush = void 0;
321// Decide what async method to use to triggering processing of queued callbacks:
322if (isNode) {
323  scheduleFlush = useNextTick();
324} else if (BrowserMutationObserver) {
325  scheduleFlush = useMutationObserver();
326} else if (isWorker) {
327  scheduleFlush = useMessageChannel();
328} else if (browserWindow === undefined && "function" === 'function') {
329  scheduleFlush = attemptVertx();
330} else {
331  scheduleFlush = useSetTimeout();
332}
333
334function then(onFulfillment, onRejection) {
335  var parent = this;
336
337  var child = new this.constructor(noop);
338
339  if (child[PROMISE_ID] === undefined) {
340    makePromise(child);
341  }
342
343  var _state = parent._state;
344
345
346  if (_state) {
347    var callback = arguments[_state - 1];
348    asap(function () {
349      return invokeCallback(_state, child, callback, parent._result);
350    });
351  } else {
352    subscribe(parent, child, onFulfillment, onRejection);
353  }
354
355  return child;
356}
357
358/**
359  `Promise.resolve` returns a promise that will become resolved with the
360  passed `value`. It is shorthand for the following:
361
362  ```javascript
363  let promise = new Promise(function(resolve, reject){
364    resolve(1);
365  });
366
367  promise.then(function(value){
368    // value === 1
369  });
370  ```
371
372  Instead of writing the above, your code now simply becomes the following:
373
374  ```javascript
375  let promise = Promise.resolve(1);
376
377  promise.then(function(value){
378    // value === 1
379  });
380  ```
381
382  @method resolve
383  @static
384  @param {Any} value value that the returned promise will be resolved with
385  Useful for tooling.
386  @return {Promise} a promise that will become fulfilled with the given
387  `value`
388*/
389function resolve$1(object) {
390  /*jshint validthis:true */
391  var Constructor = this;
392
393  if (object && typeof object === 'object' && object.constructor === Constructor) {
394    return object;
395  }
396
397  var promise = new Constructor(noop);
398  resolve(promise, object);
399  return promise;
400}
401
402var PROMISE_ID = Math.random().toString(36).substring(16);
403
404function noop() {}
405
406var PENDING = void 0;
407var FULFILLED = 1;
408var REJECTED = 2;
409
410var GET_THEN_ERROR = new ErrorObject();
411
412function selfFulfillment() {
413  return new TypeError("You cannot resolve a promise with itself");
414}
415
416function cannotReturnOwn() {
417  return new TypeError('A promises callback cannot return that same promise.');
418}
419
420function getThen(promise) {
421  try {
422    return promise.then;
423  } catch (error) {
424    GET_THEN_ERROR.error = error;
425    return GET_THEN_ERROR;
426  }
427}
428
429function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {
430  try {
431    then$$1.call(value, fulfillmentHandler, rejectionHandler);
432  } catch (e) {
433    return e;
434  }
435}
436
437function handleForeignThenable(promise, thenable, then$$1) {
438  asap(function (promise) {
439    var sealed = false;
440    var error = tryThen(then$$1, thenable, function (value) {
441      if (sealed) {
442        return;
443      }
444      sealed = true;
445      if (thenable !== value) {
446        resolve(promise, value);
447      } else {
448        fulfill(promise, value);
449      }
450    }, function (reason) {
451      if (sealed) {
452        return;
453      }
454      sealed = true;
455
456      reject(promise, reason);
457    }, 'Settle: ' + (promise._label || ' unknown promise'));
458
459    if (!sealed && error) {
460      sealed = true;
461      reject(promise, error);
462    }
463  }, promise);
464}
465
466function handleOwnThenable(promise, thenable) {
467  if (thenable._state === FULFILLED) {
468    fulfill(promise, thenable._result);
469  } else if (thenable._state === REJECTED) {
470    reject(promise, thenable._result);
471  } else {
472    subscribe(thenable, undefined, function (value) {
473      return resolve(promise, value);
474    }, function (reason) {
475      return reject(promise, reason);
476    });
477  }
478}
479
480function handleMaybeThenable(promise, maybeThenable, then$$1) {
481  if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {
482    handleOwnThenable(promise, maybeThenable);
483  } else {
484    if (then$$1 === GET_THEN_ERROR) {
485      reject(promise, GET_THEN_ERROR.error);
486      GET_THEN_ERROR.error = null;
487    } else if (then$$1 === undefined) {
488      fulfill(promise, maybeThenable);
489    } else if (isFunction(then$$1)) {
490      handleForeignThenable(promise, maybeThenable, then$$1);
491    } else {
492      fulfill(promise, maybeThenable);
493    }
494  }
495}
496
497function resolve(promise, value) {
498  if (promise === value) {
499    reject(promise, selfFulfillment());
500  } else if (objectOrFunction(value)) {
501    handleMaybeThenable(promise, value, getThen(value));
502  } else {
503    fulfill(promise, value);
504  }
505}
506
507function publishRejection(promise) {
508  if (promise._onerror) {
509    promise._onerror(promise._result);
510  }
511
512  publish(promise);
513}
514
515function fulfill(promise, value) {
516  if (promise._state !== PENDING) {
517    return;
518  }
519
520  promise._result = value;
521  promise._state = FULFILLED;
522
523  if (promise._subscribers.length !== 0) {
524    asap(publish, promise);
525  }
526}
527
528function reject(promise, reason) {
529  if (promise._state !== PENDING) {
530    return;
531  }
532  promise._state = REJECTED;
533  promise._result = reason;
534
535  asap(publishRejection, promise);
536}
537
538function subscribe(parent, child, onFulfillment, onRejection) {
539  var _subscribers = parent._subscribers;
540  var length = _subscribers.length;
541
542
543  parent._onerror = null;
544
545  _subscribers[length] = child;
546  _subscribers[length + FULFILLED] = onFulfillment;
547  _subscribers[length + REJECTED] = onRejection;
548
549  if (length === 0 && parent._state) {
550    asap(publish, parent);
551  }
552}
553
554function publish(promise) {
555  var subscribers = promise._subscribers;
556  var settled = promise._state;
557
558  if (subscribers.length === 0) {
559    return;
560  }
561
562  var child = void 0,
563      callback = void 0,
564      detail = promise._result;
565
566  for (var i = 0; i < subscribers.length; i += 3) {
567    child = subscribers[i];
568    callback = subscribers[i + settled];
569
570    if (child) {
571      invokeCallback(settled, child, callback, detail);
572    } else {
573      callback(detail);
574    }
575  }
576
577  promise._subscribers.length = 0;
578}
579
580function ErrorObject() {
581  this.error = null;
582}
583
584var TRY_CATCH_ERROR = new ErrorObject();
585
586function tryCatch(callback, detail) {
587  try {
588    return callback(detail);
589  } catch (e) {
590    TRY_CATCH_ERROR.error = e;
591    return TRY_CATCH_ERROR;
592  }
593}
594
595function invokeCallback(settled, promise, callback, detail) {
596  var hasCallback = isFunction(callback),
597      value = void 0,
598      error = void 0,
599      succeeded = void 0,
600      failed = void 0;
601
602  if (hasCallback) {
603    value = tryCatch(callback, detail);
604
605    if (value === TRY_CATCH_ERROR) {
606      failed = true;
607      error = value.error;
608      value.error = null;
609    } else {
610      succeeded = true;
611    }
612
613    if (promise === value) {
614      reject(promise, cannotReturnOwn());
615      return;
616    }
617  } else {
618    value = detail;
619    succeeded = true;
620  }
621
622  if (promise._state !== PENDING) {
623    // noop
624  } else if (hasCallback && succeeded) {
625    resolve(promise, value);
626  } else if (failed) {
627    reject(promise, error);
628  } else if (settled === FULFILLED) {
629    fulfill(promise, value);
630  } else if (settled === REJECTED) {
631    reject(promise, value);
632  }
633}
634
635function initializePromise(promise, resolver) {
636  try {
637    resolver(function resolvePromise(value) {
638      resolve(promise, value);
639    }, function rejectPromise(reason) {
640      reject(promise, reason);
641    });
642  } catch (e) {
643    reject(promise, e);
644  }
645}
646
647var id = 0;
648function nextId() {
649  return id++;
650}
651
652function makePromise(promise) {
653  promise[PROMISE_ID] = id++;
654  promise._state = undefined;
655  promise._result = undefined;
656  promise._subscribers = [];
657}
658
659function validationError() {
660  return new Error('Array Methods must be provided an Array');
661}
662
663function validationError() {
664  return new Error('Array Methods must be provided an Array');
665}
666
667var Enumerator = function () {
668  function Enumerator(Constructor, input) {
669    this._instanceConstructor = Constructor;
670    this.promise = new Constructor(noop);
671
672    if (!this.promise[PROMISE_ID]) {
673      makePromise(this.promise);
674    }
675
676    if (isArray(input)) {
677      this.length = input.length;
678      this._remaining = input.length;
679
680      this._result = new Array(this.length);
681
682      if (this.length === 0) {
683        fulfill(this.promise, this._result);
684      } else {
685        this.length = this.length || 0;
686        this._enumerate(input);
687        if (this._remaining === 0) {
688          fulfill(this.promise, this._result);
689        }
690      }
691    } else {
692      reject(this.promise, validationError());
693    }
694  }
695
696  Enumerator.prototype._enumerate = function _enumerate(input) {
697    for (var i = 0; this._state === PENDING && i < input.length; i++) {
698      this._eachEntry(input[i], i);
699    }
700  };
701
702  Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {
703    var c = this._instanceConstructor;
704    var resolve$$1 = c.resolve;
705
706
707    if (resolve$$1 === resolve$1) {
708      var _then = getThen(entry);
709
710      if (_then === then && entry._state !== PENDING) {
711        this._settledAt(entry._state, i, entry._result);
712      } else if (typeof _then !== 'function') {
713        this._remaining--;
714        this._result[i] = entry;
715      } else if (c === Promise$2) {
716        var promise = new c(noop);
717        handleMaybeThenable(promise, entry, _then);
718        this._willSettleAt(promise, i);
719      } else {
vendor: 5,984 bytes, lines 720-942
720        this._willSettleAt(new c(function (resolve$$1) {
721          return resolve$$1(entry);
722        }), i);
723      }
724    } else {
725      this._willSettleAt(resolve$$1(entry), i);
726    }
727  };
728
729  Enumerator.prototype._settledAt = function _settledAt(state, i, value) {
730    var promise = this.promise;
731
732
733    if (promise._state === PENDING) {
734      this._remaining--;
735
736      if (state === REJECTED) {
737        reject(promise, value);
738      } else {
739        this._result[i] = value;
740      }
741    }
742
743    if (this._remaining === 0) {
744      fulfill(promise, this._result);
745    }
746  };
747
748  Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {
749    var enumerator = this;
750
751    subscribe(promise, undefined, function (value) {
752      return enumerator._settledAt(FULFILLED, i, value);
753    }, function (reason) {
754      return enumerator._settledAt(REJECTED, i, reason);
755    });
756  };
757
758  return Enumerator;
759}();
760
761/**
762  `Promise.all` accepts an array of promises, and returns a new promise which
763  is fulfilled with an array of fulfillment values for the passed promises, or
764  rejected with the reason of the first passed promise to be rejected. It casts all
765  elements of the passed iterable to promises as it runs this algorithm.
766
767  Example:
768
769  ```javascript
770  let promise1 = resolve(1);
771  let promise2 = resolve(2);
772  let promise3 = resolve(3);
773  let promises = [ promise1, promise2, promise3 ];
774
775  Promise.all(promises).then(function(array){
776    // The array here would be [ 1, 2, 3 ];
777  });
778  ```
779
780  If any of the `promises` given to `all` are rejected, the first promise
781  that is rejected will be given as an argument to the returned promises's
782  rejection handler. For example:
783
784  Example:
785
786  ```javascript
787  let promise1 = resolve(1);
788  let promise2 = reject(new Error("2"));
789  let promise3 = reject(new Error("3"));
790  let promises = [ promise1, promise2, promise3 ];
791
792  Promise.all(promises).then(function(array){
793    // Code here never runs because there are rejected promises!
794  }, function(error) {
795    // error.message === "2"
796  });
797  ```
798
799  @method all
800  @static
801  @param {Array} entries array of promises
802  @param {String} label optional string for labeling the promise.
803  Useful for tooling.
804  @return {Promise} promise that is fulfilled when all `promises` have been
805  fulfilled, or rejected if any of them become rejected.
806  @static
807*/
808function all(entries) {
809  return new Enumerator(this, entries).promise;
810}
811
812/**
813  `Promise.race` returns a new promise which is settled in the same way as the
814  first passed promise to settle.
815
816  Example:
817
818  ```javascript
819  let promise1 = new Promise(function(resolve, reject){
820    setTimeout(function(){
821      resolve('promise 1');
822    }, 200);
823  });
824
825  let promise2 = new Promise(function(resolve, reject){
826    setTimeout(function(){
827      resolve('promise 2');
828    }, 100);
829  });
830
831  Promise.race([promise1, promise2]).then(function(result){
832    // result === 'promise 2' because it was resolved before promise1
833    // was resolved.
834  });
835  ```
836
837  `Promise.race` is deterministic in that only the state of the first
838  settled promise matters. For example, even if other promises given to the
839  `promises` array argument are resolved, but the first settled promise has
840  become rejected before the other promises became fulfilled, the returned
841  promise will become rejected:
842
843  ```javascript
844  let promise1 = new Promise(function(resolve, reject){
845    setTimeout(function(){
846      resolve('promise 1');
847    }, 200);
848  });
849
850  let promise2 = new Promise(function(resolve, reject){
851    setTimeout(function(){
852      reject(new Error('promise 2'));
853    }, 100);
854  });
855
856  Promise.race([promise1, promise2]).then(function(result){
857    // Code here never runs
858  }, function(reason){
859    // reason.message === 'promise 2' because promise 2 became rejected before
860    // promise 1 became fulfilled
861  });
862  ```
863
864  An example real-world use case is implementing timeouts:
865
866  ```javascript
867  Promise.race([ajax('foo.json'), timeout(5000)])
868  ```
869
870  @method race
871  @static
872  @param {Array} promises array of promises to observe
873  Useful for tooling.
874  @return {Promise} a promise which settles in the same way as the first passed
875  promise to settle.
876*/
877function race(entries) {
878  /*jshint validthis:true */
879  var Constructor = this;
880
881  if (!isArray(entries)) {
882    return new Constructor(function (_, reject) {
883      return reject(new TypeError('You must pass an array to race.'));
884    });
885  } else {
886    return new Constructor(function (resolve, reject) {
887      var length = entries.length;
888      for (var i = 0; i < length; i++) {
889        Constructor.resolve(entries[i]).then(resolve, reject);
890      }
891    });
892  }
893}
894
895/**
896  `Promise.reject` returns a promise rejected with the passed `reason`.
897  It is shorthand for the following:
898
899  ```javascript
900  let promise = new Promise(function(resolve, reject){
901    reject(new Error('WHOOPS'));
902  });
903
904  promise.then(function(value){
905    // Code here doesn't run because the promise is rejected!
906  }, function(reason){
907    // reason.message === 'WHOOPS'
908  });
909  ```
910
911  Instead of writing the above, your code now simply becomes the following:
912
913  ```javascript
914  let promise = Promise.reject(new Error('WHOOPS'));
915
916  promise.then(function(value){
917    // Code here doesn't run because the promise is rejected!
918  }, function(reason){
919    // reason.message === 'WHOOPS'
920  });
921  ```
922
923  @method reject
924  @static
925  @param {Any} reason value that the returned promise will be rejected with.
926  Useful for tooling.
927  @return {Promise} a promise rejected with the given `reason`.
928*/
929function reject$1(reason) {
930  /*jshint validthis:true */
931  var Constructor = this;
932  var promise = new Constructor(noop);
933  reject(promise, reason);
934  return promise;
935}
936
937function needsResolver() {
938  throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');
939}
940
941function needsNew() {
942  throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object c
vendor: 5,964 bytes, lines 942-1131
942onstructor cannot be called as a function.");
943}
944
945/**
946  Promise objects represent the eventual result of an asynchronous operation. The
947  primary way of interacting with a promise is through its `then` method, which
948  registers callbacks to receive either a promise's eventual value or the reason
949  why the promise cannot be fulfilled.
950
951  Terminology
952  -----------
953
954  - `promise` is an object or function with a `then` method whose behavior conforms to this specification.
955  - `thenable` is an object or function that defines a `then` method.
956  - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).
957  - `exception` is a value that is thrown using the throw statement.
958  - `reason` is a value that indicates why a promise was rejected.
959  - `settled` the final resting state of a promise, fulfilled or rejected.
960
961  A promise can be in one of three states: pending, fulfilled, or rejected.
962
963  Promises that are fulfilled have a fulfillment value and are in the fulfilled
964  state.  Promises that are rejected have a rejection reason and are in the
965  rejected state.  A fulfillment value is never a thenable.
966
967  Promises can also be said to *resolve* a value.  If this value is also a
968  promise, then the original promise's settled state will match the value's
969  settled state.  So a promise that *resolves* a promise that rejects will
970  itself reject, and a promise that *resolves* a promise that fulfills will
971  itself fulfill.
972
973
974  Basic Usage:
975  ------------
976
977  ```js
978  let promise = new Promise(function(resolve, reject) {
979    // on success
980    resolve(value);
981
982    // on failure
983    reject(reason);
984  });
985
986  promise.then(function(value) {
987    // on fulfillment
988  }, function(reason) {
989    // on rejection
990  });
991  ```
992
993  Advanced Usage:
994  ---------------
995
996  Promises shine when abstracting away asynchronous interactions such as
997  `XMLHttpRequest`s.
998
999  ```js
1000  function getJSON(url) {
1001    return new Promise(function(resolve, reject){
1002      let xhr = new XMLHttpRequest();
1003
1004      xhr.open('GET', url);
1005      xhr.onreadystatechange = handler;
1006      xhr.responseType = 'json';
1007      xhr.setRequestHeader('Accept', 'application/json');
1008      xhr.send();
1009
1010      function handler() {
1011        if (this.readyState === this.DONE) {
1012          if (this.status === 200) {
1013            resolve(this.response);
1014          } else {
1015            reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));
1016          }
1017        }
1018      };
1019    });
1020  }
1021
1022  getJSON('/posts.json').then(function(json) {
1023    // on fulfillment
1024  }, function(reason) {
1025    // on rejection
1026  });
1027  ```
1028
1029  Unlike callbacks, promises are great composable primitives.
1030
1031  ```js
1032  Promise.all([
1033    getJSON('/posts'),
1034    getJSON('/comments')
1035  ]).then(function(values){
1036    values[0] // => postsJSON
1037    values[1] // => commentsJSON
1038
1039    return values;
1040  });
1041  ```
1042
1043  @class Promise
1044  @param {Function} resolver
1045  Useful for tooling.
1046  @constructor
1047*/
1048
1049var Promise$2 = function () {
1050  function Promise(resolver) {
1051    this[PROMISE_ID] = nextId();
1052    this._result = this._state = undefined;
1053    this._subscribers = [];
1054
1055    if (noop !== resolver) {
1056      typeof resolver !== 'function' && needsResolver();
1057      this instanceof Promise ? initializePromise(this, resolver) : needsNew();
1058    }
1059  }
1060
1061  /**
1062  The primary way of interacting with a promise is through its `then` method,
1063  which registers callbacks to receive either a promise's eventual value or the
1064  reason why the promise cannot be fulfilled.
1065   ```js
1066  findUser().then(function(user){
1067    // user is available
1068  }, function(reason){
1069    // user is unavailable, and you are given the reason why
1070  });
1071  ```
1072   Chaining
1073  --------
1074   The return value of `then` is itself a promise.  This second, 'downstream'
1075  promise is resolved with the return value of the first promise's fulfillment
1076  or rejection handler, or rejected if the handler throws an exception.
1077   ```js
1078  findUser().then(function (user) {
1079    return user.name;
1080  }, function (reason) {
1081    return 'default name';
1082  }).then(function (userName) {
1083    // If `findUser` fulfilled, `userName` will be the user's name, otherwise it
1084    // will be `'default name'`
1085  });
1086   findUser().then(function (user) {
1087    throw new Error('Found user, but still unhappy');
1088  }, function (reason) {
1089    throw new Error('`findUser` rejected and we're unhappy');
1090  }).then(function (value) {
1091    // never reached
1092  }, function (reason) {
1093    // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.
1094    // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.
1095  });
1096  ```
1097  If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.
1098   ```js
1099  findUser().then(function (user) {
1100    throw new PedagogicalException('Upstream error');
1101  }).then(function (value) {
1102    // never reached
1103  }).then(function (value) {
1104    // never reached
1105  }, function (reason) {
1106    // The `PedgagocialException` is propagated all the way down to here
1107  });
1108  ```
1109   Assimilation
1110  ------------
1111   Sometimes the value you want to propagate to a downstream promise can only be
1112  retrieved asynchronously. This can be achieved by returning a promise in the
1113  fulfillment or rejection handler. The downstream promise will then be pending
1114  until the returned promise is settled. This is called *assimilation*.
1115   ```js
1116  findUser().then(function (user) {
1117    return findCommentsByAuthor(user);
1118  }).then(function (comments) {
1119    // The user's comments are now available
1120  });
1121  ```
1122   If the assimliated promise rejects, then the downstream promise will also reject.
1123   ```js
1124  findUser().then(function (user) {
1125    return findCommentsByAuthor(user);
1126  }).then(function (comments) {
1127    // If `findCommentsByAuthor` fulfills, we'll have the value here
1128  }, function (reason) {
1129    // If `findCommentsByAuthor` rejects, we'll have the reason here
1130  });
1131  ```
vendor: 5,621 bytes, lines 1132-1402
1132   Simple Example
1133  --------------
1134   Synchronous Example
1135   ```javascript
1136  let result;
1137   try {
1138    result = findResult();
1139    // success
1140  } catch(reason) {
1141    // failure
1142  }
1143  ```
1144   Errback Example
1145   ```js
1146  findResult(function(result, err){
1147    if (err) {
1148      // failure
1149    } else {
1150      // success
1151    }
1152  });
1153  ```
1154   Promise Example;
1155   ```javascript
1156  findResult().then(function(result){
1157    // success
1158  }, function(reason){
1159    // failure
1160  });
1161  ```
1162   Advanced Example
1163  --------------
1164   Synchronous Example
1165   ```javascript
1166  let author, books;
1167   try {
1168    author = findAuthor();
1169    books  = findBooksByAuthor(author);
1170    // success
1171  } catch(reason) {
1172    // failure
1173  }
1174  ```
1175   Errback Example
1176   ```js
1177   function foundBooks(books) {
1178   }
1179   function failure(reason) {
1180   }
1181   findAuthor(function(author, err){
1182    if (err) {
1183      failure(err);
1184      // failure
1185    } else {
1186      try {
1187        findBoooksByAuthor(author, function(books, err) {
1188          if (err) {
1189            failure(err);
1190          } else {
1191            try {
1192              foundBooks(books);
1193            } catch(reason) {
1194              failure(reason);
1195            }
1196          }
1197        });
1198      } catch(error) {
1199        failure(err);
1200      }
1201      // success
1202    }
1203  });
1204  ```
1205   Promise Example;
1206   ```javascript
1207  findAuthor().
1208    then(findBooksByAuthor).
1209    then(function(books){
1210      // found books
1211  }).catch(function(reason){
1212    // something went wrong
1213  });
1214  ```
1215   @method then
1216  @param {Function} onFulfilled
1217  @param {Function} onRejected
1218  Useful for tooling.
1219  @return {Promise}
1220  */
1221
1222  /**
1223  `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same
1224  as the catch block of a try/catch statement.
1225  ```js
1226  function findAuthor(){
1227  throw new Error('couldn't find that author');
1228  }
1229  // synchronous
1230  try {
1231  findAuthor();
1232  } catch(reason) {
1233  // something went wrong
1234  }
1235  // async with promises
1236  findAuthor().catch(function(reason){
1237  // something went wrong
1238  });
1239  ```
1240  @method catch
1241  @param {Function} onRejection
1242  Useful for tooling.
1243  @return {Promise}
1244  */
1245
1246
1247  Promise.prototype.catch = function _catch(onRejection) {
1248    return this.then(null, onRejection);
1249  };
1250
1251  /**
1252    `finally` will be invoked regardless of the promise's fate just as native
1253    try/catch/finally behaves
1254  
1255    Synchronous example:
1256  
1257    ```js
1258    findAuthor() {
1259      if (Math.random() > 0.5) {
1260        throw new Error();
1261      }
1262      return new Author();
1263    }
1264  
1265    try {
1266      return findAuthor(); // succeed or fail
1267    } catch(error) {
1268      return findOtherAuther();
1269    } finally {
1270      // always runs
1271      // doesn't affect the return value
1272    }
1273    ```
1274  
1275    Asynchronous example:
1276  
1277    ```js
1278    findAuthor().catch(function(reason){
1279      return findOtherAuther();
1280    }).finally(function(){
1281      // author was either found, or not
1282    });
1283    ```
1284  
1285    @method finally
1286    @param {Function} callback
1287    @return {Promise}
1288  */
1289
1290
1291  Promise.prototype.finally = function _finally(callback) {
1292    var promise = this;
1293    var constructor = promise.constructor;
1294
1295    return promise.then(function (value) {
1296      return constructor.resolve(callback()).then(function () {
1297        return value;
1298      });
1299    }, function (reason) {
1300      return constructor.resolve(callback()).then(function () {
1301        throw reason;
1302      });
1303    });
1304  };
1305
1306  return Promise;
1307}();
1308
1309Promise$2.prototype.then = then;
1310Promise$2.all = all;
1311Promise$2.race = race;
1312Promise$2.resolve = resolve$1;
1313Promise$2.reject = reject$1;
1314Promise$2._setScheduler = setScheduler;
1315Promise$2._setAsap = setAsap;
1316Promise$2._asap = asap;
1317
1318/*global self*/
1319function polyfill() {
1320    var local = void 0;
1321
1322    if (typeof global !== 'undefined') {
1323        local = global;
1324    } else if (typeof self !== 'undefined') {
1325        local = self;
1326    } else {
1327        try {
1328            local = Function('return this')();
1329        } catch (e) {
1330            throw new Error('polyfill failed because global object is unavailable in this environment');
1331        }
1332    }
1333
1334    var P = local.Promise;
1335
1336    if (P) {
1337        var promiseToString = null;
1338        try {
1339            promiseToString = Object.prototype.toString.call(P.resolve());
1340        } catch (e) {
1341            // silently ignored
1342        }
1343
1344        if (promiseToString === '[object Promise]' && !P.cast) {
1345            return;
1346        }
1347    }
1348
1349    local.Promise = Promise$2;
1350}
1351
1352// Strange compat..
1353Promise$2.polyfill = polyfill;
1354Promise$2.Promise = Promise$2;
1355
1356Promise$2.polyfill();
1357
1358return Promise$2;
1359
1360})));
1361
1362
1363
1364//# sourceMappingURL=es6-promise.auto.map
1365
1366/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(2)))
1367
1368/***/ }),
1369/* 2 */
1370/***/ (function(module, exports) {
1371
1372var g;
1373
1374// This works in non-strict mode
1375g = (function() {
1376	return this;
1377})();
1378
1379try {
1380	// This works if eval is allowed (see CSP)
1381	g = g || new Function("return this")();
1382} catch (e) {
1383	// This works if the window reference is available
1384	if (typeof window === "object") g = window;
1385}
1386
1387// g can still be undefined, but nothing to do about it...
1388// We return undefined, instead of nothing here, so it's
1389// easier to handle this case. if(!global) { ...}
1390
1391module.exports = g;
1392
1393
1394/***/ }),
1395/* 3 */
1396/***/ (function(module, __webpack_exports__, __webpack_require__) {
1397
1398"use strict";
1399__webpack_require__.r(__webpack_exports__);
1400/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VERSION", function() { return VERSION; });
1401/* harmony import */ var _Errors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
1402/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "
vendor: 12,518 bytes, lines 1402-1655
1402AbortError", function() { return _Errors__WEBPACK_IMPORTED_MODULE_0__["AbortError"]; });
1403
1404/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HttpError", function() { return _Errors__WEBPACK_IMPORTED_MODULE_0__["HttpError"]; });
1405
1406/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TimeoutError", function() { return _Errors__WEBPACK_IMPORTED_MODULE_0__["TimeoutError"]; });
1407
1408/* harmony import */ var _HttpClient__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
1409/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HttpClient", function() { return _HttpClient__WEBPACK_IMPORTED_MODULE_1__["HttpClient"]; });
1410
1411/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HttpResponse", function() { return _HttpClient__WEBPACK_IMPORTED_MODULE_1__["HttpResponse"]; });
1412
1413/* harmony import */ var _DefaultHttpClient__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6);
1414/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DefaultHttpClient", function() { return _DefaultHttpClient__WEBPACK_IMPORTED_MODULE_2__["DefaultHttpClient"]; });
1415
1416/* harmony import */ var _HubConnection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10);
1417/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HubConnection", function() { return _HubConnection__WEBPACK_IMPORTED_MODULE_3__["HubConnection"]; });
1418
1419/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HubConnectionState", function() { return _HubConnection__WEBPACK_IMPORTED_MODULE_3__["HubConnectionState"]; });
1420
1421/* harmony import */ var _HubConnectionBuilder__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(17);
1422/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HubConnectionBuilder", function() { return _HubConnectionBuilder__WEBPACK_IMPORTED_MODULE_4__["HubConnectionBuilder"]; });
1423
1424/* harmony import */ var _IHubProtocol__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(15);
1425/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MessageType", function() { return _IHubProtocol__WEBPACK_IMPORTED_MODULE_5__["MessageType"]; });
1426
1427/* harmony import */ var _ILogger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(9);
1428/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LogLevel", function() { return _ILogger__WEBPACK_IMPORTED_MODULE_6__["LogLevel"]; });
1429
1430/* harmony import */ var _ITransport__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(20);
1431/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HttpTransportType", function() { return _ITransport__WEBPACK_IMPORTED_MODULE_7__["HttpTransportType"]; });
1432
1433/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TransferFormat", function() { return _ITransport__WEBPACK_IMPORTED_MODULE_7__["TransferFormat"]; });
1434
1435/* harmony import */ var _Loggers__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(14);
1436/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NullLogger", function() { return _Loggers__WEBPACK_IMPORTED_MODULE_8__["NullLogger"]; });
1437
1438/* harmony import */ var _JsonHubProtocol__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(25);
1439/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "JsonHubProtocol", function() { return _JsonHubProtocol__WEBPACK_IMPORTED_MODULE_9__["JsonHubProtocol"]; });
1440
1441/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(16);
1442/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Subject", function() { return _Subject__WEBPACK_IMPORTED_MODULE_10__["Subject"]; });
1443
1444// Copyright (c) .NET Foundation. All rights reserved.
1445// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
1446// Version token that will be replaced by the prepack command
1447/** The version of the SignalR client. */
1448var VERSION = "3.1.4";
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462/***/ }),
1463/* 4 */
1464/***/ (function(module, __webpack_exports__, __webpack_require__) {
1465
1466"use strict";
1467__webpack_require__.r(__webpack_exports__);
1468/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HttpError", function() { return HttpError; });
1469/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TimeoutError", function() { return TimeoutError; });
1470/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AbortError", function() { return AbortError; });
1471// Copyright (c) .NET Foundation. All rights reserved.
1472// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
1473var __extends = (undefined && undefined.__extends) || (function () {
1474    var extendStatics = Object.setPrototypeOf ||
1475        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
1476        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
1477    return function (d, b) {
1478        extendStatics(d, b);
1479        function __() { this.constructor = d; }
1480        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
1481    };
1482})();
1483/** Error thrown when an HTTP request fails. */
1484var HttpError = /** @class */ (function (_super) {
1485    __extends(HttpError, _super);
1486    /** Constructs a new instance of {@link @microsoft/signalr.HttpError}.
1487     *
1488     * @param {string} errorMessage A descriptive error message.
1489     * @param {number} statusCode The HTTP status code represented by this error.
1490     */
1491    function HttpError(errorMessage, statusCode) {
1492        var _newTarget = this.constructor;
1493        var _this = this;
1494        var trueProto = _newTarget.prototype;
1495        _this = _super.call(this, errorMessage) || this;
1496        _this.statusCode = statusCode;
1497        // Workaround issue in Typescript compiler
1498        // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200
1499        _this.__proto__ = trueProto;
1500        return _this;
1501    }
1502    return HttpError;
1503}(Error));
1504
1505/** Error thrown when a timeout elapses. */
1506var TimeoutError = /** @class */ (function (_super) {
1507    __extends(TimeoutError, _super);
1508    /** Constructs a new instance of {@link @microsoft/signalr.TimeoutError}.
1509     *
1510     * @param {string} errorMessage A descriptive error message.
1511     */
1512    function TimeoutError(errorMessage) {
1513        var _newTarget = this.constructor;
1514        if (errorMessage === void 0) { errorMessage = "A timeout occurred."; }
1515        var _this = this;
1516        var trueProto = _newTarget.prototype;
1517        _this = _super.call(this, errorMessage) || this;
1518        // Workaround issue in Typescript compiler
1519        // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200
1520        _this.__proto__ = trueProto;
1521        return _this;
1522    }
1523    return TimeoutError;
1524}(Error));
1525
1526/** Error thrown when an action is aborted. */
1527var AbortError = /** @class */ (function (_super) {
1528    __extends(AbortError, _super);
1529    /** Constructs a new instance of {@link AbortError}.
1530     *
1531     * @param {string} errorMessage A descriptive error message.
1532     */
1533    function AbortError(errorMessage) {
1534        var _newTarget = this.constructor;
1535        if (errorMessage === void 0) { errorMessage = "An abort occurred."; }
1536        var _this = this;
1537        var trueProto = _newTarget.prototype;
1538        _this = _super.call(this, errorMessage) || this;
1539        // Workaround issue in Typescript compiler
1540        // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200
1541        _this.__proto__ = trueProto;
1542        return _this;
1543    }
1544    return AbortError;
1545}(Error));
1546
1547
1548
1549/***/ }),
1550/* 5 */
1551/***/ (function(module, __webpack_exports__, __webpack_require__) {
1552
1553"use strict";
1554__webpack_require__.r(__webpack_exports__);
1555/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HttpResponse", function() { return HttpResponse; });
1556/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HttpClient", function() { return HttpClient; });
1557// Copyright (c) .NET Foundation. All rights reserved.
1558// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
1559var __assign = (undefined && undefined.__assign) || Object.assign || function(t) {
1560    for (var s, i = 1, n = arguments.length; i < n; i++) {
1561        s = arguments[i];
1562        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
1563            t[p] = s[p];
1564    }
1565    return t;
1566};
1567/** Represents an HTTP response. */
1568var HttpResponse = /** @class */ (function () {
1569    function HttpResponse(statusCode, statusText, content) {
1570        this.statusCode = statusCode;
1571        this.statusText = statusText;
1572        this.content = content;
1573    }
1574    return HttpResponse;
1575}());
1576
1577/** Abstraction over an HTTP client.
1578 *
1579 * This class provides an abstraction over an HTTP client so that a different implementation can be provided on different platforms.
1580 */
1581var HttpClient = /** @class */ (function () {
1582    function HttpClient() {
1583    }
1584    HttpClient.prototype.get = function (url, options) {
1585        return this.send(__assign({}, options, { method: "GET", url: url }));
1586    };
1587    HttpClient.prototype.post = function (url, options) {
1588        return this.send(__assign({}, options, { method: "POST", url: url }));
1589    };
1590    HttpClient.prototype.delete = function (url, options) {
1591        return this.send(__assign({}, options, { method: "DELETE", url: url }));
1592    };
1593    /** Gets all cookies that apply to the specified URL.
1594     *
1595     * @param url The URL that the cookies are valid for.
1596     * @returns {string} A string containing all the key-value cookie pairs for the specified URL.
1597     */
1598    // @ts-ignore
1599    HttpClient.prototype.getCookieString = function (url) {
1600        return "";
1601    };
1602    return HttpClient;
1603}());
1604
1605
1606
1607/***/ }),
1608/* 6 */
1609/***/ (function(module, __webpack_exports__, __webpack_require__) {
1610
1611"use strict";
1612__webpack_require__.r(__webpack_exports__);
1613/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DefaultHttpClient", function() { return DefaultHttpClient; });
1614/* harmony import */ var _Errors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
1615/* harmony import */ var _HttpClient__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
1616/* harmony import */ var _NodeHttpClient__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
1617/* harmony import */ var _XhrHttpClient__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8);
1618// Copyright (c) .NET Foundation. All rights reserved.
1619// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
1620var __extends = (undefined && undefined.__extends) || (function () {
1621    var extendStatics = Object.setPrototypeOf ||
1622        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
1623        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
1624    return function (d, b) {
1625        extendStatics(d, b);
1626        function __() { this.constructor = d; }
1627        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
1628    };
1629})();
1630
1631
1632
1633
1634/** Default implementation of {@link @microsoft/signalr.HttpClient}. */
1635var DefaultHttpClient = /** @class */ (function (_super) {
1636    __extends(DefaultHttpClient, _super);
1637    /** Creates a new instance of the {@link @microsoft/signalr.DefaultHttpClient}, using the provided {@link @microsoft/signalr.ILogger} to log messages. */
1638    function DefaultHttpClient(logger) {
1639        var _this = _super.call(this) || this;
1640        if (typeof XMLHttpRequest !== "undefined") {
1641            _this.httpClient = new _XhrHttpClient__WEBPACK_IMPORTED_MODULE_3__["XhrHttpClient"](logger);
1642        }
1643        else {
1644            _this.httpClient = new _NodeHttpClient__WEBPACK_IMPORTED_MODULE_2__["NodeHttpClient"](logger);
1645        }
1646        return _this;
1647    }
1648    /** @inheritDoc */
1649    DefaultHttpClient.prototype.send = function (request) {
1650        // Check that abort was not signaled before calling send
1651        if (request.abortSignal && request.abortSignal.aborted) {
1652            return Promise.reject(new _Errors__WEBPACK_IMPORTED_MODULE_0__["AbortError"]());
1653        }
1654        if (!request.method) {
1655            return Promise.reject(new Error("No method defined."));
1656        }
1657        if (!request.url) {
1658            return Promise.reject(new Error("No url defined."));
1659        }
1660        return this.httpClient.send(request);
1661    };
1662    DefaultHttpClient.prototype.getCookieString = function (url) {
1663        return this.httpClient.getCookieString(url);
1664    };
1665    return DefaultHttpClient;
1666}(_HttpClient__WEBPACK_IMPORTED_MODULE_1__["HttpClient"]));
1667
1668
1669
1670/***/ }),
1671/* 7 */
1672/***/ (function(module, __webpack_exports__, __webpack_require__) {
1673
1674"use strict";
1675__webpack_require__.r(__webpack_exports__);
1676/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NodeHttpClient", function() { return NodeHttpClient; });
1677/* harmony import */ var _HttpClient__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5);
1678// Copyright (c) .NET Foundation. All rights reserved.
1679// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
1680var __extends = (undefined && undefined.__extends) || (function () {
1681    var extendStatics = Object.setPrototypeOf ||
1682        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
1683        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
1684    return function (d, b) {
1685        extendStatics(d, b);
1686        function __() { this.constructor = d; }
1687        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
1688    };
1689})();
1690// This is an empty implementation of the NodeHttpClient that will be included in browser builds so the output file will be smaller
1691
1692/** @private */
1693var NodeHttpClient = /** @class */ (function (_super) {
1694    __extends(NodeHttpClient, _super);
1695    // @ts-ignore: Need ILogger to compile, but unused variables generate errors
1696    function NodeHttpClient(logger) {
1697        return _super.call(this) || this;
1698    }
1699    NodeHttpClient.prototype.send = function () {
1700        return Promise.reject(new Error("If using Node either provide an XmlHttpRequest polyfill or consume the cjs or esm script instead of the browser/signalr.js one."));
1701    };
1702    return NodeHttpClient;
1703}(_HttpClient__WEBPACK_IMPORTED_MODULE_0__["HttpClient"]));
1704
1705
1706
1707/***/ }),
1708/* 8 */
1709/***/ (function(module, __webpack_exports__, __webpack_require__) {
1710
1711"use strict";
1712__webpack_require__.r(__webpack_exports__);
1713/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "XhrHttpClient", function() { return XhrHttpClient; });
1714/* harmony import */ var _Errors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
1715/* harmony import */ var _HttpClient__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
1716/* harmony import */ var _ILogger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9);
1717// Copyright (c) .NET Foundation. All rights reserved.
1718// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
1719var __extends = (undefined && undefined.__extends) || (function () {
1720    var extendStatics = Object.setPrototypeOf ||
1721        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
1722        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
1723    return function (d, b) {
1724        extendStatics(d, b);
1725        function __() { this.constructor = d; }
1726        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
1727    };
1728})();
1729
1730
1731
1732var XhrHttpClient = /** @class */ (function (_super) {
1733    __extends(XhrHttpClient, _super);
1734    function XhrHttpClient(logger) {
1735        var _this = _super.call(this) || this;
1736        _this.logger = logger;
1737        return _this;
1738    }
1739    /** @inheritDoc */
1740    XhrHttpClient.prototype.send = function (request) {
1741        var _this = this;
1742        // Check that abort was not signaled before calling send
1743        if (request.abortSignal && request.abortSignal.aborted) {
1744            return Promise.reject(new _Errors__WEBPACK_IMPORTED_MODULE_0__["AbortError"]());
1745        }
1746        if (!request.method) {
1747            return Promise.reject(new Error("No method defined."));
vendor: 6,015 bytes, lines 1748-1859
1748        }
1749        if (!request.url) {
1750            return Promise.reject(new Error("No url defined."));
1751        }
1752        return new Promise(function (resolve, reject) {
1753            var xhr = new XMLHttpRequest();
1754            xhr.open(request.method, request.url, true);
1755            xhr.withCredentials = true;
1756            xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
1757            // Explicitly setting the Content-Type header for React Native on Android platform.
1758            xhr.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
1759            var headers = request.headers;
1760            if (headers) {
1761                Object.keys(headers)
1762                    .forEach(function (header) {
1763                    xhr.setRequestHeader(header, headers[header]);
1764                });
1765            }
1766            if (request.responseType) {
1767                xhr.responseType = request.responseType;
1768            }
1769            if (request.abortSignal) {
1770                request.abortSignal.onabort = function () {
1771                    xhr.abort();
1772                    reject(new _Errors__WEBPACK_IMPORTED_MODULE_0__["AbortError"]());
1773                };
1774            }
1775            if (request.timeout) {
1776                xhr.timeout = request.timeout;
1777            }
1778            xhr.onload = function () {
1779                if (request.abortSignal) {
1780                    request.abortSignal.onabort = null;
1781                }
1782                if (xhr.status >= 200 && xhr.status < 300) {
1783                    resolve(new _HttpClient__WEBPACK_IMPORTED_MODULE_1__["HttpResponse"](xhr.status, xhr.statusText, xhr.response || xhr.responseText));
1784                }
1785                else {
1786                    reject(new _Errors__WEBPACK_IMPORTED_MODULE_0__["HttpError"](xhr.statusText, xhr.status));
1787                }
1788            };
1789            xhr.onerror = function () {
1790                _this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Warning, "Error from HTTP request. " + xhr.status + ": " + xhr.statusText + ".");
1791                reject(new _Errors__WEBPACK_IMPORTED_MODULE_0__["HttpError"](xhr.statusText, xhr.status));
1792            };
1793            xhr.ontimeout = function () {
1794                _this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Warning, "Timeout from HTTP request.");
1795                reject(new _Errors__WEBPACK_IMPORTED_MODULE_0__["TimeoutError"]());
1796            };
1797            xhr.send(request.content || "");
1798        });
1799    };
1800    return XhrHttpClient;
1801}(_HttpClient__WEBPACK_IMPORTED_MODULE_1__["HttpClient"]));
1802
1803
1804
1805/***/ }),
1806/* 9 */
1807/***/ (function(module, __webpack_exports__, __webpack_require__) {
1808
1809"use strict";
1810__webpack_require__.r(__webpack_exports__);
1811/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LogLevel", function() { return LogLevel; });
1812// Copyright (c) .NET Foundation. All rights reserved.
1813// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
1814// These values are designed to match the ASP.NET Log Levels since that's the pattern we're emulating here.
1815/** Indicates the severity of a log message.
1816 *
1817 * Log Levels are ordered in increasing severity. So `Debug` is more severe than `Trace`, etc.
1818 */
1819var LogLevel;
1820(function (LogLevel) {
1821    /** Log level for very low severity diagnostic messages. */
1822    LogLevel[LogLevel["Trace"] = 0] = "Trace";
1823    /** Log level for low severity diagnostic messages. */
1824    LogLevel[LogLevel["Debug"] = 1] = "Debug";
1825    /** Log level for informational diagnostic messages. */
1826    LogLevel[LogLevel["Information"] = 2] = "Information";
1827    /** Log level for diagnostic messages that indicate a non-fatal problem. */
1828    LogLevel[LogLevel["Warning"] = 3] = "Warning";
1829    /** Log level for diagnostic messages that indicate a failure in the current operation. */
1830    LogLevel[LogLevel["Error"] = 4] = "Error";
1831    /** Log level for diagnostic messages that indicate a failure that will terminate the entire application. */
1832    LogLevel[LogLevel["Critical"] = 5] = "Critical";
1833    /** The highest possible log level. Used when configuring logging to indicate that no log messages should be emitted. */
1834    LogLevel[LogLevel["None"] = 6] = "None";
1835})(LogLevel || (LogLevel = {}));
1836
1837
1838/***/ }),
1839/* 10 */
1840/***/ (function(module, __webpack_exports__, __webpack_require__) {
1841
1842"use strict";
1843__webpack_require__.r(__webpack_exports__);
1844/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HubConnectionState", function() { return HubConnectionState; });
1845/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HubConnection", function() { return HubConnection; });
1846/* harmony import */ var _HandshakeProtocol__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11);
1847/* harmony import */ var _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15);
1848/* harmony import */ var _ILogger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9);
1849/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(16);
1850/* harmony import */ var _Utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(13);
1851// Copyright (c) .NET Foundation. All rights reserved.
1852// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
1853var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
1854    return new (P || (P = Promise))(function (resolve, reject) {
1855        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
1856        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
1857        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
1858        step((generator = generator.apply(thisArg, _arguments || [])).next());
1859    });
1860};
1861var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
1862    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
1863    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
1864    function verb(n) { return function (v) { return step([n, v]); }; }
1865    function step(op) {
1866        if (f) throw new TypeError("Generator is already executing.");
1867        while (_) try {
1868            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;
1869            if (y = 0, t) op = [op[0] & 2, t.value];
1870            switch (op[0]) {
1871                case 0: case 1: t = op; break;
1872                case 4: _.label++; return { value: op[1], done: false };
1873                case 5: _.label++; y = op[1]; op = [0]; continue;
1874                case 7: op = _.ops.pop(); _.trys.pop(); continue;
1875                default:
1876                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
1877                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
1878                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
1879                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
1880                    if (t[2]) _.ops.pop();
1881                    _.trys.pop(); continue;
1882            }
1883            op = body.call(thisArg, _);
1884        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
1885        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
1886    }
1887};
1888
1889
1890
1891
1892
1893var DEFAULT_TIMEOUT_IN_MS = 30 * 1000;
1894var DEFAULT_PING_INTERVAL_IN_MS = 15 * 1000;
1895/** Describes the current state of the {@link HubConnection} to the server. */
1896var HubConnectionState;
1897(function (HubConnectionState) {
1898    /** The hub connection is disconnected. */
1899    HubConnectionState["Disconnected"] = "Disconnected";
1900    /** The hub connection is connecting. */
1901    HubConnectionState["Connecting"] = "Connecting";
1902    /** The hub connection is connected. */
1903    HubConnectionState["Connected"] = "Connected";
1904    /** The hub connection is disconnecting. */
1905    HubConnectionState["Disconnecting"] = "Disconnecting";
1906    /** The hub connection is reconnecting. */
1907    HubConnectionState["Reconnecting"] = "Reconnecting";
1908})(HubConnectionState || (HubConnectionState = {}));
1909/** Represents a connection to a SignalR Hub. */
1910var HubConnection = /** @class */ (function () {
1911    function HubConnection(connection, logger, protocol, reconnectPolicy) {
1912        var _this = this;
1913        _Utils__WEBPACK_IMPORTED_MODULE_4__["Arg"].isRequired(connection, "connection");
1914        _Utils__WEBPACK_IMPORTED_MODULE_4__["Arg"].isRequired(logger, "logger");
1915        _Utils__WEBPACK_IMPORTED_MODULE_4__["Arg"].isRequired(protocol, "protocol");
1916        this.serverTimeoutInMilliseconds = DEFAULT_TIMEOUT_IN_MS;
1917        this.keepAliveIntervalInMilliseconds = DEFAULT_PING_INTERVAL_IN_MS;
1918        this.logger = logger;
1919        this.protocol = protocol;
1920        this.connection = connection;
1921        this.reconnectPolicy = reconnectPolicy;
1922        this.handshakeProtocol = new _HandshakeProtocol__WEBPACK_IMPORTED_MODULE_0__["HandshakeProtocol"]();
1923        this.connection.onreceive = function (data) { return _this.processIncomingData(data); };
1924        this.connection.onclose = function (error) { return _this.connectionClosed(error); };
1925        this.callbacks = {};
1926        this.methods = {};
1927        this.closedCallbacks = [];
1928        this.reconnectingCallbacks = [];
1929        this.reconnectedCallbacks = [];
1930        this.invocationId = 0;
1931        this.receivedHandshakeResponse = false;
1932        this.connectionState = HubConnectionState.Disconnected;
1933        this.connectionStarted = false;
1934        this.cachedPingMessage = this.protocol.writeMessage({ type: _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Ping });
1935    }
1936    /** @internal */
1937    // Using a public static factory method means we can have a private constructor and an _internal_
1938    // create method that can be used by HubConnectionBuilder. An "internal" constructor would just
1939    // be stripped away and the '.d.ts' file would have no constructor, which is interpreted as a
1940    // public parameter-less constructor.
1941    HubConnection.create = function (connection, logger, protocol, reconnectPolicy) {
1942        return new HubConnection(connection, logger, protocol, reconnectPolicy);
1943    };
1944    Object.defineProperty(HubConnection.prototype, "state", {
1945        /** Indicates the state of the {@link HubConnection} to the server. */
1946        get: function () {
1947            return this.connectionState;
1948        },
1949        enumerable: true,
1950        configurable: true
1951    });
1952    Object.defineProperty(HubConnection.prototype, "connectionId", {
1953        /** Represents the connection id of the {@link HubConnection} on the server. The connection id will be null when the connection is either
1954         *  in the disconnected state or if the negotiation step was skipped.
1955         */
1956        get: function () {
1957            return this.connection ? (this.connection.connectionId || null) : null;
1958        },
1959        enumerable: true,
1960        configurable: true
1961    });
1962    Object.defineProperty(HubConnection.prototype, "baseUrl", {
1963        /** Indicates the url of the {@link HubConnection} to the server. */
1964        get: function () {
1965            return this.connection.baseUrl || "";
1966        },
1967        /**
1968         * Sets a new url for the HubConnection. Note that the url can only be changed when the connection is in either the Disconnected or
1969         * Reconnecting states.
1970         * @param {string} url The url to connect to.
1971         */
1972        set: function (url) {
1973            if (this.connectionState !== HubConnectionState.Disconnected && this.connectionState !== HubConnectionState.Reconnecting) {
1974                throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");
1975            }
1976            if (!url) {
1977                throw new Error("The HubConnection url must be a valid url.");
1978            }
1979            this.connection.baseUrl = url;
1980        },
1981        enumerable: true,
1982        configurable: true
1983    });
1984    /** Starts the connection.
1985     *
1986     * @returns {Promise<void>} A Promise that resolves when the connection has been successfully established, or rejects with an error.
1987     */
1988    HubConnection.prototype.start = function () {
1989        this.startPromise = this.startWithStateTransitions();
1990        return this.startPromise;
1991    };
1992    HubConnection.prototype.startWithStateTransitions = function () {
1993        return __awaiter(this, void 0, void 0, function () {
1994            var e_1;
1995            return __generator(this, function (_a) {
1996                switch (_a.label) {
1997                    case 0:
1998                        if (this.connectionState !== HubConnectionState.Disconnected) {
1999                            return [2 /*return*/, Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."))];
2000                        }
2001                        this.connectionState = HubConnectionState.Connecting;
2002                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "Starting HubConnection.");
2003                        _a.label = 1;
2004                    case 1:
2005                        _a.trys.push([1, 3, , 4]);
2006                        return [4 /*yield*/, this.startInternal()];
2007                    case 2:
2008                        _a.sent();
2009                        this.connectionState = HubConnectionState.Connected;
2010                        this.connectionStarted = true;
2011                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "HubConnection connected successfully.");
2012                        return [3 /*break*/, 4];
2013                    case 3:
2014                        e_1 = _a.sent();
2015                        this.connectionState = HubConnectionState.Disconnected;
2016                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "HubConnection failed to start successfully because of error '" + e_1 + "'.");
2017                        return [2 /*return*/, Promise.reject(e_1)];
2018                    case 4: return [2 /*return*/];
2019                }
2020            });
2021        });
2022    };
2023    HubConnection.prototype.startInternal = function () {
2024        return __awaiter(this, void 0, void 0, function () {
2025            var handshakePromise, handshakeRequest, e_2;
2026            var _this = this;
2027            return __generator(this, function (_a) {
2028                switch (_a.label) {
2029                    case 0:
2030                        this.stopDuringStartError = undefined;
2031                        this.receivedHandshakeResponse = false;
2032                        handshakePromise = new Promise(function (resolve, reject) {
2033                            _this.handshakeResolver = resolve;
2034                            _this.handshakeRejecter = reject;
2035                        });
2036                        return [4 /*yield*/, this.connection.start(this.protocol.transferFormat)];
2037                    case 1:
2038                        _a.sent();
2039                        _a.label = 2;
2040                    case 2:
2041                        _a.trys.push([2, 5, , 7]);
2042                        handshakeRequest = {
2043                            protocol: this.protocol.name,
2044                            version: this.protocol.version,
2045                        };
2046                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "Sending handshake request.");
2047                        return [4 /*yield*/, this.sendMessage(this.handshakeProtocol.writeHandshakeRequest
2047(handshakeRequest))];
2048                    case 3:
2049                        _a.sent();
2050                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Information, "Using HubProtocol '" + this.protocol.name + "'.");
2051                        // defensively cleanup timeout in case we receive a message from the server before we finish start
2052                        this.cleanupTimeout();
2053                        this.resetTimeoutPeriod();
2054                        this.resetKeepAliveInterval();
2055                        return [4 /*yield*/, handshakePromise];
2056                    case 4:
2057                        _a.sent();
2058                        // It's important to check the stopDuringStartError instead of just relying on the handshakePromise
2059                        // being rejected on close, because this continuation can run after both the handshake completed successfully
2060                        // and the connection was closed.
2061                        if (this.stopDuringStartError) {
2062                            // It's important to throw instead of returning a rejected promise, because we don't want to allow any state
2063                            // transitions to occur between now and the calling code observing the exceptions. Returning a rejected promise
2064                            // will cause the calling continuation to get scheduled to run later.
2065                            throw this.stopDuringStartError;
2066                        }
2067                        return [3 /*break*/, 7];
2068                    case 5:
2069                        e_2 = _a.sent();
2070                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "Hub handshake failed with error '" + e_2 + "' during start(). Stopping HubConnection.");
2071                        this.cleanupTimeout();
2072                        this.cleanupPingTimer();
2073                        // HttpConnection.stop() should not complete until after the onclose callback is invoked.
2074                        // This will transition the HubConnection to the disconnected state before HttpConnection.stop() completes.
2075                        return [4 /*yield*/, this.connection.stop(e_2)];
2076                    case 6:
2077                        // HttpConnection.stop() should not complete until after the onclose callback is invoked.
2078                        // This will transition the HubConnection to the disconnected state before HttpConnection.stop() completes.
2079                        _a.sent();
2080                        throw e_2;
2081                    case 7: return [2 /*return*/];
2082                }
2083            });
2084        });
2085    };
2086    /** Stops the connection.
2087     *
2088     * @returns {Promise<void>} A Promise that resolves when the connection has been successfully terminated, or rejects with an error.
2089     */
2090    HubConnection.prototype.stop = function () {
2091        return __awaiter(this, void 0, void 0, function () {
2092            var startPromise, e_3;
2093            return __generator(this, function (_a) {
2094                switch (_a.label) {
2095                    case 0:
2096                        startPromise = this.startPromise;
2097                        this.stopPromise = this.stopInternal();
2098                        return [4 /*yield*/, this.stopPromise];
2099                    case 1:
2100                        _a.sent();
2101                        _a.label = 2;
2102                    case 2:
2103                        _a.trys.push([2, 4, , 5]);
2104                        // Awaiting undefined continues immediately
2105                        return [4 /*yield*/, startPromise];
2106                    case 3:
2107                        // Awaiting undefined continues immediately
2108                        _a.sent();
2109                        return [3 /*break*/, 5];
2110                    case 4:
2111                        e_3 = _a.sent();
2112                        return [3 /*break*/, 5];
2113                    case 5: return [2 /*return*/];
2114                }
2115            });
2116        });
2117    };
2118    HubConnection.prototype.stopInternal = function (error) {
2119        if (this.connectionState === HubConnectionState.Disconnected) {
2120            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "Call to HubConnection.stop(" 
2120+ error + ") ignored because it is already in the disconnected state.");
2121            return Promise.resolve();
2122        }
2123        if (this.connectionState === HubConnectionState.Disconnecting) {
2124            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "Call to HttpConnection.stop(" + error + ") ignored because the connection is already in the disconnecting state.");
2125            return this.stopPromise;
2126        }
2127        this.connectionState = HubConnectionState.Disconnecting;
2128        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "Stopping HubConnection.");
2129        if (this.reconnectDelayHandle) {
2130            // We're in a reconnect delay which means the underlying connection is currently already stopped.
2131            // Just clear the handle to stop the reconnect loop (which no one is waiting on thankfully) and
2132            // fire the onclose callbacks.
2133            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "Connection stopped during reconnect delay. Done reconnecting.");
2134            clearTimeout(this.reconnectDelayHandle);
2135            this.reconnectDelayHandle = undefined;
2136            this.completeClose();
2137            return Promise.resolve();
2138        }
2139        this.cleanupTimeout();
2140        this.cleanupPingTimer();
2141        this.stopDuringStartError = error || new Error("The connection was stopped before the hub handshake could complete.");
2142        // HttpConnection.stop() should not complete until after either HttpConnection.start() fails
2143        // or the onclose callback is invoked. The onclose callback will transition the HubConnection
2144        // to the disconnected state if need be before HttpConnection.stop() completes.
2145        return this.connection.stop(error);
2146    };
2147    /** Invokes a streaming hub method on the server using the specified name and arguments.
2148     *
2149     * @typeparam T The type of the items returned by the server.
2150     * @param {string} methodName The name of the server method to invoke.
2151     * @param {any[]} args The arguments used to invoke the server method.
2152     * @returns {IStreamResult<T>} An object that yields results from the server as they are received.
2153     */
2154    HubConnection.prototype.stream = function (methodName) {
2155        var _this = this;
2156        var args = [];
2157        for (var _i = 1; _i < arguments.length; _i++) {
2158            args[_i - 1] = arguments[_i];
2159        }
2160        var _a = this.replaceStreamingParams(args), streams = _a[0], streamIds = _a[1];
2161        var invocationDescriptor = this.createStreamInvocation(methodName, args, streamIds);
2162        var promiseQueue;
2163        var subject = new _Subject__WEBPACK_IMPORTED_MODULE_3__["Subject"]();
2164        subject.cancelCallback = function () {
2165            var cancelInvocation = _this.createCancelInvocation(invocationDescriptor.invocationId);
2166            delete _this.callbacks[invocationDescriptor.invocationId];
2167            return promiseQueue.then(function () {
2168                return _this.sendWithProtocol(cancelInvocation);
2169            });
2170        };
2171        this.callbacks[invocationDescriptor.invocationId] = function (invocationEvent, error) {
2172            if (error) {
2173                subject.error(error);
2174                return;
2175            }
2176            else if (invocationEvent) {
2177                // invocationEvent will not be null when an error is not passed to the callback
2178                if (invocationEvent.type === _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Completion) {
2179                    if (invocationEvent.error) {
2180                        subject.error(new Error(invocationEvent.error));
2181                    }
2182                    else {
2183                        subject.complete();
2184                    }
2185                }
2186                else {
2187                    subject.next((invocationEvent.item));
2188                }
2189            }
2190        };
2191        promiseQueue = this.sendWithProtocol(invocationDescriptor)
2192            .catch(function (e) {
2193            subject.error(e);
2194            delete _this.callbacks[invocationDescriptor.invocationId];
2195        });
2196        this.launchStreams(streams, promiseQueue);
2197        return subject;
2198    };
2199    HubConnection.prototype.sendMessage = function (message) {
2200        this.resetKeepAliveInterval();
2201        return this.connection.send(message);
2202    };
2203    /**
2204     * Sends a js object to the server.
2205     * @param message The js object to serialize and send.
2206     */
2207    HubConnection.prototype.sendWithProtocol = function (message) {
2208        return this.sendMessage(this.protocol.writeMessage(message));
2209    };
2210    /** Invokes a hub method on the server using the specified name and arguments. Does not wait for a response from the receiver.
2211     *
2212     * The Promise returned by this method resolves when the client has sent the invocation to the server. The server may still
2213     * be processing the invocation.
2214     *
2215     * @param {string} methodName The name of the server method to invoke.
2216     * @param {any[]} args The arguments used to invoke the server method.
2217     * @returns {Promise<void>} A Promise that resolves when the invocation has been successfully sent, or rejects with an error.
2218     */
2219    HubConnection.prototype.send = function (methodName) {
2220        var args = [];
2221        for (var _i = 1; _i < arguments.length; _i++) {
2222            args[_i - 1] = arguments[_i];
2223        }
2224        var _a = this.replaceStreamingParams(args), streams = _a[0], streamIds = _a[1];
2225        var sendPromise = this.sendWithProtocol(this.createInvocation(methodName, args, true, streamIds));
2226        this.launchStreams(streams, sendPromise);
2227        return sendPromise;
2228    };
2229    /** Invokes a hub method on the server using the specified name and arguments.
2230     *
2231     * The Promise returned by this method resolves when the server indicates it has finished invoking the method. When the promise
2232     * resolves, the server has finished invoking the method. If the server method returns a result, it is produced as the result of
2233     * resolving the Promise.
2234     *
2235     * @typeparam T The expected return type.
2236     * @param {string} methodName The name of the server method to invoke.
2237     * @param {any[]} args The arguments used to invoke the server method.
2238     * @returns {Promise<T>} A Promise that resolves with the result of the server method (if any), or rejects with an error.
2239     */
2240    HubConnection.prototype.invoke = function (methodName) {
2241        var _this = this;
2242        var args = [];
2243        for (var _i = 1; _i < arguments.length; _i++) {
2244            args[_i - 1] = arguments[_i];
2245        }
2246        var _a = this.replaceStreamingParams(args), streams = _a[0], streamIds = _a[1];
2247        var invocationDescriptor = this.createInvocation(methodName, args, false, streamIds);
2248        var p = new Promise(function (resolve, reject) {
2249            // invocationId will always have a value for a non-blocking invocation
2250            _this.callbacks[invocationDescriptor.invocationId] = function (invocationEvent, error) {
2251                if (error) {
2252                    reject(error);
2253                    return;
2254                }
2255                else if (invocationEvent) {
2256                    // invocationEvent will not be null when an error is not passed to the callback
2257                    if (invocationEvent.type === _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Completion) {
2258                        if (invocationEvent.error) {
2259                            reject(new Error(invocationEvent.error));
2260                        }
2261                        else {
2262                            resolve(invocationEvent.result);
2263                        }
2264                    }
2265                    else {
2266                        reject(new Error("Unexpected message type: " + invocationEvent.type));
2267                    }
2268                }
2269            };
2270            var promiseQueue = _this.sendWithProtocol(invocationDescriptor)
2271                .catch(function (e) {
2272                reject(e);
2273                // invocationId will always have a value for a non-blocking invocation
2274                delete _this.callbacks[invocationDescriptor.invocationId];
2275            });
2276            _this.launchStreams(streams, promiseQueue);
2277        });
2278        return p;
2279    };
2280    /** Registers a handler that will be invoked when the hub method with the specified method name is invoked.
2281     *
2282     * @param {string} methodName The name of the hub method to define.
2283     * @param {Function} newMethod The handler that will be raised when the hub method is invoked.
2284     */
2285    HubConnection.prototype.on = function (methodName, newMethod) {
2286        if (!methodName || !newMethod) {
2287            return;
2288        }
2289        methodName = methodName.toLowerCase();
2290        if (!this.methods[methodName]) {
2291            this.methods[methodName] = [];
2292        }
2293        // Preventing adding the same handler multiple times.
2294        if (this.methods[methodName].indexOf(newMethod) !== -1) {
2295            return;
2296        }
2297        this.methods[methodName].push(newMethod);
2298    };
2299    HubConnection.prototype.off = function (methodName, method) {
2300        if (!methodName) {
2301            return;
2302        }
2303        methodName = methodName.toLowerCase();
2304        var handlers = this.methods[methodName];
2305        if (!handlers) {
2306            return;
2307        }
2308        if (method) {
2309            var removeIdx = handlers.indexOf(method);
2310            if (removeIdx !== -1) {
2311                handlers.splice(removeIdx, 1);
2312                if (handlers.length === 0) {
2313                    delete this.methods[methodName];
2314                }
2315            }
2316        }
2317        else {
2318            delete this.methods[methodName];
2319        }
2320    };
2321    /** Registers a handler that will be invoked when the connection is closed.
2322     *
2323     * @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).
2324     */
2325    HubConnection.prototype.onclose = function (callback) {
2326        if (callback) {
2327            this.closedCallbacks.push(callback);
2328        }
2329    };
2330    /** Registers a handler that will be invoked when the connection starts reconnecting.
2331     *
2332     * @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).
2333     */
2334    HubConnection.prototype.onreconnecting = function (callback) {
2335        if (callback) {
2336            this.reconnectingCallbacks.push(callback);
2337        }
2338    };
2339    /** Registers a handler that will be invoked when the connection successfully reconnects.
2340     *
2341     * @param {Function} callback The handler that will be invoked when the connection successfully reconnects.
2342     */
2343    HubConnection.prototype.onreconnected = function (callback) {
2344        if (callback) {
2345            this.reconnectedCallbacks.push(callback);
2346        }
2347    };
2348    HubConnection.prototype.processIncomingData = function (data) {
2349        this.cleanupTimeout();
2350        if (!this.receivedHandshakeResponse) {
2351            data = this.processHandshakeResponse(data);
2352            this.receivedHandshakeResponse = true;
2353        }
2354        // Data may have all been read when processing handshake response
2355        if (data) {
2356            // Parse the messages
2357            var messages = this.protocol.parseMessages(data, this.logger);
2358            for (var _i = 0, messages_1 = messages; _i < messages_1.length; _i++) {
2359                var message = messages_1[_i];
2360                switch (message.type) {
2361                    case _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Invocation:
2362                        this.invokeClientMethod(message);
2363                        break;
2364                    case _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].StreamItem:
2365                    case _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Completion:
2366                        var callback = this.callbacks[message.invocationId];
2367                        if (callback) {
2368                            if (message.type === _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Completion) {
2369                                delete this.callbacks[message.invocationId];
2370                            }
2371                            callback(message);
2372                        }
2373                        break;
2374                    case _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Ping:
2375                        // Don't care about pings
2376                        break;
2377                    case _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Close:
2378                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Information, "Close message received from server.");
2379                        var error = message.error ? new Error("Server returned an error on close: " + message.error) : undefined;
2380                        if (message.allowReconnect === true) {
2381                            // It feels wrong not to await connection.stop() here, but processIncomingData is called as part of an onreceive callback which is not async,
2382                            // this is already the behavior for serverTimeout(), and HttpConnection.Stop() should catch and log all possible exceptions.
2383                            // tslint:disable-next-line:no-floating-promises
2384                            this.connection.stop(error);
2385                        }
2386                        else {
2387                            // We cannot await stopInternal() here, but subsequent calls to stop() will await this if stopInternal() is still ongoing.
2388                            this.stopPromise = this.stopInternal(error);
2389                        }
2390                        break;
2391                    default:
2392                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Warning, "Invalid message type: " + message.type + ".");
2393                        break;
2394                }
2395            }
2396        }
2397        this.resetTimeoutPeriod();
2398    };
2399    HubConnection.prototype.processHandshakeResponse = function (data) {
2400        var _a;
2401        var responseMessage;
2402        var remainingData;
2403        try {
2404            _a = this.handshakeProtocol.parseHandshakeResponse(data), remainingData = _a[0], responseMessage = _a[1];
2405        }
2406        catch (e) {
2407            var message = "Error parsing handshake response: " + e;
2408            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Error, message);
2409            var error = new Error(message);
2410            this.handshakeRejecter(error);
2411            throw error;
2412        }
2413        if (responseMessage.error) {
2414            var message = "Server returned handshake error: " + responseMessage.error;
2415            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Error, message);
2416            var error = new Error(message);
2417            this.handshakeRejecter(error);
2418            throw error;
2419        }
2420        else {
2421            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "Server handshake complete.");
2422        }
2423        this.handshakeResolver();
2424        return remainingData;
2425    };
2426    HubConnection.prototype.resetKeepAliveInterval = function () {
2427        var _this = this;
2428        this.cleanupPingTimer();
2429        this.pingServerHandle = setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {
2430            var _a;
2431            return __generator(this, function (_b) {
2432                switch (_b.label) {
2433                    case 0:
2434                        if (!(this.connectionState === HubConnectionState.Connected)) return [3 /*break*/, 4];
2435                        _b.label = 1;
2436                    case 1:
2437                        _b.trys.push([1, 3, , 4]);
2438                        return [4 /*yield*/, this.sendMessage(this.cachedPingMessage)];
2439                    case 2:
2440                        _b.sent();
2441                        return [3 /*break*/, 4];
2442                    case 3:
2443                        _a = _b.sent();
2444                        // We don't care about the error. It should be seen elsewhere in the client.
2445                        // The connection is probably in a bad or closed state now, cleanup the timer so it stops triggering
2446                        this.cleanupPingTimer();
2447                        return [3 /*break*/, 4];
2448                    case 4: return [2 /*return*/];
2449                }
2450            });
2451        }); }, this.keepAliveIntervalInMilliseconds);
2452    };
2453    HubConnection.prototype.resetTimeoutPeriod = function () {
2454        var _this = this;
2455        if (!this.connection.features || !this.connection.features.inherentKeepAlive) {
2456            // Set the timeout timer
2457            this.timeoutHandle = setTimeout(function () { return _this.serverTimeout(); }, this.serverTimeoutInMilliseconds);
2458        }
2459    };
2460    HubConnection.prototype.serverTimeout = function () {
2461        // The server hasn't talked to us in a while. It doesn't like us anymore ... :(
2462        // Terminate the connection, but we don't need to wait on the promise. This could trigger reconnecting.
2463        // tslint:disable-next-line:no-floating-promises
2464        this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."));
2465    };
2466    HubConnection.prototype.invokeClientMethod = function (invocationMessage) {
2467        var _this = this;
2468        var methods = this.methods[invocationMessage.target.toLowerCase()];
2469        if (methods) {
2470            try {
2471                methods.forEach(function (m) { return m.apply(_this, invocationMessage.arguments); });
2472            }
2473            catch (e) {
2474                this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Error, "A callback for the method " + invocationMessage.target.toLowerCase() + " threw error '" + e + "'.");
2475            }
2476            if (invocationMessage.invocationId) {
2477                // This is not supported in v1. So we return an error to avoid blocking the server waiting for the response.
2478                var message = "Server requested a response, which is not supported in this version of the client.";
2479                this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Error, message);
2480                // We don't want to wait on the stop itself.
2481                this.stopPromise = this.stopInternal(new Error(message));
2482            }
2483        }
2484        else {
2485            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Warning, "No client method with the name '" + invocationMessage.target + "' found.");
2486        }
2487    };
2488    HubConnection.prototype.connectionClosed = function (error) {
2489        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "HubConnection.connectionClosed(" + error + ") called while in state " + this.connectionState + ".");
2490        // Triggering this.handshakeRejecter is insufficient because it c
vendor: 1,338 bytes, lines 2490-2511
2490ould already be resolved without the continuation having run yet.
2491        this.stopDuringStartError = this.stopDuringStartError || error || new Error("The underlying connection was closed before the hub handshake could complete.");
2492        // If the handshake is in progress, start will be waiting for the handshake promise, so we complete it.
2493        // If it has already completed, this should just noop.
2494        if (this.handshakeResolver) {
2495            this.handshakeResolver();
2496        }
2497        this.cancelCallbacksWithError(error || new Error("Invocation canceled due to the underlying connection being closed."));
2498        this.cleanupTimeout();
2499        this.cleanupPingTimer();
2500        if (this.connectionState === HubConnectionState.Disconnecting) {
2501            this.completeClose(error);
2502        }
2503        else if (this.connectionState === HubConnectionState.Connected && this.reconnectPolicy) {
2504            // tslint:disable-next-line:no-floating-promises
2505            this.reconnect(error);
2506        }
2507        else if (this.connectionState === HubConnectionState.Connected) {
2508            this.completeClose(error);
2509        }
2510        // If none of the above if conditions were true were called the HubConnection must be in either:
2511        // 1. The Connecting state in which case the handshakeResolver will c
2511omplete it and stopDuringStartError will fail it.
2512        // 2. The Reconnecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail the current reconnect attempt
2513        //    and potentially continue the reconnect() loop.
2514        // 3. The Disconnected state in which case we're already done.
2515    };
2516    HubConnection.prototype.completeClose = function (error) {
2517        var _this = this;
2518        if (this.connectionStarted) {
2519            this.connectionState = HubConnectionState.Disconnected;
2520            this.connectionStarted = false;
2521            try {
2522                this.closedCallbacks.forEach(function (c) { return c.apply(_this, [error]); });
2523            }
2524            catch (e) {
2525                this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Error, "An onclose callback called with error '" + error + "' threw error '" + e + "'.");
2526            }
2527        }
2528    };
2529    HubConnection.prototype.reconnect = function (error) {
2530        return __awaiter(this, void 0, void 0, function () {
2531            var reconnectStartTime, previousReconnectAttempts, retryError, nextRetryDelay, e_4;
2532            var _this = this;
2533            return __generator(this, function (_a) {
2534                switch (_a.label) {
2535                    case 0:
2536                        reconnectStartTime = Date.now();
2537                        previousReconnectAttempts = 0;
2538                        retryError = error !== undefined ? error : new Error("Attempting to reconnect due to a unknown error.");
2539                        nextRetryDelay = this.getNextRetryDelay(previousReconnectAttempts++, 0, retryError);
2540                        if (nextRetryDelay === null) {
2541                            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt.");
2542                            this.completeClose(error);
2543                            return [2 /*return*/];
2544                        }
2545                        this.connectionState = HubConnectionState.Reconnecting;
2546                        if (error) {
2547                            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Information, "Connection reconnecting because of error '" + error + "'.");
2548                        }
2549                        else {
2550                            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Information, "Connection reconnecting.");
2551                        }
2552                        if (this.onreconnecting) {
2553                            try {
2554                                this.reconnectingCallbacks.forEach(function (c) { return c.apply(_this, [error]); });
2555                            }
2556                            catch (e) {
2557                                this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Error, "An onreconnecting callback called with error '" + error + "' threw error '" + e + "'.");
2558                            }
2559                            // Exit early if an onreconnecting callback called connection.stop().
2560                            if (this.connectionState !== HubConnectionState.Reconnecting) {
2561                                this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "Connection left the reconnecting state in onreconnecting callback. Done reconnecting.");
2562                                return [2 /*return*/];
2563                            }
2564                        }
2565                        _a.label = 1;
2566                    case 1:
2567                        if (!(nextRetryDelay !== null)) return [3 /*break*/, 7];
2568                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Information, "Reconnect attempt number " + previousReconnectAttempts + " will start in " + nextRetryDelay + " ms.");
2569                        return [4 /*yield*/, new Promise(function (resolve) {
2570                                _this.reconnectDelayHandle = setTimeout(resolve, nextRetryDelay);
2571                            })];
2572                    case 2:
2573                        _a.sent();
2574                        this.reconnectDelayHandle = undefined;
2575                        if (this.connectionState !== HubConnectionState.Reconnecting) {
2576                            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "Connection left the reconnecting state during reconnect delay. Done reconnecting.");
2577                            return [2 /*return*/];
2578                        }
2579                        _a.label = 3;
2580                    case 3:
2581                        _a.trys.push([3, 5, , 6]);
2582                        return [4 /*yield*/, this.startInternal()];
2583                    case 4:
2584                        _a.sent();
2585                        this.connectionState = HubConnectionState.Connected;
2586                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Information, "HubConnection reconnected successfully.");
2587                        if (this.onreconnected) {
2588                            try {
2589                                this.reconnectedCallbacks.forEach(function (c) { return c.apply(_this, [_this.connection.connectionId]); });
2590                            }
2591                            catch (e) {
2592                                this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Error, "An onreconnected callback called with connectionId '" + this.connection.connectionId + "; threw error '" + e + "'.");
2593                            }
2594                        }
2595                        return [2 /*return*/];
2596                    case 5:
2597                        e_4 = _a.sent();
2598                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Information, "Reconnect attempt failed because of error '" + e_4 + "'.");
2599                        if (this.connectionState !== HubConnectionState.Reconnecting) {
2600                            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Debug, "Connection left the reconnecting state during reconnect attempt. Done reconnecting.");
2601                            return [2 /*return*/];
2602                        }
2603                        retryError = e_4 instanceof Error ? e_4 : new Error(e_4.toString());
2604                        nextRetryDelay = this.getNextRetryDelay(previousReconnectAttempts++, Date.now() - reconnectStartTime, retryError);
2605                        return [3 /*break*/, 6];
2606                    case 6: return [3 /*break*/, 1];
2607                    case 7:
2608                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Information, "Reconnect retries have been exhausted after " + (Date.now() - reconnectStartTime) + " ms and " + previousReconnectAttempts + " failed attempts. Connection disconnecting.");
2609                        this.completeClose();
2610                        return [2 /*return*/];
2611                }
2612            });
2613        });
2614    };
2615    HubConnection.prototype.getNextRetryDelay = function (previousRetryCount, elapsedMilliseconds, retryReason) {
2616        try {
2617            return this.reconnectPolicy.nextRetryDelayInMilliseconds({
2618                elapsedMilliseconds: elapsedMilliseconds,
2619                previousRetryCount: previousRetryCount,
2620                retryReason: retryReason,
2621            });
2622        }
2623        catch (e) {
2624            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Error, "IRetryPolicy.nextRetryDelayInMilliseconds(" + previousRetryCount + ", " + elapsedMilliseconds + ") threw error '" + e + "'.");
2625            return null;
2626        }
2627    };
2628    HubConnection.prototype.cancelCallbacksWithError = function (error) {
2629        var callbacks = this.callbacks;
2630        this.callbacks = {};
2631        Object.keys(callbacks)
2632            .forEach(function (key) {
2633            var callback = callbacks[key];
2634            callback(null, error);
2635        });
2636    };
2637    HubConnection.prototype.cleanupPingTimer = function () {
2638        if (this.pingServerHandle) {
2639            clearTimeout(this.pingServerHandle);
2640        }
2641    };
2642    HubConnection.prototype.cleanupTimeout = function () {
2643        if (this.timeoutHandle) {
2644            clearTimeout(this.timeoutHandle);
2645        }
2646    };
2647    HubConnection.prototype.createInvocation = function (methodName, args, nonblocking, streamIds) {
2648        if (nonblocking) {
2649            return {
2650                arguments: args,
2651                streamIds: streamIds,
2652                target: methodName,
2653                type: _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Invocation,
2654            };
2655        }
2656        else {
2657            var invocationId = this.invocationId;
2658            this.invocationId++;
2659            return {
2660                arguments: args,
2661                invocationId: invocationId.toString(),
2662                streamIds: streamIds,
2663                target: methodName,
2664                type: _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Invocation,
2665            };
2666        }
2667    };
2668    HubConnection.prototype.launchStreams = function (streams, promiseQueue) {
2669        var _this = this;
2670        if (streams.length === 0) {
2671            return;
2672        }
2673        // Synchronize stream data so they arrive in-order on the server
2674        if (!promiseQueue) {
2675            promiseQueue = Promise.resolve();
2676        }
2677        var _loop_1 = function (streamId) {
2678            streams[streamId].subscribe({
2679                complete: function () {
2680                    promiseQueue = promiseQueue.then(function () { return _this.sendWithProtocol(_this.createCompletionMessage(streamId)); });
2681                },
2682                error: function (err) {
2683                    var message;
2684                    if (err instanceof Error) {
2685                        message = err.message;
2686                    }
2687                    else if (err && err.toString) {
2688                        message = err.toString();
2689                    }
2690                    else {
2691                        message = "Unknown error";
2692                    }
2693                    promiseQueue = promiseQueue.then(function () { return _this.sendWithProtocol(_this.createCompletionMessage(streamId, message)); });
2694                },
2695                next: function (item) {
2696                    promiseQueue = promiseQueue.then(function () { return _this.sendWithProtocol(_this.createStreamItemMessage(streamId, item)); });
2697                },
2698            });
2699        };
2700        // We want to iterate over the keys, since the keys are the stream ids
2701        // tslint:disable-next-line:forin
2702        for (var streamId in streams) {
2703            _loop_1(streamId);
2704        }
2705    };
2706    HubConnection.prototype.replaceStreamingParams = function (args) {
2707        var streams = [];
2708        var streamIds = [];
2709        for (var i = 0; i < args.length; i++) {
2710            var argument = args[i];
vendor: 9,101 bytes, lines 2711-2893
2711            if (this.isObservable(argument)) {
2712                var streamId = this.invocationId;
2713                this.invocationId++;
2714                // Store the stream for later use
2715                streams[streamId] = argument;
2716                streamIds.push(streamId.toString());
2717                // remove stream from args
2718                args.splice(i, 1);
2719            }
2720        }
2721        return [streams, streamIds];
2722    };
2723    HubConnection.prototype.isObservable = function (arg) {
2724        // This allows other stream implementations to just work (like rxjs)
2725        return arg && arg.subscribe && typeof arg.subscribe === "function";
2726    };
2727    HubConnection.prototype.createStreamInvocation = function (methodName, args, streamIds) {
2728        var invocationId = this.invocationId;
2729        this.invocationId++;
2730        return {
2731            arguments: args,
2732            invocationId: invocationId.toString(),
2733            streamIds: streamIds,
2734            target: methodName,
2735            type: _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].StreamInvocation,
2736        };
2737    };
2738    HubConnection.prototype.createCancelInvocation = function (id) {
2739        return {
2740            invocationId: id,
2741            type: _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].CancelInvocation,
2742        };
2743    };
2744    HubConnection.prototype.createStreamItemMessage = function (id, item) {
2745        return {
2746            invocationId: id,
2747            item: item,
2748            type: _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].StreamItem,
2749        };
2750    };
2751    HubConnection.prototype.createCompletionMessage = function (id, error, result) {
2752        if (error) {
2753            return {
2754                error: error,
2755                invocationId: id,
2756                type: _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Completion,
2757            };
2758        }
2759        return {
2760            invocationId: id,
2761            result: result,
2762            type: _IHubProtocol__WEBPACK_IMPORTED_MODULE_1__["MessageType"].Completion,
2763        };
2764    };
2765    return HubConnection;
2766}());
2767
2768
2769
2770/***/ }),
2771/* 11 */
2772/***/ (function(module, __webpack_exports__, __webpack_require__) {
2773
2774"use strict";
2775__webpack_require__.r(__webpack_exports__);
2776/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HandshakeProtocol", function() { return HandshakeProtocol; });
2777/* harmony import */ var _TextMessageFormat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
2778/* harmony import */ var _Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
2779// Copyright (c) .NET Foundation. All rights reserved.
2780// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
2781
2782
2783/** @private */
2784var HandshakeProtocol = /** @class */ (function () {
2785    function HandshakeProtocol() {
2786    }
2787    // Handshake request is always JSON
2788    HandshakeProtocol.prototype.writeHandshakeRequest = function (handshakeRequest) {
2789        return _TextMessageFormat__WEBPACK_IMPORTED_MODULE_0__["TextMessageFormat"].write(JSON.stringify(handshakeRequest));
2790    };
2791    HandshakeProtocol.prototype.parseHandshakeResponse = function (data) {
2792        var responseMessage;
2793        var messageData;
2794        var remainingData;
2795        if (Object(_Utils__WEBPACK_IMPORTED_MODULE_1__["isArrayBuffer"])(data) || (typeof Buffer !== "undefined" && data instanceof Buffer)) {
2796            // Format is binary but still need to read JSON text from handshake response
2797            var binaryData = new Uint8Array(data);
2798            var separatorIndex = binaryData.indexOf(_TextMessageFormat__WEBPACK_IMPORTED_MODULE_0__["TextMessageFormat"].RecordSeparatorCode);
2799            if (separatorIndex === -1) {
2800                throw new Error("Message is incomplete.");
2801            }
2802            // content before separator is handshake response
2803            // optional content after is additional messages
2804            var responseLength = separatorIndex + 1;
2805            messageData = String.fromCharCode.apply(null, binaryData.slice(0, responseLength));
2806            remainingData = (binaryData.byteLength > responseLength) ? binaryData.slice(responseLength).buffer : null;
2807        }
2808        else {
2809            var textData = data;
2810            var separatorIndex = textData.indexOf(_TextMessageFormat__WEBPACK_IMPORTED_MODULE_0__["TextMessageFormat"].RecordSeparator);
2811            if (separatorIndex === -1) {
2812                throw new Error("Message is incomplete.");
2813            }
2814            // content before separator is handshake response
2815            // optional content after is additional messages
2816            var responseLength = separatorIndex + 1;
2817            messageData = textData.substring(0, responseLength);
2818            remainingData = (textData.length > responseLength) ? textData.substring(responseLength) : null;
2819        }
2820        // At this point we should have just the single handshake message
2821        var messages = _TextMessageFormat__WEBPACK_IMPORTED_MODULE_0__["TextMessageFormat"].parse(messageData);
2822        var response = JSON.parse(messages[0]);
2823        if (response.type) {
2824            throw new Error("Expected a handshake response from the server.");
2825        }
2826        responseMessage = response;
2827        // multiple messages could have arrived with handshake
2828        // return additional data to be parsed as usual, or null if all parsed
2829        return [remainingData, responseMessage];
2830    };
2831    return HandshakeProtocol;
2832}());
2833
2834
2835
2836/***/ }),
2837/* 12 */
2838/***/ (function(module, __webpack_exports__, __webpack_require__) {
2839
2840"use strict";
2841__webpack_require__.r(__webpack_exports__);
2842/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextMessageFormat", function() { return TextMessageFormat; });
2843// Copyright (c) .NET Foundation. All rights reserved.
2844// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
2845// Not exported from index
2846/** @private */
2847var TextMessageFormat = /** @class */ (function () {
2848    function TextMessageFormat() {
2849    }
2850    TextMessageFormat.write = function (output) {
2851        return "" + output + TextMessageFormat.RecordSeparator;
2852    };
2853    TextMessageFormat.parse = function (input) {
2854        if (input[input.length - 1] !== TextMessageFormat.RecordSeparator) {
2855            throw new Error("Message is incomplete.");
2856        }
2857        var messages = input.split(TextMessageFormat.RecordSeparator);
2858        messages.pop();
2859        return messages;
2860    };
2861    TextMessageFormat.RecordSeparatorCode = 0x1e;
2862    TextMessageFormat.RecordSeparator = String.fromCharCode(TextMessageFormat.RecordSeparatorCode);
2863    return TextMessageFormat;
2864}());
2865
2866
2867
2868/***/ }),
2869/* 13 */
2870/***/ (function(module, __webpack_exports__, __webpack_require__) {
2871
2872"use strict";
2873__webpack_require__.r(__webpack_exports__);
2874/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Arg", function() { return Arg; });
2875/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Platform", function() { return Platform; });
2876/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getDataDetail", function() { return getDataDetail; });
2877/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "formatArrayBuffer", function() { return formatArrayBuffer; });
2878/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isArrayBuffer", function() { return isArrayBuffer; });
2879/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sendMessage", function() { return sendMessage; });
2880/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createLogger", function() { return createLogger; });
2881/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SubjectSubscription", function() { return SubjectSubscription; });
2882/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ConsoleLogger", function() { return ConsoleLogger; });
2883/* harmony import */ var _ILogger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9);
2884/* harmony import */ var _Loggers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14);
2885// Copyright (c) .NET Foundation. All rights reserved.
2886// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
2887var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
2888    return new (P || (P = Promise))(function (resolve, reject) {
2889        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
2890        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
2891        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
2892        step((generator = generator.apply(thisArg, _arguments || [])).next());
2893    });
2894};
2895var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
2896    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
2897    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
2898    function verb(n) { return function (v) { return step([n, v]); }; }
2899    function step(op) {
2900        if (f) throw new TypeError("Generator is already executing.");
2901        while (_) try {
2902            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;
2903            if (y = 0, t) op = [op[0] & 2, t.value];
2904            switch (op[0]) {
2905                case 0: case 1: t = op; break;
2906                case 4: _.label++; return { value: op[1], done: false };
2907                case 5: _.label++; y = op[1]; op = [0]; continue;
2908                case 7: op = _.ops.pop(); _.trys.pop(); continue;
2909                default:
2910                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
2911                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
2912                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
2913                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
2914                    if (t[2]) _.ops.pop();
2915                    _.trys.pop(); continue;
2916            }
2917            op = body.call(thisArg, _);
2918        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
2919        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
2920    }
2921};
2922
2923
2924/** @private */
2925var Arg = /** @class */ (function () {
2926    function Arg() {
2927    }
2928    Arg.isRequired = function (val, name) {
2929        if (val === null || val === undefined) {
2930            throw new Error("The '" + name + "' argument is required.");
2931        }
2932    };
2933    Arg.isIn = function (val, values, name) {
2934        // TypeScript enums have keys for **both** the name and the value of each enum member on the type itself.
2935        if (!(val in values)) {
2936            throw new Error("Unknown " + name + " value: " + val + ".");
2937        }
2938    };
2939    return Arg;
2940}());
2941
2942/** @private */
2943var Platform = /** @class */ (function () {
2944    function Platform() {
2945    }
2946    Object.defineProperty(Platform, "isBrowser", {
2947        get: function () {
2948            return typeof window === "object";
2949        },
2950        enumerable: true,
2951        configurable: true
2952    });
2953    Object.defineProperty(Platform, "isWebWorker", {
2954        get: function () {
2955            return typeof self === "object" && "importScripts" in self;
2956        },
2957        enumerable: true,
2958        configurable: true
2959    });
2960    Object.defineProperty(Platform, "isNode", {
2961        get: function () {
2962            return !this.isBrowser && !this.isWebWorker;
2963        },
2964        enumerable: true,
2965        configurable: true
2966    });
2967    return Platform;
2968}());
2969
2970/** @private */
2971function getDataDetail(data, includeContent) {
2972    var detail = "";
2973    if (isArrayBuffer(data)) {
2974        detail = "Binary data of length " + data.byteLength;
2975        if (includeContent) {
2976            detail += ". Content: '" + formatArrayBuffer(data) + "'";
2977        }
2978    }
2979    else if (typeof data === "string") {
2980        detail = "String data of length " + data.length;
2981        if (includeContent) {
2982            detail += ". Content: '" + data + "'";
2983        }
2984    }
2985    return detail;
2986}
2987/** @private */
2988function formatArrayBuffer(data) {
2989    var view = new Uint8Array(data);
2990    // Uint8Array.map only supports returning another Uint8Array?
2991    var str = "";
2992    view.forEach(function (num) {
2993        var pad = num < 16 ? "0" : "";
2994        str += "0x" + pad + num.toString(16) + " ";
2995    });
2996    // Trim of trailing space.
2997    return str.substr(0, str.length - 1);
2998}
2999// Also in signalr-protocol-msgpack/Utils.ts
3000/** @private */
3001function isArrayBuffer(val) {
3002    return val && typeof ArrayBuffer !== "undefined" &&
3003        (val instanceof ArrayBuffer ||
3004            // Sometimes we get an ArrayBuffer that doesn't satisfy instanceof
3005            (val.constructor && val.constructor.name === "ArrayBuffer"));
3006}
3007/** @private */
3008function sendMessage(logger, transportName, httpClient, url, accessTokenFactory, content, logMessageContent) {
3009    return __awaiter(this, void 0, void 0, function () {
3010        var _a, headers, token, responseType, response;
3011        return __generator(this, function (_b) {
3012            switch (_b.label) {
3013                case 0:
3014                    if (!accessTokenFactory) return [3 /*break*/, 2];
3015                    return [4 /*yield*/, accessTokenFactory()];
3016                case 1:
3017                    token = _b.sent();
3018                    if (token) {
3019                        headers = (_a = {},
3020                            _a["Authorization"] = "Bearer " + token,
3021                            _a);
3022                    }
3023                    _b.label = 2;
3024                case 2:
3025                    logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Trace, "(" + transportName + " transport) sending data. " + getDataDetail(content, logMessageContent) + ".");
3026                    responseType = isArrayBuffer(content) ? "arraybuffer" : "text";
3027                    return [4 /*yield*/, httpClient.post(url, {
3028                            content: content,
3029                            headers: headers,
3030                            responseType: responseType,
3031                        })];
3032                case 3:
3033                    response = _b.sent();
3034                    logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Trace, "(" + transportName + " transport) request complete. Response status: " + response.statusCode + ".");
3035                    return [2 /*return*/];
3036            }
3037        });
3038    });
vendor: 10,882 bytes, lines 3039-3278
3039}
3040/** @private */
3041function createLogger(logger) {
3042    if (logger === undefined) {
3043        return new ConsoleLogger(_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Information);
3044    }
3045    if (logger === null) {
3046        return _Loggers__WEBPACK_IMPORTED_MODULE_1__["NullLogger"].instance;
3047    }
3048    if (logger.log) {
3049        return logger;
3050    }
3051    return new ConsoleLogger(logger);
3052}
3053/** @private */
3054var SubjectSubscription = /** @class */ (function () {
3055    function SubjectSubscription(subject, observer) {
3056        this.subject = subject;
3057        this.observer = observer;
3058    }
3059    SubjectSubscription.prototype.dispose = function () {
3060        var index = this.subject.observers.indexOf(this.observer);
3061        if (index > -1) {
3062            this.subject.observers.splice(index, 1);
3063        }
3064        if (this.subject.observers.length === 0 && this.subject.cancelCallback) {
3065            this.subject.cancelCallback().catch(function (_) { });
3066        }
3067    };
3068    return SubjectSubscription;
3069}());
3070
3071/** @private */
3072var ConsoleLogger = /** @class */ (function () {
3073    function ConsoleLogger(minimumLogLevel) {
3074        this.minimumLogLevel = minimumLogLevel;
3075        this.outputConsole = console;
3076    }
3077    ConsoleLogger.prototype.log = function (logLevel, message) {
3078        if (logLevel >= this.minimumLogLevel) {
3079            switch (logLevel) {
3080                case _ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Critical:
3081                case _ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Error:
3082                    this.outputConsole.error("[" + new Date().toISOString() + "] " + _ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"][logLevel] + ": " + message);
3083                    break;
3084                case _ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Warning:
3085                    this.outputConsole.warn("[" + new Date().toISOString() + "] " + _ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"][logLevel] + ": " + message);
3086                    break;
3087                case _ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Information:
3088                    this.outputConsole.info("[" + new Date().toISOString() + "] " + _ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"][logLevel] + ": " + message);
3089                    break;
3090                default:
3091                    // console.debug only goes to attached debuggers in Node, so we use console.log for Trace and Debug
3092                    this.outputConsole.log("[" + new Date().toISOString() + "] " + _ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"][logLevel] + ": " + message);
3093                    break;
3094            }
3095        }
3096    };
3097    return ConsoleLogger;
3098}());
3099
3100
3101
3102/***/ }),
3103/* 14 */
3104/***/ (function(module, __webpack_exports__, __webpack_require__) {
3105
3106"use strict";
3107__webpack_require__.r(__webpack_exports__);
3108/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NullLogger", function() { return NullLogger; });
3109// Copyright (c) .NET Foundation. All rights reserved.
3110// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3111/** A logger that does nothing when log messages are sent to it. */
3112var NullLogger = /** @class */ (function () {
3113    function NullLogger() {
3114    }
3115    /** @inheritDoc */
3116    // tslint:disable-next-line
3117    NullLogger.prototype.log = function (_logLevel, _message) {
3118    };
3119    /** The singleton instance of the {@link @microsoft/signalr.NullLogger}. */
3120    NullLogger.instance = new NullLogger();
3121    return NullLogger;
3122}());
3123
3124
3125
3126/***/ }),
3127/* 15 */
3128/***/ (function(module, __webpack_exports__, __webpack_require__) {
3129
3130"use strict";
3131__webpack_require__.r(__webpack_exports__);
3132/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MessageType", function() { return MessageType; });
3133// Copyright (c) .NET Foundation. All rights reserved.
3134// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3135/** Defines the type of a Hub Message. */
3136var MessageType;
3137(function (MessageType) {
3138    /** Indicates the message is an Invocation message and implements the {@link @microsoft/signalr.InvocationMessage} interface. */
3139    MessageType[MessageType["Invocation"] = 1] = "Invocation";
3140    /** Indicates the message is a StreamItem message and implements the {@link @microsoft/signalr.StreamItemMessage} interface. */
3141    MessageType[MessageType["StreamItem"] = 2] = "StreamItem";
3142    /** Indicates the message is a Completion message and implements the {@link @microsoft/signalr.CompletionMessage} interface. */
3143    MessageType[MessageType["Completion"] = 3] = "Completion";
3144    /** Indicates the message is a Stream Invocation message and implements the {@link @microsoft/signalr.StreamInvocationMessage} interface. */
3145    MessageType[MessageType["StreamInvocation"] = 4] = "StreamInvocation";
3146    /** Indicates the message is a Cancel Invocation message and implements the {@link @microsoft/signalr.CancelInvocationMessage} interface. */
3147    MessageType[MessageType["CancelInvocation"] = 5] = "CancelInvocation";
3148    /** Indicates the message is a Ping message and implements the {@link @microsoft/signalr.PingMessage} interface. */
3149    MessageType[MessageType["Ping"] = 6] = "Ping";
3150    /** Indicates the message is a Close message and implements the {@link @microsoft/signalr.CloseMessage} interface. */
3151    MessageType[MessageType["Close"] = 7] = "Close";
3152})(MessageType || (MessageType = {}));
3153
3154
3155/***/ }),
3156/* 16 */
3157/***/ (function(module, __webpack_exports__, __webpack_require__) {
3158
3159"use strict";
3160__webpack_require__.r(__webpack_exports__);
3161/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Subject", function() { return Subject; });
3162/* harmony import */ var _Utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
3163// Copyright (c) .NET Foundation. All rights reserved.
3164// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3165
3166/** Stream implementation to stream items to the server. */
3167var Subject = /** @class */ (function () {
3168    function Subject() {
3169        this.observers = [];
3170    }
3171    Subject.prototype.next = function (item) {
3172        for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {
3173            var observer = _a[_i];
3174            observer.next(item);
3175        }
3176    };
3177    Subject.prototype.error = function (err) {
3178        for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {
3179            var observer = _a[_i];
3180            if (observer.error) {
3181                observer.error(err);
3182            }
3183        }
3184    };
3185    Subject.prototype.complete = function () {
3186        for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {
3187            var observer = _a[_i];
3188            if (observer.complete) {
3189                observer.complete();
3190            }
3191        }
3192    };
3193    Subject.prototype.subscribe = function (observer) {
3194        this.observers.push(observer);
3195        return new _Utils__WEBPACK_IMPORTED_MODULE_0__["SubjectSubscription"](this, observer);
3196    };
3197    return Subject;
3198}());
3199
3200
3201
3202/***/ }),
3203/* 17 */
3204/***/ (function(module, __webpack_exports__, __webpack_require__) {
3205
3206"use strict";
3207__webpack_require__.r(__webpack_exports__);
3208/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HubConnectionBuilder", function() { return HubConnectionBuilder; });
3209/* harmony import */ var _DefaultReconnectPolicy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18);
3210/* harmony import */ var _HttpConnection__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(19);
3211/* harmony import */ var _HubConnection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10);
3212/* harmony import */ var _ILogger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9);
3213/* harmony import */ var _JsonHubProtocol__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(25);
3214/* harmony import */ var _Loggers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(14);
3215/* harmony import */ var _Utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(13);
3216// Copyright (c) .NET Foundation. All rights reserved.
3217// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3218var __assign = (undefined && undefined.__assign) || Object.assign || function(t) {
3219    for (var s, i = 1, n = arguments.length; i < n; i++) {
3220        s = arguments[i];
3221        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
3222            t[p] = s[p];
3223    }
3224    return t;
3225};
3226
3227
3228
3229
3230
3231
3232
3233// tslint:disable:object-literal-sort-keys
3234var LogLevelNameMapping = {
3235    trace: _ILogger__WEBPACK_IMPORTED_MODULE_3__["LogLevel"].Trace,
3236    debug: _ILogger__WEBPACK_IMPORTED_MODULE_3__["LogLevel"].Debug,
3237    info: _ILogger__WEBPACK_IMPORTED_MODULE_3__["LogLevel"].Information,
3238    information: _ILogger__WEBPACK_IMPORTED_MODULE_3__["LogLevel"].Information,
3239    warn: _ILogger__WEBPACK_IMPORTED_MODULE_3__["LogLevel"].Warning,
3240    warning: _ILogger__WEBPACK_IMPORTED_MODULE_3__["LogLevel"].Warning,
3241    error: _ILogger__WEBPACK_IMPORTED_MODULE_3__["LogLevel"].Error,
3242    critical: _ILogger__WEBPACK_IMPORTED_MODULE_3__["LogLevel"].Critical,
3243    none: _ILogger__WEBPACK_IMPORTED_MODULE_3__["LogLevel"].None,
3244};
3245function parseLogLevel(name) {
3246    // Case-insensitive matching via lower-casing
3247    // Yes, I know case-folding is a complicated problem in Unicode, but we only support
3248    // the ASCII strings defined in LogLevelNameMapping anyway, so it's fine -anurse.
3249    var mapping = LogLevelNameMapping[name.toLowerCase()];
3250    if (typeof mapping !== "undefined") {
3251        return mapping;
3252    }
3253    else {
3254        throw new Error("Unknown log level: " + name);
3255    }
3256}
3257/** A builder for configuring {@link @microsoft/signalr.HubConnection} instances. */
3258var HubConnectionBuilder = /** @class */ (function () {
3259    function HubConnectionBuilder() {
3260    }
3261    HubConnectionBuilder.prototype.configureLogging = function (logging) {
3262        _Utils__WEBPACK_IMPORTED_MODULE_6__["Arg"].isRequired(logging, "logging");
3263        if (isLogger(logging)) {
3264            this.logger = logging;
3265        }
3266        else if (typeof logging === "string") {
3267            var logLevel = parseLogLevel(logging);
3268            this.logger = new _Utils__WEBPACK_IMPORTED_MODULE_6__["ConsoleLogger"](logLevel);
3269        }
3270        else {
3271            this.logger = new _Utils__WEBPACK_IMPORTED_MODULE_6__["ConsoleLogger"](logging);
3272        }
3273        return this;
3274    };
3275    HubConnectionBuilder.prototype.withUrl = function (url, transportTypeOrOptions) {
3276        _Utils__WEBPACK_IMPORTED_MODULE_6__["Arg"].isRequired(url, "url");
3277        this.url = url;
3278        // Flow-typing knows where it's at. Since HttpTransportType is a 
3278number and IHttpConnectionOptions is guaranteed
3279        // to be an object, we know (as does TypeScript) this comparison is all we need to figure out which overload was called.
3280        if (typeof transportTypeOrOptions === "object") {
3281            this.httpConnectionOptions = __assign({}, this.httpConnectionOptions, transportTypeOrOptions);
3282        }
3283        else {
3284            this.httpConnectionOptions = __assign({}, this.httpConnectionOptions, { transport: transportTypeOrOptions });
3285        }
3286        return this;
3287    };
3288    /** Configures the {@link @microsoft/signalr.HubConnection} to use the specified Hub Protocol.
3289     *
3290     * @param {IHubProtocol} protocol The {@link @microsoft/signalr.IHubProtocol} implementation to use.
3291     */
3292    HubConnectionBuilder.prototype.withHubProtocol = function (protocol) {
3293        _Utils__WEBPACK_IMPORTED_MODULE_6__["Arg"].isRequired(protocol, "protocol");
3294        this.protocol = protocol;
3295        return this;
3296    };
3297    HubConnectionBuilder.prototype.withAutomaticReconnect = function (retryDelaysOrReconnectPolicy) {
3298        if (this.reconnectPolicy) {
3299            throw new Error("A reconnectPolicy has already been set.");
3300        }
3301        if (!retryDelaysOrReconnectPolicy) {
3302            this.reconnectPolicy = new _DefaultReconnectPolicy__WEBPACK_IMPORTED_MODULE_0__["DefaultReconnectPolicy"]();
3303        }
3304        else if (Array.isArray(retryDelaysOrReconnectPolicy)) {
3305            this.reconnectPolicy = new _DefaultReconnectPolicy__WEBPACK_IMPORTED_MODULE_0__["DefaultReconnectPolicy"](retryDelaysOrReconnectPolicy);
3306        }
3307        else {
3308            this.reconnectPolicy = retryDelaysOrReconnectPolicy;
3309        }
3310        return this;
3311    };
3312    /** Creates a {@link @microsoft/signalr.HubConnection} from the configuration options specified in this builder.
3313     *
3314     * @returns {HubConnection} The configured {@link @microsoft/signalr.HubConnection}.
3315     */
3316    HubConnectionBuilder.prototype.build = function () {
3317        // If httpConnectionOptions has a logger, use it. Otherwise, override it with the one
3318        // provided to configureLogger
3319        var httpConnectionOptions = this.httpConnectionOptions || {};
3320        // If it's 'null', the user **explicitly** asked for null, don't mess with it.
3321        if (httpConnectionOptions.logger === undefined) {
3322            // If our logger is undefined or null, that's OK, the HttpConnection constructor will handle it.
3323            httpConnectionOptions.logger = this.logger;
3324        }
3325        // Now create the connection
3326        if (!this.url) {
3327            throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");
3328        }
3329        var connection = new _HttpConnection__WEBPACK_IMPORTED_MODULE_1__["HttpConnection"](this.url, httpConnectionOptions);
3330        return _HubConnection__WEBPACK_IMPORTED_MODULE_2__["HubConnection"].create(connection, this.logger || _Loggers__WEBPACK_IMPORTED_MODULE_5__["NullLogger"].instance, this.protocol || new _JsonHubProtocol__WEBPACK_IMPORTED_MODULE_4__["JsonHubProtocol"](), this.reconnectPolicy);
3331    };
3332    return HubConnectionBuilder;
3333}());
3334
3335function isLogger(logger) {
3336    return logger.log !== undefined;
3337}
3338
3339
3340/***/ }),
3341/* 18 */
3342/***/ (function(module, __webpack_exports__, __webpack_require__) {
3343
3344"use strict";
3345__webpack_require__.r(__webpack_exports__);
3346/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DefaultReconnectPolicy", function() { return DefaultReconnectPolicy; });
3347// Copyright (c) .NET Foundation. All rights reserved.
3348// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3349// 0, 2, 10, 30 second delays before reconnect attempts.
3350var DEFAULT_RETRY_DELAYS_IN_MILLISECONDS = [0, 2000, 10000, 30000, null];
3351/** @private */
3352var DefaultReconnectPolicy = /** @class */ (function () {
3353    function DefaultReconnectPolicy(retryDelays) {
3354        this.retryDelays = retryDelays !== undefined ? retryDelays.concat([null]) : DEFAULT_RETRY_DELAYS_IN_MILLISECONDS;
3355    }
3356    DefaultReconnectPolicy.prototype.nextRetryDelayInMilliseconds = function (retr
3356yContext) {
3357        return this.retryDelays[retryContext.previousRetryCount];
3358    };
3359    return DefaultReconnectPolicy;
3360}());
3361
3362
3363
3364/***/ }),
3365/* 19 */
3366/***/ (function(module, __webpack_exports__, __webpack_require__) {
3367
3368"use strict";
3369__webpack_require__.r(__webpack_exports__);
3370/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HttpConnection", function() { return HttpConnection; });
3371/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TransportSendQueue", function() { return TransportSendQueue; });
3372/* harmony import */ var _DefaultHttpClient__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
3373/* harmony import */ var _ILogger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
3374/* harmony import */ var _ITransport__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20);
3375/* harmony import */ var _LongPollingTransport__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21);
3376/* harmony import */ var _ServerSentEventsTransport__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(23);
3377/* harmony import */ var _Utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(13);
3378/* harmony import */ var _WebSocketTransport__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(24);
3379// Copyright (c) .NET Foundation. All rights reserved.
3380// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3381var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
3382    return new (P || (P = Promise))(function (resolve, reject) {
3383        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
3384        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
3385        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
3386        step((generator = generator.apply(thisArg, _arguments || [])).next());
3387    });
3388};
3389var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
3390    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
3391    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
3392    function verb(n) { return function (v) { return step([n, v]); }; }
3393    function step(op) {
3394        if (f) throw new TypeError("Generator is already executing.");
3395        while (_) try {
3396            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;
3397            if (y = 0, t) op = [op[0] & 2, t.value];
3398            switch (op[0]) {
3399                case 0: case 1: t = op; break;
3400                case 4: _.label++; return { value: op[1], done: false };
3401                case 5: _.label++; y = op[1]; op = [0]; continue;
3402                case 7: op = _.ops.pop(); _.trys.pop(); continue;
3403                default:
3404                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
3405                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
3406                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
3407                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
3408                    if (t[2]) _.ops.pop();
3409                    _.trys.pop(); continue;
3410            }
3411            op = body.call(thisArg, _);
3412        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
3413        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
3414    }
3415};
3416
3417
3418
3419
3420
3421
3422
3423var MAX_REDIRECTS = 100;
3424var WebSocketModule = null;
3425var EventSourceModule = null;
3426if (_Utils__WEBPACK_IMPORTED_MODULE_5__["Platform"].isNode && "function" !== "undefined") {
3427    // In order to ignore the dynamic require in webpack builds we need to do this magic
3428    // @ts-ignore: TS doesn't know about these names
3429    var requireFunc =  true ? require : undefined;
3430    WebSocketModule = requireFunc("ws");
3431    EventSourceModule = requireFunc("eventsource");
3432}
3433/** @private */
3434var HttpConnection = /** @class */ (function () {
3435    function HttpConnection(url, options) {
3436        if (options === void 0) { options = {}; }
3437        this.features = {};
3438        this.negotiateVersion = 1;
3439        _Utils__WEBPACK_IMPORTED_MODULE_5__["Arg"].isRequired(url, "url");
3440        this.logger = Object(_Utils__WEBPACK_IMPORTED_MODULE_5__["createLogger"])(options.logger);
3441        this.baseUrl = this.resolveUrl(url);
3442        options = options || {};
3443        options.logMessageContent = options.logMessageContent || false;
3444        if (!_Utils__WEBPACK_IMPORTED_MODULE_5__["Platform"].isNode && typeof WebSocket !== "undefined" && !options.WebSocket) {
3445            options.WebSocket = WebSocket;
3446        }
3447        else if (_Utils__WEBPACK_IMPORTED_MODULE_5__["Platform"].isNode && !
3447options.WebSocket) {
3448            if (WebSocketModule) {
3449                options.WebSocket = WebSocketModule;
3450            }
3451        }
3452        if (!_Utils__WEBPACK_IMPORTED_MODULE_5__["Platform"].isNode && typeof EventSource !== "undefined" && !options.EventSource) {
3453            options.EventSource = EventSource;
3454        }
3455        else if (_Utils__WEBPACK_IMPORTED_MODULE_5__["Platform"].isNode && !options.EventSource) {
3456            if (typeof EventSourceModule !== "undefined") {
3457                options.EventSource = EventSourceModule;
3458            }
3459        }
3460        this.httpClient = options.httpClient || new _DefaultHttpClient__WEBPACK_IMPORTED_MODULE_0__["DefaultHttpClient"](this.logger);
3461        this.connectionState = "Disconnected" /* Disconnected */;
3462        this.connectionStarted = false;
3463        this.options = options;
3464        this.onreceive = null;
3465        this.onclose = null;
3466    }
3467    HttpConnection.prototype.start = function (transferFormat) {
3468        return __awaiter(this, void 0, void 0, function () {
3469            var message, message;
3470            return __generator(this, function (_a) {
3471                switch (_a.label) {
3472                    case 0:
3473                        transferFormat = transferFormat || _ITransport__WEBPACK_IMPORTED_MODULE_2__["TransferFormat"].Binary;
3474                        _Utils__WEBPACK_IMPORTED_MODULE_5__["Arg"].isIn(transferFormat, _ITransport__WEBPACK_IMPORTED_MODULE_2__["TransferFormat"], "transferFormat");
3475                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "Starting connection with transfer format '" + _ITransport__WEBPACK_IMPORTED_MODULE_2__["TransferFormat"][transferFormat] + "'.");
3476                        if (this.connectionState !== "Disconnected" /* Disconnected */) {
3477                            return [2 /*return*/, Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."))];
3478                        }
3479                        this.connectionState = "Connecting " /* Connecting */;
3480                        this.startInternalPromise = this.startInternal(transferFormat);
3481                        return [4 /*yield*/, this.startInternalPromise];
3482                    case 1:
3483                        _a.sent();
3484                        if (!(this.connectionState === "Disconnecting" /* Disconnecting */)) return [3 /*break*/, 3];
3485                        message = "Failed to start the HttpConnection before stop() was called.";
3486                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Error, message);
3487                        // We cannot await stopPromise inside startInternal since stopInternal awaits the startInternalPromise.
3488                        return [4 /*yield*/, this.stopPromise];
3489                    case 2:
3490                        // We cannot await stopPromise inside startInternal since stopInternal awaits the startInternalPromise.
3491                        _a.sent();
3492                        return [2 /*return*/, Promise.reject(new Error(message))];
3493                    case 3:
3494                        if (this.connectionState !== "Connected" /* Connected */) {
3495                            message = "HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";
3496                            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Error, message);
3497                            return [2 /*return*/, Promise.reject(new Error(message))];
3498                        }
3499                        _a.label = 4;
3500                    case 4:
3501                        this.connectionStarted = true;
3502                        return [2 /*return*/];
3503                }
3504            });
3505        });
3506    };
3507    HttpConnection.prototype.send = function (data) {
3508        if (this.connectionState !== "Connected" /* Connected */) {
3509            return Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State."));
3510        }
3511        if (!this.sendQueue) {
3512            this.sendQueue = new TransportSendQueue(this.transport);
3513        }
3514        // Transport will not be null if state is connected
3515        return this.sendQueue.send(data);
3516    };
3517    HttpConnection.prototype.stop = function (error) {
3518        return __awaiter(this, void 0, void 0, function () {
3519            var _this = this;
3520            return __generator(this, function (_a) {
3521                switch (_a.label) {
3522                    case 0:
3523                        if (this.connectionState === "Disconnected" /* Disconnected */) {
3524                            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "Call to HttpConnection.stop(" + error + ") ignored because the connection is already in the disconnected state.");
3525                            return [2 /*return*/, Promise.resolve()];
3526                        }
3527                        if (this.connectionState === "Disconnecting" /* Disconnecting */) {
3528                            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "Call to HttpConnection.stop(" + error + ") ignored because the connection is already in the disconnecting state.");
3529                            return [2 /*return*/, this.stopPromise];
3530                        }
3531                        this.connectionState = "Disconnecting" /* Disconnecting */;
3532                        this.stopPromise = new Promise(function (resolve) {
3533                            // Don't complete stop() until stopConnection() completes.
3534                            _this.stopPromiseResolver = resolve;
3535                        });
3536                        // stopInternal should never throw so just observe it.
3537                        return [4 /*yield*/, this.stopInternal(error)];
3538                    case 1:
3539                        // stopInternal should never throw so just observe it.
3540                        _a.sent();
3541                        return [4 /*yield*/, this.stopPromise];
3542                    case 2:
3543                        _a.sent();
3544                        return [2 /*return*/];
3545                }
3546            });
3547        });
3548    };
3549    HttpConnection.prototype.stopInternal = function (error) {
3550        return __awaiter(this, void 0, void 0, function () {
3551            var e_1, e_2, e_3;
3552            return __generator(this, function (_a) {
3553                switch (_a.label) {
3554                    case 0:
3555                        // Set error as soon as possible otherwise there is a race between
3556                        // the transport closing and providing an error and the error from a close message
3557                        // We would prefer the close message error.
3558                        this.stopError = error;
3559                        _a.label = 1;
3560                    case 1:
3561                        _a.trys.push([1, 3, , 4]);
3562                        return [4 /*yield*/, this.startInternalPromise];
3563                    case 2:
3564                        _a.sent();
3565                        return [3 /*break*/, 4];
3566                    case 3:
3567                        e_1 = _a.sent();
3568                        return [3 /*break*/, 4];
3569                    case 4:
3570                        if (!this.sendQueue) return [3 /*break*/, 9];
3571                        _a.label = 5;
3572                    case 5:
3573                        _a.trys.push([5, 7, , 8]);
3574                        return [4 /*yield*/, this.sendQueue.stop()];
3575                    case 6:
3576                        _a.sent();
3577                        return [3 /*break*/, 8];
3578                    case 7:
3579                        e_2 = _a.sent();
3580                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Error, "TransportSendQueue.stop() threw error '" + e_2 + "'.");
3581                        return [3 /*break*/, 8];
3582                    case 8:
3583                        this.sendQueue = undefined;
3584                        _a.label = 9;
3585                    case 9:
3586                        if (!this.transport) return [3 /*break*/, 14];
3587                        _a.label = 10;
3588                    case 10:
3589                        _a.trys.push([10, 12, , 13]);
3590                        return [4 /*yield*/, this.transport.stop()];
3591                    case 11:
3592                        _a.sent();
3593                        return [3 /*break*/, 13];
3594                    case 12:
3595                        e_3 = _a.sent();
3596                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Error, "HttpConnection.transport.stop() threw error '" + e_3 + "'.");
3597                        this.stopConnection();
3598                        return [3 /*break*/, 13];
3599                    case 13:
3600                        this.transport = undefined;
3601                        return [3 /*break*/, 15];
3602                    case 14:
3603                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.");
3604                        this.stopConnection();
3605                        _a.label = 15;
3606                    case 15: return [2 /*return*/];
3607                }
3608            });
3609        });
3610    };
3611    HttpConnection.prototype.startInternal = function (transferFormat) {
3612        return __awaiter(this, void 0, void 0, function () {
3613            var url, negotiateResponse, redirects, _loop_1, this_1, e_4;
3614            return __generator(this, function (_a) {
3615                switch (_a.label) {
3616                    case 0:
3617                        url = this.baseUrl;
3618                        this.accessTokenFactory = this.options.accessTokenFactory;
3619                        _a.label = 1;
3620                    case 1:
3621                        _a.trys.push([1, 12, , 13]);
3622                        if (!this.options.skipNegotiation) return [3 /*break*/, 5];
3623                        if (!(this.options.transport === _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"].WebSockets)) return [3 /*break*/, 3];
3624                        // No need to add a connection ID in this case
3625                        this.transport = this.constructTransport(_ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"].WebSockets);
3626                        // We should just call connect directly in this case.
3627                        // No fallback or negotiate in this case.
3628                        return [4 /*yield*/, this.startTransport(url, transferFormat)];
3629                    case 2:
3630                        // We should just call connect directly in this case.
3631                        // No fallback or negotiate in this case.
3632                        _a.sent();
3633                        return [3 /*break*/, 4];
3634                    case 3: throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");
3635                    case 4: return [3 /*break*/, 11];
3636                    case 5:
3637                        negotiateResponse = null;
3638                        redirects = 0;
3639                        _loop_1 = function () {
3640                            var accessToken_1;
3641                            return __generator(this, function (_a) {
3642                                switch (_a.label) {
3643                                    case 0: return [4 /*yield*/, this_1.getNegotiationResponse(url)];
3644                                    case 1:
3645                                        negotiateResponse = _a.sent();
3646                                        // the user tries to stop the connection when it is being started
3647                                        if (this_1.connectionState === "Disconnecting" /* Disconnecting */ || this_1.connectionState === "Disconnected" /* Disconnected */) {
3648                                            throw new Error("The connection was stopped during negotiation.");
3649                                        }
3650                                        if (negotiateResponse.error) {
3651                                            throw new Error(negotiateResponse.error);
3652                                        }
3653                                        if (negotiateResponse.ProtocolVersion) {
3654                                            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.");
3655                                        }
3656                                        if (negotiateResponse.url) {
3657                                            url = negotiateResponse.url;
3658                                        }
3659                                        if (negotiateResponse.accessToken) {
3660                                            accessToken_1 = negotiateResponse.accessToken;
3661                                            this_1.accessTokenFactory = function () { return accessToken_1; };
3662                                        }
3663                                        redirects++;
3664                                        return [2 /*return*/];
3665                                }
3666                            });
3667                        };
3668                        this_1 = this;
3669                        _a.label = 6;
3670                    case 6: return [5 /*yield**/, _loop_1()];
3671                    case 7:
3672                        _a.sent();
3673                        _a.label = 8;
3674                    case 8:
3675                        if (negotiateResponse.url && redirects < MAX_REDIRECTS) return [3 /*break*/, 6];
3676                        _a.label = 9;
3677                    case 9:
3678                        if (redirects === MAX_REDIRECTS && negotiateResponse.url) {
3679                            throw new Error("Negotiate redirection limit exceeded.");
3680                        }
3681                        return [4 /*yield*/, this.createTransport(url, this.options.transport, negotiateResponse, transferFormat)];
3682                    case 10:
3683                        _a.sent();
3684                        _a.label = 11;
3685                    case 11:
3686                        if (this.transport instanceof _LongPollingTransport__WEBPACK_IMPORTED_MODULE_3__["LongPollingTransport"]) {
3687                            this.features.inherentKeepAlive = true;
3688                        }
3689                        if (this.connectionState === "Connecting " /* Connecting */) {
3690                            // Ensure the connection transitions to the connected state prior to completing this.startInternalPromise.
3691                            // start() will handle the case when stop was called and startInternal exits still in the disconnecting state.
3692                            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "The HttpConnection connected successfully.");
3693                            this.connectionState = "Connected" /* Connected */;
3694                        }
3695                        return [3 /*break*/, 13];
3696                    case 12:
3697                        e_4 = _a.sent();
3698                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Error, "Failed to start the connection: " + e_4);
3699                        this.connectionState = "Disconnected" /* Disconnected */;
3700                        this.transport = undefined;
3701                        return [2 /*return*/, Promise.reject(e_4)];
3702                    case 13: return [2 /*return*/];
3703                }
3704            });
3705        });
3706    };
3707    HttpConnection.prototype.getNegotiationResponse = function (url) {
3708        return __awaiter(this, void 0, void 0, function () {
3709            var _a, headers, token, negotiateUrl, response, negotiateResponse, e_5;
3710            return __generator(this, function (_b) {
3711                switch (_b.label) {
3712                    case 0:
3713                        if (!this.accessTokenFactory) return [3 /*break*/, 2];
3714                        return [4 /*yield*/, this.accessTokenFactory()];
3715                    case 1:
3716                        token = _b.sent();
3717                        if (token) {
3718                            headers = (_a = {},
3719                                _a["Authorization"] = "Bearer " + token,
3720                                _a);
3721                        }
3722                        _b.label = 2;
3723                    case 2:
3724                        negotiateUrl = this.resolveNegotiateUrl(url);
3725                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "Sending negotiation request: " + negotiateUrl + ".");
3726                        _b.label = 3;
3727                    case 3:
3728                        _b.trys.push([3, 5, , 6]);
3729                        return [4 /*yield*/, this.httpClient.post(negotiateUrl, {
3730                                content: "",
3731                                headers: headers,
3732                            })];
3733                    case 4:
3734                        response = _b.sent();
3735                        if (response.statusCode !== 200) {
3736                            return [2 /*return*/, Promise.reject(new Error("Unexpected status code returned from negotiate " + response.statusCode))];
3737                        }
3738                        negotiateResponse = JSON.parse(response.content);
3739                        if (!negotiateResponse.negotiateVersion || negotiateResponse.negotiateVersion < 1) {
3740                            // Negotiate version 0 doesn't use connectionToken
3741                            // So we set it equal to connectionId so all our logic can use connectionToken without being aware of the negotiate version
3742                            negotiateResponse.connectionToken = negotiateResponse.connectionId;
3743                        }
3744                        return [2 /*return*/, negotiateResponse];
3745                    case 5:
3746                        e_5 = _b.sent();
3747                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Error, "Failed to complete negotiation with the server: " + e_5);
3748                        return [2 /*return*/, Promise.reject(e_5)];
3749                    case 6: return [2 /*return*/];
3750                }
3751            });
3752        });
3753    };
3754    HttpConnection.prototype.createConnectUrl = function (url, connectionToken) {
3755        if (!connectionToken) {
3756            return url;
3757        }
3758        return url + (url.indexOf("?") === -1 ? "?" : "&") + ("id=" + connectionToken);
3759    };
3760    HttpConnection.prototype.createTransport = function (url, requestedTransport, negotiateResponse, requestedTransferFormat) {
3761        return __awaiter(this, void 0, void 0, function () {
3762            var connectUrl, transportExceptions, transports, negotiate, _i, transports_1, endpoint, transportOrError, ex_1, ex_2, message;
3763            return __generator(this, function (_a) {
3764                switch (_a.label) {
3765                    case 0:
3766                        connectUrl = this.createConnectUrl(url, negotiateResponse.connectionToken);
3767                        if (!this.isITransport(requestedTransport)) return [3 /*break*/, 2];
3768                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "Connection was provided an instance of ITransport, using that directly.");
3769                        this.transport = requestedTransport;
3770                        return [4 /*yield*/, this.startTransport(connectUrl, requestedTransferFormat)];
3771                    case 1:
3772                        _a.sent();
3773                        this.connectionId = negotiateResponse.connectionId;
3774                        return [2 /*return*/];
3775                    case 2:
3776                        transportExceptions = [];
3777                        transports = negotiateResponse.availableTransports || [];
3778                        negotiate = negotiateResponse;
3779                        _i = 0, transports_1 = transports;
3780                        _a.label = 3;
3781                    case 3:
3782                        if (!(_i < transports_1.length)) return [3 /*break*/, 13];
3783                        endpoint = transports_1[_i];
3784                        transportOrError = this.resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat);
3785                        if (!(transportOrError instanceof Error)) return [3 /*break*/, 4];
3786                        // Store the error and continue, we don't want to cause a re-negotiate in these cases
3787                        transportExceptions.push(endpoint.transport + " failed: " + transportOrError);
3788                        return [3 /*break*/, 12];
3789                    case 4:
3790                        if (!this.isITransport(transportOrError)) return [3 /*break*/, 12];
3791                        this.transport = transportOrError;
3792                        if (!!negotiate) return [3 /*break*/, 9];
3793                        _a.label = 5;
3794                    case 5:
3795                        _a.trys.push([5, 7, , 8]);
3796                        return [4 /*yield*/, this.getNegotiationResponse(url)];
3797                    case 6:
3798                        negotiate = _a.sent();
3799                        return [3 /*break*/, 8];
3800                    case 7:
3801                        ex_1 = _a.sent();
3802                        return [2 /*return*/, Promise.reject(ex_1)];
3803                    case 8:
3804                        connectUrl = this.createConnectUrl(url, negotiate.connectionToken);
3805                        _a.label = 9;
3806                    case 9:
3807                        _a.trys.push([9, 11, , 12]);
3808                        return [4 /*yield*/, this.startTransport(connectUrl, requestedTransferFormat)];
3809                    case 10:
3810                        _a.sent();
3811                        this.connectionId = negotiate.connectionId;
3812                        return [2 /*return*/];
3813                    case 11:
3814                        ex_2 = _a.sent();
3815                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Error, "Failed to start the transport '" + endpoint.transport + "': " + ex_2);
3816                        negotiate = undefined;
3817                        transportExceptions.push(endpoint.transport + " failed: " + ex_2);
3818                        if (this.connectionState !== "Connecting " /* Connecting */) {
3819                            message = "Failed to select transport before stop() was called.";
3820                            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, message);
3821                            return [2 /*return*/, Promise.reject(new Error(message))];
3822                        }
3823                        return [3 /*break*/, 12];
3824                    case 12:
3825                        _i++;
3826                        return [3 /*break*/, 3];
3827                    case 13:
3828                        if (transportExceptions.length > 0) {
3829                            return [2 /*return*/, Promise.reject(new Error("Unable to connect to the server with any of the available transports. " + transportExceptions.join(" ")))];
3830                        }
3831                        return [2 /*return*/, Promise.reject(new Error("None of the transports supported by the client are supported by the server."))];
3832                }
3833            });
3834        });
3835    };
3836    HttpConnection.prototype.constructTransport = function (transport) {
3837        switch (transport) {
3838            case _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"].WebSockets:
3839                if (!this.options.WebSocket) {
3840                    throw new Error("'WebSocket' is not supported in your environment.");
3841                }
3842                return new _WebSocketTransport__WEBPACK_IMPORTED_MODULE_6__["WebSocketTransport"](this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false, this.options.WebSocket);
3843            case _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"].ServerSentEvents:
3844                if (!this.options.EventSource) {
3845                    throw new Error("'EventSource' is not supported in your environment.");
3846                }
3847                return new _ServerSentEventsTransport__WEBPACK_IMPORTED_MODULE_4__["ServerSentEventsTransport"](this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false, this.options.EventSource);
3848            case _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"].LongPolling:
3849                return new _LongPollingTransport__WEBPACK_IMPORTED_MODULE_3__["LongPollingTransport"](this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false);
3850            default:
3851                throw new Error("Unknown transport: " + transport + ".");
3852        }
3853    };
3854    HttpConnection.prototype.startTransport = function (url, transferFormat) {
3855        var _this = this;
3856        this.transport.onreceive = this.onreceive;
3857        this.transport.onclose = function (e) { return _this.stopConnection(e); };
3858        return this.transport.connect(url, transferFormat);
3859    };
3860    HttpConnection.prototype.resolveTransportOrError = function (endpoint, requestedTransport, requestedTransferFormat) {
3861        var transport = _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"][endpoint.transport];
3862        if (transport === null || transport === undefined) {
3863            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "Skipping transport '" + endpoint.transport + "' because it is not supported by this client.");
3864            return new Error("Skipping transport '" + endpoint.transport + "' because it is not supported by this client.");
3865        }
3866        else {
3867            if (transportMatches(requestedTransport, transport)) {
3868                var transferFormats = endpoint.transferFormats.map(function (s) { return _ITransport__WEBPACK_IMPORTED_MODULE_2__["TransferFormat"][s]; });
3869                if (transferFormats.indexOf(requestedTransferFormat) >= 0) {
3870                    if ((transport === _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"].WebSockets && !this.options.WebSocket) ||
3871                        (transport === _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"].ServerSentEvents && !this.options.EventSource)) {
3872                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "Skipping transport '" + _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"][transport] + "' because it is not supported in your environment.'");
3873                        return new Error("'" + _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"][transport] + "' is not supported in your environment.");
3874                    }
3875                    else {
3876                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "Selecting transport '" + _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"][transport] + "'.");
3877                        try {
3878                            return this.constructTransport(transport);
3879                        }
3880                        catch (ex) {
3881                            return ex;
3882                        }
3883                    }
3884                }
3885                else {
3886                    this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "Skipping transport '" + _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"][transport] + "' because it does not support the requested transfer format '" + _ITransport__WEBPACK_IMPORTED_MODULE_2__["TransferFormat"][requestedTransferFormat] + "'.");
3887                    return new Error("'" + _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"][transport] + "' does not support " + _ITransport__WEBPACK_IMPORTED_MODULE_2__["TransferFormat"][requestedTransferFormat] + ".");
3888                }
3889            }
3890            else {
3891                this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "Skipping transport '" + _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"][transport] + "' because it was disabled by the client.");
3892                return new Error("'" + _ITransport__WEBPACK_IMPORTED_MODULE_2__["HttpTransportType"][transport] + "' is disabled by the client.");
3893            }
3894        }
3895    };
3896    HttpConnection.prototype.isITransport = function (transport) {
3897        return transport && typeof (transport) === "object" && "connect" in transport;
3898    };
3899    HttpConnection.prototype.stopConnection = function (error) {
3900        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "HttpConnection.stopConnection(" + error + ") called while in state " + this.connectionState + ".");
3901        this.transport = undefined;
3902        // If we have a stopError, it takes precedence over the error from the transport
3903        error = this.stopError || error;
3904        this.stopError = undefined;
3905        if (this.connectionState === "Disconnected" /* Disconnected */) {
3906            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Debug, "Call to HttpConnection.stopConnection(" + error + ") was ignored because the connection is already in the disconnected state.");
3907            return;
3908        }
3909        if (this.connectionState === "Connecting " /* Connecting */) {
3910            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Warning, "Call to HttpConnection.stopConnection(" + error + ") was ignored because the connection hasn't yet left the in the connecting state.");
3911            return;
3912        }
3913        if (this.connectionState === "Disconnecting" /* Disconnecting */) {
3914            // A call to stop() induced this call to stopConnection and needs to be completed.
3915            // Any stop() awaiters will be scheduled to continue after the onclose callback fires.
3916            this.stopPromiseResolver();
3917        }
3918        if (error) {
3919            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Error, "Connection disconnected with error '" + error + "'.");
3920        }
3921        else {
3922            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Information, "Connection disconnected.");
3923        }
3924        this.connectionId = undefined;
3925        this.connectionState = "Disconnected" /* Disconnected */;
3926        if (this.onclose && this.connectionStarted) {
3927            this.connectionStarted = false;
3928            try {
3929                this.onclose(error);
3930            }
3931            catch (e) {
3932                this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Error, "HttpConnection.onclose(" + error + ") threw error '" + e + "'.");
3933            }
3934        }
3935    };
3936    HttpConnection.prototype.resolveUrl = function (url) {
3937        // startsWith is not supported in IE
3938        if (url.lastIndexOf("https://", 0) === 0 || url.lastIndexOf("http://", 0) === 0) {
3939            return url;
3940        }
3941        if (!_Utils__WEBPACK_IMPORTED_MODULE_5__["Platform"].isBrowser || !window.document) {
3942            throw new Error("Cannot resolve '" + url + "'.");
3943        }
3944        // Setting the url to the href propery of an anchor tag handles normalization
3945        // for us. There are 3 main cases.
3946        // 1. Relative path normalization e.g "b" -> "http://localhost:5000/a/b"
3947        // 2. Absolute path normalization e.g "/a/b" -> "http://localhost:5000/a/b"
3948        // 3. Networkpath reference normalization e.g "//localhost:5000/a/b" -> "http://localhost:5000/a/b"
3949        var aTag = window.document.createElement("a");
3950        aTag.href = url;
3951        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Information, "Normalizing '" + url + "' to '" + aTag.href + "'.");
3952        return aTag.href;
3953    };
3954    HttpConnection.prototype.resolveNegotiateUrl = function (url) {
3955        var index = url.indexOf("?");
3956        var negotiateUrl = url.substring(0, index === -1 ? url.length : index);
3957        if (negotiateUrl[negotiateUrl.length - 1] !== "/") {
3958            negotiateUrl += "/";
3959        }
3960        negotiateUrl += "negotiate";
3961        negotiateUrl += index === -1 ? "" : url.substring(index);
3962        if (negotiateUrl.indexOf("negotiateVersion") === -1) {
3963            negotiateUrl += index === -1 ? "?" : "&";
3964            negotiateUrl += "negotiateVersion=" + this.negotiateVersion;
3965        }
3966        return negotiateUrl;
3967    };
3968    return HttpConnection;
3969}());
3970
3971function transportMatches(requestedTransport, actualTransport) {
3972    return !requestedTransport || ((actualTransport & requestedTransport) !== 0);
3973}
3974/** @private */
3975var TransportSendQueue = /** @class */ (function () {
3976    function TransportSendQueue(transport) {
3977        this.transport = transport;
3978        this.buffer = [];
3979        this.executing = true;
3980        this.sendBufferedData = new PromiseSource();
3981        this.transportResult = new PromiseSource();
3982        this.sendLoopPromise = this.sendLoop();
3983    }
3984    TransportSendQueue.prototype.send = function (data) {
3985        this.bufferData(data);
3986        if (!this.transportResult) {
3987            this.transportResult = new PromiseSource();
3988        }
3989        return this.transportResult.promise;
3990    };
3991    TransportSendQueue.prototype.stop = function () {
3992        this.executing = false;
3993        this.sendBufferedData.resolve();
3994        return this.sendLoopPromise;
3995    };
3996    TransportSendQueue.prototype.bufferData = function (data) {
3997        if (this.buffer.length && typeof (this.buffer[0]) !== typeof (data)) {
3998            throw new Error("Expected data to be of type " + typeof (this.buffer) + " but was of type " + typeof (data));
3999        }
4000        this.buffer.push(data);
4001        this.sendBufferedData.resolve();
4002    };
4003    TransportSendQueue.prototype.sendLoop = function () {
4004        return __awaiter(this, void 0, void 0, function () {
4005            var transportResult, data, error_1;
4006            return __generator(this, function (_a) {
4007                switch (_a.label) {
4008                    case 0:
4009                        if (false) {}
4010                        return [4 /*yield*/, this.sendBufferedData.promise];
4011                    case 1:
4012                        _a.sent();
4013                        if (!this.executing) {
4014                            if (this.transportResult) {
4015                                this.transportResult.reject("Connection stopped.");
4016                            }
4017                            return [3 /*break*/, 6];
4018                        }
4019                        this.sendBufferedData = new PromiseSource();
4020                        transportResult = this.transportResult;
4021                        this.transportResult = undefined;
4022                        data = typeof (this.buffer[0]) === "string" ?
4023                            this.buffer.join("") :
4024                            TransportSendQueue.concatBuffers(this.buffer);
4025                        this.buffer.length = 0;
4026                        _a.label = 2;
4027                    case 2:
4028                        _a.trys.push([2, 4, , 5]);
4029                        return [4 /*yield*/, this.transport.send(data)];
4030                    case 3:
4031                        _a.sent();
4032                        transportResult.resolve();
4033                        return [3 /*break*/, 5];
4034                    case 4:
4035                        error_1 = _a.sent();
4036                        transportResult.reject(error_1);
4037                        return [3 /*break*/, 5];
4038                    case 5: return [3 /*break*/, 0];
4039                    case 6: return [2 /*return*/];
4040                }
4041            });
4042        });
4043    };
4044    TransportSendQueue.concatBuffers = function (arrayBuffers) {
4045        var totalLength = arrayBuffers.map(function (b) { return b.byteLength; }).reduce(function (a, b) { return a + b; });
4046        var result = new Uint8Array(totalLength);
4047        var offset = 0;
4048        for (var _i = 0, arrayBuffers_1 = arrayBuffers; _i < arrayBuffers_1.length; _i++) {
4049            var item = arrayBuffers_1[_i];
4050            result.set(new Uint8Array(item), offset);
4051            offset += item.byteLength;
4052        }
4053        return result;
4054    };
4055    return TransportSendQueue;
4056}());
4057
4058var PromiseSource = /** @class */ (function () {
4059    function PromiseSource() {
4060        var _this = this;
4061        this.promise = new Promise(function (resolve, reject) {
4062            var _a;
4063            return _a = [resolve, reject], _this.resolver = _a[0], _this.rejecter = _a[1], _a;
4064        });
4065    }
4066    PromiseSource.prototype.resolve = function () {
4067        this.resolver();
4068    };
4069    PromiseSource.prototype.reject = function (reason) {
4070        this.rejecter(reason);
4071    };
4072    return PromiseSource;
4073}());
4074
4075
4076/***/ }),
4077/* 20 */
4078/***/ (function(module, __webpack_exports__, __webpack_require__) {
4079
4080"use strict";
4081__webpack_require__.r(__webpack_exports__);
4082/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HttpTransportType", function() { return HttpTransportType; });
4083/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TransferFormat", function() { return TransferFormat; });
4084// Copyright (c) .NET Foundation. All rights reserved.
4085// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
4086// This will be treated as a bit flag in the future, so we keep it using power-of-two values.
4087/** Specifies a specific HTTP transport type. */
4088var HttpTransportType;
4089(function (HttpTransportType) {
4090    /** Specifies no transport preference. */
4091    HttpTransportType[HttpTransportType["None"] = 0] = "None";
4092    /** Specifies the WebSockets transport. */
4093    HttpTransportType[HttpTransportType["WebSockets"] = 1] = "WebSockets";
4094    /** Specifies the Server-Sent Events transport. */
4095    HttpTransportType[HttpTransportType["ServerSentEvents"] = 2] = "ServerSentEvents";
4096    /** Specifies the Long Polling transport. */
4097    HttpTransportType[HttpTransportType["LongPolling"] = 4] = "LongPolling";
4098})(HttpTransportType || (HttpTransportType = {}));
4099/** Specifies the transfer format for a connection. */
4100var TransferFormat;
4101(function (TransferFormat) {
4102    /** Specifies that only text data will be transmitted over the connection. */
4103    TransferFormat[TransferFormat["Text"] = 1] = "Text";
4104    /** Specifies that binary data will be transmitted over the connection. */
4105    TransferFormat[TransferFormat["Binary"] = 2] = "Binary";
4106})(TransferFormat || (TransferFormat = {}));
4107
4108
4109/***/ }),
4110/* 21 */
4111/***/ (function(module, __webpack_exports__, __webpack_require__) {
4112
4113"use strict";
4114__webpack_require__.r(__webpack_exports__);
4115/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LongPollingTransport", function() { return LongPollingTransport; });
4116/* harmony import */ var _AbortController__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(22);
4117/* harmony import */ var _Errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
4118/* harmony import */ var _ILogger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9);
4119/* harmony import */ var _ITransport__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20);
4120/* harmony import */ var _Utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(13);
4121// Copyright (c) .NET Foundation. All rights reserved.
4122// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
4123var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
4124    return new (P || (P = Promise))(function (resolve, reject) {
4125        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
4126        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
4127        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
4128        step((generator = generator.apply(thisArg, _arguments || [])).next());
4129    });
vendor: 4,302 bytes, lines 4130-4201
4130};
4131var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
4132    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
4133    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
4134    function verb(n) { return function (v) { return step([n, v]); }; }
4135    function step(op) {
4136        if (f) throw new TypeError("Generator is already executing.");
4137        while (_) try {
4138            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;
4139            if (y = 0, t) op = [op[0] & 2, t.value];
4140            switch (op[0]) {
4141                case 0: case 1: t = op; break;
4142                case 4: _.label++; return { value: op[1], done: false };
4143                case 5: _.label++; y = op[1]; op = [0]; continue;
4144                case 7: op = _.ops.pop(); _.trys.pop(); continue;
4145                default:
4146                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
4147                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
4148                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
4149                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
4150                    if (t[2]) _.ops.pop();
4151                    _.trys.pop(); continue;
4152            }
4153            op = body.call(thisArg, _);
4154        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
4155        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
4156    }
4157};
4158
4159
4160
4161
4162
4163// Not exported from 'index', this type is internal.
4164/** @private */
4165var LongPollingTransport = /** @class */ (function () {
4166    function LongPollingTransport(httpClient, accessTokenFactory, logger, logMessageContent) {
4167        this.httpClient = httpClient;
4168        this.accessTokenFactory = accessTokenFactory;
4169        this.logger = logger;
4170        this.pollAbort = new _AbortController__WEBPACK_IMPORTED_MODULE_0__["AbortController"]();
4171        this.logMessageContent = logMessageContent;
4172        this.running = false;
4173        this.onreceive = null;
4174        this.onclose = null;
4175    }
4176    Object.defineProperty(LongPollingTransport.prototype, "pollAborted", {
4177        // This is an internal type, not exported from 'index' so this is really just internal.
4178        get: function () {
4179            return this.pollAbort.aborted;
4180        },
4181        enumerable: true,
4182        configurable: true
4183    });
4184    LongPollingTransport.prototype.connect = function (url, transferFormat) {
4185        return __awaiter(this, void 0, void 0, function () {
4186            var pollOptions, token, pollUrl, response;
4187            return __generator(this, function (_a) {
4188                switch (_a.label) {
4189                    case 0:
4190                        _Utils__WEBPACK_IMPORTED_MODULE_4__["Arg"].isRequired(url, "url");
4191                        _Utils__WEBPACK_IMPORTED_MODULE_4__["Arg"].isRequired(transferFormat, "transferFormat");
4192                        _Utils__WEBPACK_IMPORTED_MODULE_4__["Arg"].isIn(transferFormat, _ITransport__WEBPACK_IMPORTED_MODULE_3__["TransferFormat"], "transferFormat");
4193                        this.url = url;
4194                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, "(LongPolling transport) Connecting.");
4195                        // Allow binary format on Node and Browsers that support binary content (indicated by the presence of responseType property)
4196                        if (transferFormat === _ITransport__WEBPACK_IMPORTED_MODULE_3__["TransferFormat"].Binary &&
4197                            (typeof XMLHttpRequest !== "undefined" && typeof new XMLHttpRequest().responseType !== "string")) {
4198                            throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");
4199                        }
4200                        pollOptions = {
4201                            abortSignal: this.pollAbort.signal,
4202                            headers: {},
4203                            timeout: 100000,
4204                        };
4205                        if (transferFormat === _ITransport__WEBPACK_IMPORTED_MODULE_3__["TransferFormat"].Binary) {
4206                            pollOptions.responseType = "arraybuffer";
4207                        }
4208                        return [4 /*yield*/, this.getAccessToken()];
4209                    case 1:
4210                        token = _a.sent();
4211                        this.updateHeaderToken(pollOptions, token);
4212                        pollUrl = url + "&_=" + Date.now();
4213                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, "(LongPolling transport) polling: " + pollUrl + ".");
4214                        return [4 /*yield*/, this.httpClient.get(pollUrl, pollOptions)];
4215                    case 2:
4216                        response = _a.sent();
4217                        if (response.statusCode !== 200) {
4218                            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Error, "(LongPolling transport) Unexpected response code: " + response.statusCode + ".");
4219                            // Mark running as false so that the poll immediately ends and runs the close logic
4220                            this.closeError = new _Errors__WEBPACK_IMPORTED_MODULE_1__["HttpError"](response.statusText || "", response.statusCode);
4221                            this.running = false;
4222                        }
4223                        else {
4224                            this.running = true;
4225                        }
4226                        this.receiving = this.poll(this.url, pollOptions);
4227                        return [2 /*return*/];
4228                }
4229            });
4230        });
4231    };
4232    LongPollingTransport.prototype.getAccessToken = function () {
4233        return __awaiter(this, void 0, void 0, function () {
4234            return __generator(this, function (_a) {
4235                switch (_a.label) {
4236                    case 0:
4237                        if (!this.accessTokenFactory) return [3 /*break*/, 2];
4238                        return [4 /*yield*/, this.accessTokenFactory()];
4239                    case 1: return [2 /*return*/, _a.sent()];
4240                    case 2: return [2 /*return*/, null];
4241                }
4242            });
4243        });
4244    };
4245    LongPollingTransport.prototype.updateHeaderToken = function (request, token) {
4246        if (!request.headers) {
4247            request.headers = {};
4248        }
4249        if (token) {
4250            // tslint:disable-next-line:no-string-literal
4251            request.headers["Authorization"] = "Bearer " + token;
4252            return;
4253        }
4254        // tslint:disable-next-line:no-string-literal
4255        if (request.headers["Authorization"]) {
4256            // tslint:disable-next-line:no-string-literal
4257            delete request.headers["Authorization"];
4258        }
4259    };
4260    LongPollingTransport.prototype.poll = function (url, pollOptions) {
4261        return __awaiter(this, void 0, void 0, function () {
4262            var token, pollUrl, response, e_1;
4263            return __generator(this, function (_a) {
4264                switch (_a.label) {
4265                    case 0:
4266                        _a.trys.push([0, , 8, 9]);
4267                        _a.label = 1;
4268                    case 1:
4269                        if (!this.running) return [3 /*break*/, 7];
4270                        return [4 /*yield*/, this.getAccessToken()];
4271                    case 2:
4272                        token = _a.sent();
4273                        this.updateHeaderToken(pollOptions, token);
4274                        _a.label = 3;
4275                    case 3:
4276                        _a.trys.push([3, 5, , 6]);
4277                        pollUrl = url + "&_=" + Date.now();
4278                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, "(LongPolling transport) polling: " + pollUrl + ".");
4279                        return [4 /*yield*/, this.httpClient.get(pollUrl, pollOptions)];
4280                    case 4:
4281                        response = _a.sent();
4282                        if (response.statusCode === 204) {
4283                            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Information, "(LongPolling transport) Poll terminated by server.");
4284                            this.running = false;
4285                        }
4286                        else if (response.statusCode !== 200) {
4287                            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Error, "(LongPolling transport) Unexpected response code: " + response.statusCode + ".");
4288                            // Unexpected status code
4289                            this.closeError = new _Errors__WEBPACK_IMPORTED_MODULE_1__["HttpError"](response.statusText || "", response.statusCode);
4290                            this.running = false;
4291                        }
4292                        else {
4293                            // Process the response
4294                            if (response.content) {
4295                                this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, "(LongPolling transport) data received. " + Object(_Utils__WEBPACK_IMPORTED_MODULE_4__["getDataDetail"])(response.content, this.logMessageContent) + ".");
4296                                if (this.onreceive) {
4297                                    this.onreceive(response.content);
4298                                }
4299                            }
4300                            else {
4301                                // This is another way timeout manifest.
4302                                this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, "(LongPolling transport) Poll timed out, reissuing.");
4303                            }
4304                        }
4305                        return [3 /*break*/, 6];
4306                    case 5:
4307                        e_1 = _a.sent();
4308                        if (!this.running) {
4309                            // Log but disregard errors that occur after stopping
4310                            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, "(LongPolling transport) Poll errored after shutdown: " + e_1.message);
4311                        }
4312                        else {
4313                            if (e_1 instanceof _Errors__WEBPACK_IMPORTED_MODULE_1__["TimeoutError"]) {
4314                                // Ignore timeouts and reissue the poll.
4315                                this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, "(LongPolling transport) Poll timed out, reissuing.");
4316                            }
4317                            else {
4318                                // Close the connection with the error as the result.
4319                                this.closeError = e_1;
4320                                this.running = false;
4321                            }
4322                        }
4323                        return [3 /*break*/, 6];
4324                    case 6: return [3 /*break*/, 1];
4325                    case 7: return [3 /*break*/, 9];
4326                    case 8:
4327                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, "(LongPolling transport) Polling complete.");
4328                        // We will reach here with pollAborted==false when the server returned a response causing the transport to stop.
4329                        // If pollAborted==true then client initiated the stop and the stop method will raise the close event after DELETE is sent.
4330                        if (!this.pollAborted) {
4331                            this.raiseOnClose();
4332                        }
4333                        return [7 /*endfinally*/];
4334                    case 9: return [2 /*return*/];
4335                }
4336            });
4337        });
4338    };
4339    LongPollingTransport.prototype.send = function (data) {
4340        return __awaiter(this, void 0, void 0, function () {
4341            return __generator(this, function (_a) {
4342                if (!this.running) {
4343                    return [2 /*return*/, Promise.reject(new Error("Cannot send until the transport is connected"))];
vendor: 15,463 bytes, lines 4344-4632
4344                }
4345                return [2 /*return*/, Object(_Utils__WEBPACK_IMPORTED_MODULE_4__["sendMessage"])(this.logger, "LongPolling", this.httpClient, this.url, this.accessTokenFactory, data, this.logMessageContent)];
4346            });
4347        });
4348    };
4349    LongPollingTransport.prototype.stop = function () {
4350        return __awaiter(this, void 0, void 0, function () {
4351            var deleteOptions, token;
4352            return __generator(this, function (_a) {
4353                switch (_a.label) {
4354                    case 0:
4355                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, "(LongPolling transport) Stopping polling.");
4356                        // Tell receiving loop to stop, abort any current request, and then wait for it to finish
4357                        this.running = false;
4358                        this.pollAbort.abort();
4359                        _a.label = 1;
4360                    case 1:
4361                        _a.trys.push([1, , 5, 6]);
4362                        return [4 /*yield*/, this.receiving];
4363                    case 2:
4364                        _a.sent();
4365                        // Send DELETE to clean up long polling on the server
4366                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, "(LongPolling transport) sending DELETE request to " + this.url + ".");
4367                        deleteOptions = {
4368                            headers: {},
4369                        };
4370                        return [4 /*yield*/, this.getAccessToken()];
4371                    case 3:
4372                        token = _a.sent();
4373                        this.updateHeaderToken(deleteOptions, token);
4374                        return [4 /*yield*/, this.httpClient.delete(this.url, deleteOptions)];
4375                    case 4:
4376                        _a.sent();
4377                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, "(LongPolling transport) DELETE request sent.");
4378                        return [3 /*break*/, 6];
4379                    case 5:
4380                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, "(LongPolling transport) Stop finished.");
4381                        // Raise close event here instead of in polling
4382                        // It needs to happen after the DELETE request is sent
4383                        this.raiseOnClose();
4384                        return [7 /*endfinally*/];
4385                    case 6: return [2 /*return*/];
4386                }
4387            });
4388        });
4389    };
4390    LongPollingTransport.prototype.raiseOnClose = function () {
4391        if (this.onclose) {
4392            var logMessage = "(LongPolling transport) Firing onclose event.";
4393            if (this.closeError) {
4394                logMessage += " Error: " + this.closeError;
4395            }
4396            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_2__["LogLevel"].Trace, logMessage);
4397            this.onclose(this.closeError);
4398        }
4399    };
4400    return LongPollingTransport;
4401}());
4402
4403
4404
4405/***/ }),
4406/* 22 */
4407/***/ (function(module, __webpack_exports__, __webpack_require__) {
4408
4409"use strict";
4410__webpack_require__.r(__webpack_exports__);
4411/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AbortController", function() { return AbortController; });
4412// Copyright (c) .NET Foundation. All rights reserved.
4413// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
4414// Rough polyfill of https://developer.mozilla.org/en-US/docs/Web/API/AbortController
4415// We don't actually ever use the API being polyfilled, we always use the polyfill because
4416// it's a very new API right now.
4417// Not exported from index.
4418/** @private */
4419var AbortController = /** @class */ (function () {
4420    function AbortController() {
4421        this.isAborted = false;
4422        this.onabort = null;
4423    }
4424    AbortController.prototype.abort = function () {
4425        if (!this.isAborted) {
4426            this.isAborted = true;
4427            if (this.onabort) {
4428                this.onabort();
4429            }
4430        }
4431    };
4432    Object.defineProperty(AbortController.prototype, "signal", {
4433        get: function () {
4434            return this;
4435        },
4436        enumerable: true,
4437        configurable: true
4438    });
4439    Object.defineProperty(AbortController.prototype, "aborted", {
4440        get: function () {
4441            return this.isAborted;
4442        },
4443        enumerable: true,
4444        configurable: true
4445    });
4446    return AbortController;
4447}());
4448
4449
4450
4451/***/ }),
4452/* 23 */
4453/***/ (function(module, __webpack_exports__, __webpack_require__) {
4454
4455"use strict";
4456__webpack_require__.r(__webpack_exports__);
4457/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ServerSentEventsTransport", function() { return ServerSentEventsTransport; });
4458/* harmony import */ var _ILogger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9);
4459/* harmony import */ var _ITransport__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
4460/* harmony import */ var _Utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13);
4461// Copyright (c) .NET Foundation. All rights reserved.
4462// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
4463var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
4464    return new (P || (P = Promise))(function (resolve, reject) {
4465        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
4466        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
4467        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
4468        step((generator = generator.apply(thisArg, _arguments || [])).next());
4469    });
4470};
4471var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
4472    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
4473    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
4474    function verb(n) { return function (v) { return step([n, v]); }; }
4475    function step(op) {
4476        if (f) throw new TypeError("Generator is already executing.");
4477        while (_) try {
4478            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;
4479            if (y = 0, t) op = [op[0] & 2, t.value];
4480            switch (op[0]) {
4481                case 0: case 1: t = op; break;
4482                case 4: _.label++; return { value: op[1], done: false };
4483                case 5: _.label++; y = op[1]; op = [0]; continue;
4484                case 7: op = _.ops.pop(); _.trys.pop(); continue;
4485                default:
4486                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
4487                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
4488                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
4489                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
4490                    if (t[2]) _.ops.pop();
4491                    _.trys.pop(); continue;
4492            }
4493            op = body.call(thisArg, _);
4494        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
4495        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
4496    }
4497};
4498
4499
4500
4501/** @private */
4502var ServerSentEventsTransport = /** @class */ (function () {
4503    function ServerSentEventsTransport(httpClient, accessTokenFactory, logger, logMessageContent, eventSourceConstructor) {
4504        this.httpClient = httpClient;
4505        this.accessTokenFactory = accessTokenFactory;
4506        this.logger = logger;
4507        this.logMessageContent = logMessageContent;
4508        this.eventSourceConstructor = eventSourceConstructor;
4509        this.onreceive = null;
4510        this.onclose = null;
4511    }
4512    ServerSentEventsTransport.prototype.connect = function (url, transferFormat) {
4513        return __awaiter(this, void 0, void 0, function () {
4514            var token;
4515            var _this = this;
4516            return __generator(this, function (_a) {
4517                switch (_a.label) {
4518                    case 0:
4519                        _Utils__WEBPACK_IMPORTED_MODULE_2__["Arg"].isRequired(url, "url");
4520                        _Utils__WEBPACK_IMPORTED_MODULE_2__["Arg"].isRequired(transferFormat, "transferFormat");
4521                        _Utils__WEBPACK_IMPORTED_MODULE_2__["Arg"].isIn(transferFormat, _ITransport__WEBPACK_IMPORTED_MODULE_1__["TransferFormat"], "transferFormat");
4522                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Trace, "(SSE transport) Connecting.");
4523                        // set url before accessTokenFactory because this.url is only for send and we set the auth header instead of the query string for send
4524                        this.url = url;
4525                        if (!this.accessTokenFactory) return [3 /*break*/, 2];
4526                        return [4 /*yield*/, this.accessTokenFactory()];
4527                    case 1:
4528                        token = _a.sent();
4529                        if (token) {
4530                            url += (url.indexOf("?") < 0 ? "?" : "&") + ("access_token=" + encodeURIComponent(token));
4531                        }
4532                        _a.label = 2;
4533                    case 2: return [2 /*return*/, new Promise(function (resolve, reject) {
4534                            var opened = false;
4535                            if (transferFormat !== _ITransport__WEBPACK_IMPORTED_MODULE_1__["TransferFormat"].Text) {
4536                                reject(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"));
4537                                return;
4538                            }
4539                            var eventSource;
4540                            if (_Utils__WEBPACK_IMPORTED_MODULE_2__["Platform"].isBrowser || _Utils__WEBPACK_IMPORTED_MODULE_2__["Platform"].isWebWorker) {
4541                                eventSource = new _this.eventSourceConstructor(url, { withCredentials: true });
4542                            }
4543                            else {
4544                                // Non-browser passes cookies via the dictionary
4545                                var cookies = _this.httpClient.getCookieString(url);
4546                                eventSource = new _this.eventSourceConstructor(url, { withCredentials: true, headers: { Cookie: cookies } });
4547                            }
4548                            try {
4549                                eventSource.onmessage = function (e) {
4550                                    if (_this.onreceive) {
4551                                        try {
4552                                            _this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Trace, "(SSE transport) data received. " + Object(_Utils__WEBPACK_IMPORTED_MODULE_2__["getDataDetail"])(e.data, _this.logMessageContent) + ".");
4553                                            _this.onreceive(e.data);
4554                                        }
4555                                        catch (error) {
4556                                            _this.close(error);
4557                                            return;
4558                                        }
4559                                    }
4560                                };
4561                                eventSource.onerror = function (e) {
4562                                    var error = new Error(e.data || "Error occurred");
4563                                    if (opened) {
4564                                        _this.close(error);
4565                                    }
4566                                    else {
4567                                        reject(error);
4568                                    }
4569                                };
4570                                eventSource.onopen = function () {
4571                                    _this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Information, "SSE connected to " + _this.url);
4572                                    _this.eventSource = eventSource;
4573                                    opened = true;
4574                                    resolve();
4575                                };
4576                            }
4577                            catch (e) {
4578                                reject(e);
4579                                return;
4580                            }
4581                        })];
4582                }
4583            });
4584        });
4585    };
4586    ServerSentEventsTransport.prototype.send = function (data) {
4587        return __awaiter(this, void 0, void 0, function () {
4588            return __generator(this, function (_a) {
4589                if (!this.eventSource) {
4590                    return [2 /*return*/, Promise.reject(new Error("Cannot send until the transport is connected"))];
4591                }
4592                return [2 /*return*/, Object(_Utils__WEBPACK_IMPORTED_MODULE_2__["sendMessage"])(this.logger, "SSE", this.httpClient, this.url, this.accessTokenFactory, data, this.logMessageContent)];
4593            });
4594        });
4595    };
4596    ServerSentEventsTransport.prototype.stop = function () {
4597        this.close();
4598        return Promise.resolve();
4599    };
4600    ServerSentEventsTransport.prototype.close = function (e) {
4601        if (this.eventSource) {
4602            this.eventSource.close();
4603            this.eventSource = undefined;
4604            if (this.onclose) {
4605                this.onclose(e);
4606            }
4607        }
4608    };
4609    return ServerSentEventsTransport;
4610}());
4611
4612
4613
4614/***/ }),
4615/* 24 */
4616/***/ (function(module, __webpack_exports__, __webpack_require__) {
4617
4618"use strict";
4619__webpack_require__.r(__webpack_exports__);
4620/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "WebSocketTransport", function() { return WebSocketTransport; });
4621/* harmony import */ var _ILogger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9);
4622/* harmony import */ var _ITransport__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
4623/* harmony import */ var _Utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13);
4624// Copyright (c) .NET Foundation. All rights reserved.
4625// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
4626var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
4627    return new (P || (P = Promise))(function (resolve, reject) {
4628        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
4629        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
4630        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
4631        step((generator = generator.apply(thisArg, _arguments || [])).next());
4632    });
4633};
4634var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
4635    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
4636    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
4637    function verb(n) { return function (v) { return step([n, v]); }; }
4638    function step(op) {
4639        if (f) throw new TypeError("Generator is already executing.");
4640        while (_) try {
4641            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;
4642            if (y = 0, t) op = [op[0] & 2, t.value];
4643            switch (op[0]) {
4644                case 0: case 1: t = op; break;
4645                case 4: _.label++; return { value: op[1], done: false };
4646                case 5: _.label++; y = op[1]; op = [0]; continue;
4647                case 7: op = _.ops.pop(); _.trys.pop(); continue;
4648                default:
4649                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
4650                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
4651                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
4652                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
4653                    if (t[2]) _.ops.pop();
4654                    _.trys.pop(); continue;
4655            }
4656            op = body.call(thisArg, _);
4657        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
4658        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
4659    }
4660};
4661
4662
4663
4664/** @private */
4665var WebSocketTransport = /** @class */ (function () {
4666    function WebSocketTransport(httpClient, accessTokenFactory, logger, logMessageContent, webSocketConstructor) {
4667        this.logger = logger;
4668        this.accessTokenFactory = accessTokenFactory;
4669        this.logMessageContent = logMessageContent;
4670        this.webSocketConstructor = webSocketConstructor;
4671        this.httpClient = httpClient;
4672        this.onreceive = null;
4673        this.onclose = null;
4674    }
4675    WebSocketTransport.prototype.connect = function (url, transferFormat) {
4676        return __awaiter(this, void 0, void 0, function () {
4677            var token;
4678            var _this = this;
4679            return __generator(this, function (_a) {
4680                switch (_a.label) {
4681                    case 0:
4682                        _Utils__WEBPACK_IMPORTED_MODULE_2__["Arg"].isRequired(url, "url");
4683                        _Utils__WEBPACK_IMPORTED_MODULE_2__["Arg"].isRequired(transferFormat, "transferFormat");
4684                        _Utils__WEBPACK_IMPORTED_MODULE_2__["Arg"].isIn(transferFormat, _ITransport__WEBPACK_IMPORTED_MODULE_1__["TransferFormat"], "transferFormat");
4685                        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Trace, "(WebSockets transport) Connecting.");
4686                        if (!this.accessTokenFactory) return [3 /*break*/, 2];
4687                        return [4 /*yield*/, this.accessTokenFactory()];
4688                    case 1:
4689                        token = _a.sent();
4690                        if (token) {
4691                            url += (url.indexOf("?") < 0 ? "?" : "&") + ("access_token=" + encodeURIComponent(token));
4692                        }
4693                        _a.label = 2;
4694                    case 2: return [2 /*return*/, new Promise(function (resolve, reject) {
4695                            url = url.replace(/^http/, "ws");
4696                            var webSocket;
4697                            var cookies = _this.httpClient.getCookieString(url);
4698                            var opened = false;
4699                            if (_Utils__WEBPACK_IMPORTED_MODULE_2__["Platform"].isNode && cookies) {
4700                                // Only pass cookies when in non-browser environments
4701                                webSocket = new _this.webSocketConstructor(url, undefined, {
4702                                    headers: {
4703                                        Cookie: "" + cookies,
4704                                    },
4705                                });
4706                            }
4707                            if (!webSocket) {
4708                                // Chrome is not happy with passing 'undefined' as protocol
4709                                webSocket = new _this.webSocketConstructor(url);
4710                            }
4711                            if (transferFormat === _ITransport__WEBPACK_IMPORTED_MODULE_1__["TransferFormat"].Binary) {
4712                                webSocket.binaryType = "arraybuffer";
4713                            }
4714                            // tslint:disable-next-line:variable-name
4715                            webSocket.onopen = function (_event) {
4716                                _this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Information, "WebSocket connected to " + url + ".");
4717                                _this.webSocket = webSocket;
4718                                opened = true;
4719                                resolve();
4720                            };
4721                            webSocket.onerror = function (event) {
4722                                var error = null;
4723                                // ErrorEvent is a browser only type we need to check if the type exists before using it
4724                                if (typeof ErrorEvent !== "undefined" && event instanceof ErrorEvent) {
4725                                    error = event.error;
4726                                }
4727                                else {
4728                                    error = new Error("There was an error with the transport.");
4729                                }
4730                                reject(error);
4731                            };
4732                            webSocket.onmessage = function (message) {
4733                                _this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Trace, "(WebSockets transport) data received. " + Object(_Utils__WEBPACK_IMPORTED_MODULE_2__["getDataDetail"])(message.data, _this.logMessageContent) + ".");
4734                                if (_this.onreceive) {
4735                                    _this.onreceive(message.data);
4736                                }
4737                            };
4738                            webSocket.onclose = function (event) {
4739                                // Don't call close handler if connection was never established
4740                                // We'll reject the connect call instead
4741                                if (opened) {
4742                                    _this.close(event);
4743                                }
4744                                else {
4745                                    var error = null;
4746                                    // ErrorEvent is a browser only type we need to check if the type exists before using it
4747                                    if (typeof ErrorEvent !== "undefined" && event instanceof ErrorEvent) {
4748                                        error = event.error;
4749                                    }
4750                                    else {
4751                                        error = new Error("There was an error with the transport.");
4752                                    }
4753                                    reject(error);
4754                                }
4755                            };
4756                        })];
4757                }
4758            });
4759        });
4760    };
4761    WebSocketTransport.prototype.send = function (data) {
4762        if (this.webSocket && this.webSocket.readyState === this.webSocketConstructor.OPEN) {
4763            this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Trace, "(WebSockets transport) sending data. " + Object(_Utils__WEBPACK_IMPORTED_MODULE_2__["getDataDetail"])(data, this.logMessageContent) + ".");
4764            this.webSocket.send(data);
4765            return Promise.resolve();
4766        }
4767        return Promise.reject("WebSocket is not in the OPEN state");
4768    };
4769    WebSocketTransport.prototype.stop = function () {
4770        if (this.webSocket) {
4771            // Clear websocket handlers because we are considering the socket closed 
vendor: 7,166 bytes, lines 4771-4922
4771now
4772            this.webSocket.onclose = function () { };
4773            this.webSocket.onmessage = function () { };
4774            this.webSocket.onerror = function () { };
4775            this.webSocket.close();
4776            this.webSocket = undefined;
4777            // Manually invoke onclose callback inline so we know the HttpConnection was closed properly before returning
4778            // This also solves an issue where websocket.onclose could take 18+ seconds to trigger during network disconnects
4779            this.close(undefined);
4780        }
4781        return Promise.resolve();
4782    };
4783    WebSocketTransport.prototype.close = function (event) {
4784        // webSocket will be null if the transport did not start successfully
4785        this.logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_0__["LogLevel"].Trace, "(WebSockets transport) socket closed.");
4786        if (this.onclose) {
4787            if (event && (event.wasClean === false || event.code !== 1000)) {
4788                this.onclose(new Error("WebSocket closed with status code: " + event.code + " (" + event.reason + ")."));
4789            }
4790            else {
4791                this.onclose();
4792            }
4793        }
4794    };
4795    return WebSocketTransport;
4796}());
4797
4798
4799
4800/***/ }),
4801/* 25 */
4802/***/ (function(module, __webpack_exports__, __webpack_require__) {
4803
4804"use strict";
4805__webpack_require__.r(__webpack_exports__);
4806/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "JsonHubProtocol", function() { return JsonHubProtocol; });
4807/* harmony import */ var _IHubProtocol__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
4808/* harmony import */ var _ILogger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
4809/* harmony import */ var _ITransport__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20);
4810/* harmony import */ var _Loggers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(14);
4811/* harmony import */ var _TextMessageFormat__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(12);
4812// Copyright (c) .NET Foundation. All rights reserved.
4813// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
4814
4815
4816
4817
4818
4819var JSON_HUB_PROTOCOL_NAME = "json";
4820/** Implements the JSON Hub Protocol. */
4821var JsonHubProtocol = /** @class */ (function () {
4822    function JsonHubProtocol() {
4823        /** @inheritDoc */
4824        this.name = JSON_HUB_PROTOCOL_NAME;
4825        /** @inheritDoc */
4826        this.version = 1;
4827        /** @inheritDoc */
4828        this.transferFormat = _ITransport__WEBPACK_IMPORTED_MODULE_2__["TransferFormat"].Text;
4829    }
4830    /** Creates an array of {@link @microsoft/signalr.HubMessage} objects from the specified serialized representation.
4831     *
4832     * @param {string} input A string containing the serialized representation.
4833     * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.
4834     */
4835    JsonHubProtocol.prototype.parseMessages = function (input, logger) {
4836        // The interface does allow "ArrayBuffer" to be passed in, but this implementation does not. So let's throw a useful error.
4837        if (typeof input !== "string") {
4838            throw new Error("Invalid input for JSON hub protocol. Expected a string.");
4839        }
4840        if (!input) {
4841            return [];
4842        }
4843        if (logger === null) {
4844            logger = _Loggers__WEBPACK_IMPORTED_MODULE_3__["NullLogger"].instance;
4845        }
4846        // Parse the messages
4847        var messages = _TextMessageFormat__WEBPACK_IMPORTED_MODULE_4__["TextMessageFormat"].parse(input);
4848        var hubMessages = [];
4849        for (var _i = 0, messages_1 = messages; _i < messages_1.length; _i++) {
4850            var message = messages_1[_i];
4851            var parsedMessage = JSON.parse(message);
4852            if (typeof parsedMessage.type !== "number") {
4853                throw new Error("Invalid payload.");
4854            }
4855            switch (parsedMessage.type) {
4856                case _IHubProtocol__WEBPACK_IMPORTED_MODULE_0__["MessageType"].Invocation:
4857                    this.isInvocationMessage(parsedMessage);
4858                    break;
4859                case _IHubProtocol__WEBPACK_IMPORTED_MODULE_0__["MessageType"].StreamItem:
4860                    this.isStreamItemMessage(parsedMessage);
4861                    break;
4862                case _IHubProtocol__WEBPACK_IMPORTED_MODULE_0__["MessageType"].Completion:
4863                    this.isCompletionMessage(parsedMessage);
4864                    break;
4865                case _IHubProtocol__WEBPACK_IMPORTED_MODULE_0__["MessageType"].Ping:
4866                    // Single value, no need to validate
4867                    break;
4868                case _IHubProtocol__WEBPACK_IMPORTED_MODULE_0__["MessageType"].Close:
4869                    // All optional values, no need to validate
4870                    break;
4871                default:
4872                    // Future protocol changes can add message types, old clients can ignore them
4873                    logger.log(_ILogger__WEBPACK_IMPORTED_MODULE_1__["LogLevel"].Information, "Unknown message type '" + parsedMessage.type + "' ignored.");
4874                    continue;
4875            }
4876            hubMessages.push(parsedMessage);
4877        }
4878        return hubMessages;
4879    };
4880    /** Writes the specified {@link @microsoft/signalr.HubMessage} to a string and returns it.
4881     *
4882     * @param {HubMessage} message The message to write.
4883     * @returns {string} A string containing the serialized representation of the message.
4884     */
4885    JsonHubProtocol.prototype.writeMessage = function (message) {
4886        return _TextMessageFormat__WEBPACK_IMPORTED_MODULE_4__["TextMessageFormat"].write(JSON.stringify(message));
4887    };
4888    JsonHubProtocol.prototype.isInvocationMessage = function (message) {
4889        this.assertNotEmptyString(message.target, "Invalid payload for Invocation message.");
4890        if (message.invocationId !== undefined) {
4891            this.assertNotEmptyString(message.invocationId, "Invalid payload for Invocation message.");
4892        }
4893    };
4894    JsonHubProtocol.prototype.isStreamItemMessage = function (message) {
4895        this.assertNotEmptyString(message.invocationId, "Invalid payload for StreamItem message.");
4896        if (message.item === undefined) {
4897            throw new Error("Invalid payload for StreamItem message.");
4898        }
4899    };
4900    JsonHubProtocol.prototype.isCompletionMessage = function (message) {
4901        if (message.result && message.error) {
4902            throw new Error("Invalid payload for Completion message.");
4903        }
4904        if (!message.result && message.error) {
4905            this.assertNotEmptyString(message.error, "Invalid payload for Completion message.");
4906        }
4907        this.assertNotEmptyString(message.invocationId, "Invalid payload for Completion message.");
4908    };
4909    JsonHubProtocol.prototype.assertNotEmptyString = function (value, errorMessage) {
4910        if (typeof value !== "string" || value === "") {
4911            throw new Error(errorMessage);
4912        }
4913    };
4914    return JsonHubProtocol;
4915}());
4916
4917
4918
4919/***/ })
4920/******/ ]);
4921});
4922//# sourceMappingURL=signalr.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.